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 コンソールを使用します。詳細については、「VPC のサブネット」と「Amazon VPC ユーザーガイド」の「セキュリティグループを使用して AWS リソースへのトラフィックを制御する」を参照してください。

  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」を参照してください。