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

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

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

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

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

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

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

スケジュールされたタスクを EventBridge のルールとターゲットで送信するには、ユーザーの代わりに Amazon ECS タスクを実行するためのいくつかのアクセス許可が EventBridge サービスに必要です。このロールに必要なサービスプリンシパルと IAM アクセス権限の詳細については、「Amazon ECS CloudWatch Events IAM ロール」を参照してください。

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

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

  2. ナビゲーションペインで [Rules] (ルール) を選択します。

  3. [‬Create rule]‭ (ルールの作成) を選択します。

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

    注記

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

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

  6. タスクのスケジュール方法を選択します。

    ... に基づきルールを作成するには 手順

    イベント

    1. [Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。

    2. [Next] を選択します。

    3. [Event source] (イベントソース) で、[AWSevents] (イベント) を選択します。

    4. [Event pattern] (イベントパターン) では、次のいずれかを実行します。

      • テンプレートを使用してイベントパターンを作成するには、[Event pattern form] (イベントパターンのフォーム)、[Event source] (イベントソース)、[AWS service] (AWS サービス)、[Event type] (イベントタイプ) を選択します。イベントタイプとして [All Events] (すべてのイベント) を選択した場合、AWS サービスによって出力されるすべてのイベントがルールに一致します。

        テンプレートをカスタマイズするには、[Custom pattern (JSON editor)] (カスタムパターン (JSON エディタ)) を選択して変更します。

      • カスタムイベントパターンを使用するには、[Custom pattern (JSON editor)] (カスタムパターン (JSON エディタ)) を選択し、イベントパターンを作成します。

    スケジュール
    1. [Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。

    2. [Next] を選択します。

    3. [Schedule pattern] (スケジュールパターン) では、次のいずれかを実行します。

      • Cron 式を使用してスケジュールを定義するには、午前 8 時など、特定の時間に実行されるきめ細かいスケジュールを選択します。毎月最初の月曜日の PST に、cron 式を入力します。

      • rate 式を使用してスケジュールを定義するには、10 分ごとなど、通常レートで実行されるスケジュールを選択し、rate 式を入力します。

  7. [Next] を選択します。

  8. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  9. [Select a target] (ターゲットの選択) では、[ECS task] (ECS タスク) を選択します。

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

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

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

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

  14. スケジュールされたタスクをクラスターのインフラストラクチャ全体に分散する方法を選択します。

    ディストリビューションの方法 ステップ

    キャパシティープロバイダー戦略

    1. [Compute options] (コンピューティングオプション) セクションで、[Capacity provider strategy] (キャパシティープロバイダー戦略) を選択します。

    2. 戦略を選択:

      • デフォルトのキャパシティープロバイダー戦略を使用するには、[Use cluster default] (デフォルトのクラスターを使用) を選択します。

      • クラスターにデフォルトのキャパシティープロバイダー戦略がない場合、またはカスタム戦略を使用する場合は、[Use custom] (カスタムを使用)、[Add capacity provider strategy] (キャパシティプロバイダー戦略の追加)を選択し、[Base] (ベース)、[Capacity provider] (キャパシティープロバイダー)、[Weight] (ウェイト) を指定して、カスタムキャパシティープロバイダー戦略を定義します。

    注記

    戦略でキャパシティープロバイダーを使用するには、キャパシティープロバイダーをクラスターに関連付ける必要があります。キャパシティープロバイダー戦略の詳細については、「Amazon ECS キャパシティープロバイダー」を参照してください。

    起動タイプ
    1. [Compute options] (コンピューティングオプション) セクションで、[Launch type] (起動タイプ) を選択します。

    2. [Launch type] (起動タイプ) で、起動タイプを選択します。

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

  15. タスクが Fargate でホストされているか、awsvpc ネットワークモードを使用している場合、[Configure network configuration] (ネットワーク構成の設定) を開き、ネットワーク構成を指定します。

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

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

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

  16. (オプション) タスクに追加のパラメータを指定するには、[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] (管理タグを有効化) を選択します。詳細については、「請求用のリソースにタグを付ける」を参照してください。

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

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

      注記

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

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

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

    • 以前に作成した IAM ロールを使用するには、[Use existing role] (既存のロールの使用) を選択し、ドロップダウンから既存のロールを選択します。

  18. (オプション) [Additional settings] (追加設定) では、以下を実行します。

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

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

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

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

      • [Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue] (デッドレターキューとして使用する現在の AWS アカウントの 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(デッドレターキューへの許可の付与)を参照してください。

  19. [Next] を選択します。

  20. (オプション) ルールに 1 つ以上のタグを入力します。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge のタグ」を参照してください。

  21. [Next] を選択します。

  22. ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。

スケジュールされたタスクをクラシックコンソールで表示

スケジュールされたタスクは、クラシック 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を選択します。