Amazon EventBridge スケジューラを使用してスケジュールに基づいて Amazon ECS タスクを実行する - Amazon Elastic Container Service

Amazon EventBridge スケジューラを使用してスケジュールに基づいて Amazon ECS タスクを実行する

EventBridge スケジューラーはサーバーレススケジューラであり、一元化されたマネージドサービスからタスクを作成、実行、管理できます。イベントバスやルールに依存しない、1 回限りの定期的なスケジューリング機能を提供します。EventBridge スケジューラは高度にカスタマイズ可能で、EventBridge のスケジュールルールよりもスケーラビリティが高く、ターゲット API 操作と AWS サービスの範囲が広がります。EventBridge スケジューラには、EventBridge スケジューラコンソールでタスクに設定できる以下のスケジュールが用意されています。

  • レートベース

  • cron ベース

    cron ベースのスケジュールはどのタイムゾーンでも設定できます。

  • 1 回限りのスケジュール

    1 回限りのスケジュールはどのタイムゾーンでも設定できます。

Amazon ECS は Amazon EventBridge スケジューラを使用してスケジュールできます。

Amazon ECS コンソールでスケジュールされたタスクを作成できますが、現在、EventBridge Scheduler コンソールではさらに多くの機能を提供しています。

タスクをスケジュールする前に、次のステップを完了します。

  1. タスクが実行されるサブネット ID とサブネットのセキュリティグループ ID を取得するには、VPC コンソールを使用します。詳細については、「Amazon VPC ユーザーガイド」の「サブネットを表示する」および「セキュリティグループの表示」を参照してください。

  2. EventBridge スケジューラの実行ロールを設定します。詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「実行ロールを設定する」を参照してください。

コンソールを使用して新しいスケジュールを作成するには
  1. Amazon EventBridge スケジューラコンソール (https://console.aws.amazon.com/scheduler/home) を開きます。

  2. [スケジュール] ページで、[スケジュールを作成] を選択します。

  3. [スケジュールの詳細を指定] ページの [スケジュールの名前と説明] セクションで、次を実行します。

    1. [スケジュール名] で、スケジュールの名前を入力します。例えば、MyTestSchedule と指定します。

    2. (オプション) [説明] で、スケジュールの説明を入力します。例えば、TestSchedule と指定します。

    3. [スケジュールグループ] で、ドロップダウンリストからスケジュールグループを選択します。グループがない場合は、[デフォルト] を選択します。スケジュールグループを作成するには、[独自のスケジュールを作成] を選択します。

      スケジュールグループを使用して、スケジュールのグループにタグを追加します。

  4. スケジュールオプションを選択します。

    頻度 手順

    [1 回限りのスケジュール]

    1 回限りのスケジュールは、指定した日時に 1 回だけターゲットを呼び出します。

    [日付と時刻] で、次を実行します。

    • 有効な日付を YYYY/MM/DD 形式で入力します。

    • タイムスタンプを 24 時間 (hh:mm) 形式で入力します。

    • [タイムゾーン] で、タイムゾーンを選択します。

    [繰り返しのスケジュール]

    繰り返しのスケジュールは、cron 式またはレート式を使用して指定したレートでターゲットを呼び出します。

    1. [スケジュールの種類] では、次のいずれかを実行します。

      • Cron 式を使用してスケジュールを定義するには、[cron ベースのスケジュール] を選択して Cron 式を入力します。

      • Rate 式を使用してスケジュールを定義するには、[rate ベースのスケジュール] を選択して Rate 式を入力します。

        cron およびレート式の詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「EventBridge スケジューラのスケジュールタイプ」を参照してください。

    2. [フレックスタイムウィンドウ] で、[オフ] を選択してオプションをオフにするか、事前定義された時間枠のいずれかを選択します。例えば、[15 分] を選択し、1 時間に 1 回ターゲットを呼び出す繰り返しのスケジュールを設定した場合、スケジュールは毎時の開始後 15 分以内に実行されます。

  5. (オプション) 前のステップで [定期的なスケジュール] を選択した場合は、[時間枠] セクションで次を実行します。

    1. [タイムゾーン] で、タイムゾーンを選択します。

    2. [開始日時] で、有効な日付を YYYY/MM/DD 形式で入力してから、タイムスタンプを 24 時間 (hh:mm) 形式で指定します。

    3. [終了日時] で、有効な日付を YYYY/MM/DD 形式で入力してから、タイムスタンプを 24 時間 (hh:mm) 形式で指定します。

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

  7. [ターゲットを選択] ページで、次の操作を行います。

    1. [すべての API] を選択し、検索ボックスで ECS と入力します。

    2. [Amazon ECS] を選択します。

    3. 検索ボックスで RunTask と入力し、[RunTask] を選択します。

    4. [ECS クラスター] で、クラスターを選択します。

    5. [ECS タスク] で、タスクに使用するタスク定義を選択します。

    6. 起動タイプを使用するには、[コンピューティングオプション] を展開し、[起動タイプ] を選択します。その後、起動タイプを選択します。

      Fargate 起動タイプが指定される場合、[プラットフォームバージョン] で、使用するプラットフォームバージョンを入力します。プラットフォームが指定されていない場合は、LATEST プラットフォームバージョンが使用されます。

    7. [サブネット] で、タスクを実行するサブネット ID を入力します。

    8. [セキュリティグループ] で、サブネットのセキュリティグループ ID を入力します。

    9. (オプション) デフォルト以外のタスク配置戦略を使用するには、[配置制約] を展開し、制約を入力します。

      詳細については、「Amazon ECS がタスクをコンテナインスタンスに配置する方法」を参照してください。

    10. (オプション) タスクを識別しやすくするために、[タグ] でタグを設定します。

      新しく起動されたすべてのタスクに対して、Amazon ECS がタスク定義タグを自動的にタグ付けするようにするには、[Amazon ECS マネージドタグを有効にする] を選択します。

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

  9. [Settings] (設定) ページで、以下の操作を行います。

    1. スケジュールをオンにするには、[スケジュールの状態][スケジュールを有効にする] をオンに切り替えます。

    2. スケジュールの再試行ポリシーを設定するには、[再試行ポリシーとデッドレターキュー (DLQ)] で次を実行します。

      • [再試行] を切り替えてオンにします。

      • [イベントの最大保持時間] で、EventBridge スケジューラが未処理のイベントを保持しなければならない最大の [時間][分] を入力します。

      • 最大 24 時間です。

      • [最大再試行回数] で、ターゲットがエラーを返した場合に EventBridge スケジューラがスケジュールを再試行する最大回数を入力します。

        再試行の最大値は 185 です。

      再試行ポリシーを使用すると、スケジュールがそのターゲットの呼び出しに失敗した場合、EventBridge スケジューラはスケジュールを再実行します。設定されている場合は、スケジュールの最大保持時間と再試行を設定する必要があります。

    3. EventBridge スケジューラが未配信のイベントを保存する場所を選択します。

      [デッドレターキュー (DLQ)] オプション 手順
      保存しない [None] を選択します。
      スケジュールを作成しようとしている同じ AWS アカウント にイベントを保存する
      1. [自分の AWS アカウント の Amazon SQS キューを DLQ として選択] を選択します。

      2. Amazon SQS キューの Amazon リソースネーム (ARN) を選択します。

      スケジュールを作成しようとしているのとは別の AWS アカウント にイベントを保存する
      1. [他の AWS アカウント の Amazon SQS キューを DLQ として指定] を選択します。

      2. Amazon SQS キューの Amazon リソースネーム (ARN) を入力します。

    4. カスタマーマネージドキーを使用してターゲットの入力を暗号化するには、[暗号化][暗号化設定をカスタマイズする (高度)] を選択します。

      このオプションを選択した場合は、既存の KMS キー ARN を入力するか、[AWS KMS key を作成] を選択して AWS KMS コンソールに移動します。EventBridge スケジューラが保管中のデータを暗号化する方法の詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「保管中の暗号化」を参照してください。

    5. [許可] で、[既存のロールを使用] を選択してから、ロールを選択します。

      EventBridge スケジューラに新しい実行ロールを作成させるには、[このスケジュールの新しいロールを作成] を選択します。その後、[ロール名] で名前を入力します。このオプションを選択すると、EventBridge スケジューラは、テンプレート化されたターゲットに必要な許可をロールにアタッチします。

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

  11. [スケジュールの確認と作成] ページで、スケジュールの詳細を確認します。各セクションで、そのステップに戻って詳細を編集するには、[編集] を選択します。

  12. [スケジュールを作成] を選択します。

    [スケジュール] ページで、新規および既存のスケジュールのリストを表示できます。[ステータス] 列で、新しいスケジュールが [有効] になっていることを確認します。

次のステップ

EventBridge スケジューラコンソールまたは AWS CLI を使用し、スケジュールを管理できます。詳細については、「Amazon EventBridge スケジューラユーザーガイド」の「Managing a schedule」を参照してください。