スケジュールされたタスク - Amazon Elastic Container Service

スケジュールされたタスク

Amazon ECS は、スケジュールされたタスクの作成をサポートします。スケジュールされたタスクは、Amazon EventBridge ルールを使用して、スケジュールに基づいて、または EventBridge イベントへの応答として、タスクを実行します。

バックアップオペレーションやログスキャンなど、設定された間隔でタスクを実行する場合は、指定した時刻に 1 つ以上のタスクを実行するスケジュールされたタスクを作成できます。規則的な間隔 (N 分、時間、または日ごとに実行)を指定したり、より複雑なスケジューリングのために、cron 式を使用したりできます。詳細については、Amazon EventBridge ユーザーガイドCron 式とレート式を参照してください。

イベントによってトリガーされるタスクを実行する場合は、サービスの AWS マネージドイベント (Amazon ECS タスクおよびコンテナインスタンスの状態変更イベントなど) が存在するか、カスタムイベントパターンを作成できます。詳細については、Amazon EventBridge ユーザーガイドイベントパターンを参照してください。

EventBridge ドキュメントには、Amazon S3 バケットにアップロードされるファイルに基づいてスケジュールされたタスクを作成するためのチュートリアルが含まれています。詳細については、Amazon EventBridge ユーザーガイドチュートリアル: ファイルが Amazon S3 バケットにアップロードされたときに Amazon ECS タスクを実行するを参照してください。

スケジュールされたタスクを作成する

スケジュールされたタスクは、EventBridge コンソールを使用して作成できる Amazon EventBridge ルールによってトリガーされます。Amazon ECS コンソールでスケジュールされたタスクを作成できますが、現在、EventBridge コンソールにはさらに多くの機能があるため、次の手順に従うことで、スケジュールされたタスクをトリガーする EventBridge ルールを作成できます。

スケジュールされたタスクを作成する (EventBridge コンソール)

  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションペインで、RulesCreate rule の順に選択します。

  3. ルールの名前と説明を入力します。

    注記

    ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

  4. スケジュールに基づいて実行されるスケジュールされたタスクの場合は、次の操作を実行します。イベントに基づいて実行されるスケジュールされたタスクを作成するには、次のステップに進みます。

    1. Define pattern (パターンの定義)で、Schedule (スケジュール) を選択します。

    2. 一定の速度を選択してタスクを実行する頻度を指定するか、Cron 式 を選択してタスクをいつトリガーするか定義する cron 式を指定します。

    3. Select event bus (イベントバスを選択)で、AWS default event bus を選択します。スケジュールされたルールは、デフォルトのイベントバスでのみ作成できます。

  5. イベントに基づいて実行されるスケジュールされたタスクの場合は、次の手順を実行します。スケジュールに基づいてルールを作成した場合は、次のステップに進みます。

    1. Define pattern (パターンの定義) で、Event pattern (イベントパターン)を選択します。

    2. Pre-defined pattern by service (サービスによる定義済みパターン)を選択します。

    3. Service provider (サービスプロバイダー)で、AWSを選択します。

    4. Service name (サービス名)で、イベントを発行するサービスの名前を選択します。

    5. Event type (イベントタイプ)で、All Events (すべてのイベント)を選択するか、このルールに使用するイベントのタイプを選択します。All Events (すべてのイベント)を選択した場合、この AWS サービスによって出力されるすべてのイベントがルールに一致します。

      イベントパターンをカスタマイズするには、Edit (編集) を選択して変更を加え、Save (保存)を選択します。

    6. Select event bus (イベントバスの選択)で、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、AWS デフォルトのイベントバスを選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  6. Select targets(ターゲットを選択)で、ECS task(ECS タスク) 選択します。

  7. Cluster(クラスター)で、Amazon ECS クラスターを選択します。

  8. Task definition(タスク定義)で、タスク定義ファミリーを選択します。

  9. Task definition revision(タスク定義リビジョン)で、Latest(最新)または Revision(リビジョン)を選択し、使用する特定のタスク定義リビジョンを選択します。

  10. Count(カウント)で、実行するタスクの数を指定します。

  11. Compute options(計算オプション)セクションを展開して、スケジュールされたタスクのデフォルトの計算オプションを変更できます。

    1. スケジュールされたタスクで、Capacity provider strategy(キャパシティープロバイダー戦略)とLaunch type(起動タイプ) のどちらを使用するかを選択します。

    2. キャパシティープロバイダー戦略を使用するには、Use cluster default(クラスターのデフォルトを使用)を選択して、クラスターのデフォルトのキャパシティープロバイダー戦略を使用します。クラスターにデフォルトのキャパシティープロバイダー戦略がない場合、またはカスタム戦略を使用する場合は、Use custom(カスタムを使用)、Add capacity provider strategy(キャパシティプロバイダー戦略の追加)を選択し、Capacity provider (キャパシティープロバイダー)、Base(ベース)、Weight(ウェイト)を指定してカスタムキャパシティープロバイダー戦略を定義します。キャパシティープロバイダーを戦略で使用するには、クラスターに関連付ける必要があります。キャパシティープロバイダー戦略の詳細については、「Amazon ECS キャパシティープロバイダー」を参照してください。

    3. 代わりに起動タイプを使用するには、Launch type (起動タイプ) を指定し、使用する起動タイプを選択します。

    4. (オプション) Fargate 起動タイプが指定されている場合、Platform version(プラットフォームのバージョン)で、使用するプラットフォームのバージョンを指定します。プラットフォームのバージョンが指定されない場合、LATESTプラットフォームのバージョンが使用されます。

  12. (オプション)Configure network configuration(ネットワーク構成を設定)を展開し、ネットワーク構成を指定します。これは、Fargate でホストされているタスクとawsvpcネットワークモードを使用するタスクのために必要です。

    1. Subnets(サブネット)で、1 つ以上のサブネット ID を指定します。

    2. Security groups(セキュリティグループ)で、1 つ以上のセキュリティグループ ID を指定します。

    3. Auto-assign public IP(自動割り当てパブリック IP)で、サブネットからタスクにパブリック IP アドレスを割り当てるかどうかを指定します。

  13. (オプション)Configure additional properties(追加プロパティを設定)を展開して、タスクに次の追加パラメータを指定します。

    1. Task group(タスクグループ)で、タスクグループ名を指定します。タスクグループ名は、関連するタスクのセットを識別するために使用され、同じタスクグループ内のタスクがクラスター内のコンテナインスタンス間で均等に分散されるように spread タスク配置戦略と組み合わせて使用されます。

    2. Placement constraint(配置制約)で、Add placement constraint(配置制約を追加)を選択します。配置制約のType(タイプ)を選択し、式を入力します。詳細については、「Amazon ECS タスク配置の制約事項」を参照してください。

      注記

      タスク配置制約は Fargate でホストされるタスクではサポートされていません。。

    3. Placement strategy(配置戦略)で、Add placement strategy(配置戦略を追加)を選択します。配置戦略のType(タイプ)を選択し、式を入力します。追加する配置戦略ごとに、このプロセスを繰り返します。詳細については、「Amazon ECS タスク配置戦略」を参照してください。

      注記

      タスク配置戦略は、Fargate でホストされているタスクではサポートされていません。

    4. Tags(タグ) で、Add tag(タグを追加)を選択して、タスクにキーバリューペアのタグを関連付けます。

    5. Configure managed tags](マネージドタグを設定)で、Enable managed tags(マネージドタグを有効化)を選択して、Amazon ECS がコストと使用状況レポートでコスト配分を確認するときに使用できるタグを追加するようにします。詳細については、「請求用のリソースにタグを付ける」を参照してください。

    6. Configure execute command(実行コマンドを設定)で、Enable execute command(実行コマンドを有効化)を選択して、タスクのために ECS Exec 機能を有効にします。詳細については、「デバッグ用にAmazon ECS Exec を使用」を参照してください。

    7. Configure propagate tags(伝達タグを設定)で、Propagate tags from task definition(タスク定義からタグを伝達)を選択して、Amazon ECS がタスク定義に関連付けられているタグをタスクに追加するようにします。詳細については、「リソースのタグ付け」を参照してください。

      注記

      Tags(タグ) セクションで同じキーを持つタグを指定すると、タスク定義から伝達されたタグが上書きされます。

  14. 多くのターゲットタイプでは、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、EventBridge は、イベントの実行に必要な IAM ロールを作成できます。

    • 自動的に IAM ロールを作成するには、特定のリソースに対して新しいロールを作成するを選択します。

    • 以前に作成した IAM ロールを使用するには、Use existing role(既存のルールの使用)を選択します。

  15. Retry policy and dead-letter queue:(ポリシーとデッドレターキューを再試行:)のRetry policy(再試行ポリシー)で次の操作を実行します。

    1. Maximum age of event(イベントの最大有効期間)で、1 分(00:01)から 24 時間(24:00)の間の値を入力します。

    2. Retry attempts(再試行)で、0~185 の数値を入力します。

  16. Dead-letter queue(デッドレターキュー)で、標準 Amazon SQS キューをデッドレターキューとして使用するかどうかを選択します。EventBridge は、ターゲットに正常に配信されなかった場合に、このルールに一致するイベントをデッドレターキューに送信します。次のいずれかを行ってください。

    • デッドレターキューを使用しない場合は、None(なし)を選択します。

    • Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue(デッドレターキューとして使用する現在の アカウントの Amazon SQS キューを選択) を選択し、ドロップダウンリストから使用するキューを選択します。

    • Select an Amazon SQS queue in an other AWS account as a dead-letter queue(他の アカウントの Amazon SQS キューをデッドレターキューとして選択) を選択し、使用するキューの ARN を入力します。キューにメッセージを送信するための EventBridge 許可を付与するリソースベースのポリシーをそのキューにアタッチする必要があります。詳細については、Amazon EventBridge ユーザーガイドGranting permissions to the dead-letter queue(デッドレターキューへの許可の付与)を参照してください。

スケジュールされたタスクを表示する

スケジュールされたタスクは、Amazon ECS コンソールで表示できます。スケジュールされたタスクをトリガーする Amazon EventBridge ルールを、EventBridge コンソールで表示することもできます。

スケジュールされたタスクを表示するには(Amazon ECS コンソール)

  1. Amazon ECS コンソール https://console.aws.amazon.com/ecs/を開きます。

  2. スケジュールされたタスクを実行するクラスターを選択します。

  3. Cluster:cluster-name(クラスター: cluster-name) ページで、Scheduled Tasks(スケジュールされたタスク)タブを選択します。

  4. スケジュールされたすべてのタスクが一覧表示されます。

スケジュールされたタスクを編集する

スケジュールされたタスクは、Amazon ECS コンソールで編集できます。スケジュールされたタスクをトリガーする Amazon EventBridge ルールを EventBridge コンソールで編集することもできます。

スケジュールされたタスクを編集するには (Amazon ECS コンソール)

  1. Amazon ECS コンソール https://console.aws.amazon.com/ecs/を開きます。

  2. スケジュールされたタスクを編集するクラスターを選択します。

  3. Cluster: cluster-nameページで、Scheduled Tasksを選択します

  4. 編集するスケジュールルールの左側にあるボックスを選択してから、Editを選択します。

  5. 更新するフィールドを編集し、Updateを選択します。