EventBridge ターゲットとしての AWS Batch ジョブ - AWS Batch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EventBridge ターゲットとしての AWS Batch ジョブ

Amazon EventBridge は、Amazon Web Services リソースの変更を示すシステムイベントのほぼリアルタイムのストリームを提供します。通常、Amazon Elastic Container Service、Amazon Elastic Kubernetes Service、および AWS Fargate ジョブにおける AWS Batch は EventBridge のターゲットとして利用できます。簡単なルールを使用して、ルールに一致したイベントに応じて AWS Batch ジョブを送信できます。詳細については、Amazon EventBridge ユーザーガイドのEventBridge とはを参照してください。

EventBridge を使用して、cron や rate 式により特定の時間に自己トリガーする自動アクションをスケジュールすることもできます。詳細については、Amazon EventBridge ユーザーガイドのスケジュールに従って実行する Amazon EventBridge ルールの作成を参照してください。

イベントがイベントパターンに一致したときに実行されるルールを作成する方法については、Amazon EventBridge ユーザーガイドのイベントに反応する Amazon EventBridge ルールの作成を参照してください。

EventBridge ターゲットとなる AWS Batch ジョブの一般的な使用例としては、以下のようなユースケースがあります。

  • スケジュールされたジョブは、一定の時間間隔で発生します。例えば、cron ジョブは、Amazon EC2 スポットインスタンスのコストが低い時間帯にのみ発生します。

  • AWS Batch ジョブは CloudTrail にログインした API オペレーションに応答して実行されます。例えば、指定したAmazon S3 バケットにオブジェクトがアップロードされるたびにジョブが送信されます。そのたびに、EventBridge インプットトランスフォーマーはバケットとオブジェクトのキー名を AWS Batch パラメータに渡します。

    注記

    このシナリオでは、関連する AWS リソースはすべて同じリージョン内に存在する必要があります。これには、Amazon S3 バケット、EventBridge ルール、CloudTrail ログなどのリソースが含まれます。

EventBridge ルールおよびターゲットを使用して AWS Batch ジョブを送信するには、AWS Batch ジョブを実行するアクセス権限が EventBridge サービスに必要です。EventBridge コンソールからAWS Batch ジョブをターゲットとして指定するルールを作成すると、このロールを作成することもできます。このロールに必要なサービスプリンシパルと IAM アクセス権限の詳細については、EventBridge IAM ロールを参照してください。

スケジュールされたAWS Batchジョブを作成する

次の手順では、スケジュールされた AWS Batch ジョブと必要な EventBridge IAM ロールを作成する方法について説明します。

EventBridge でスケジュールされた AWS Batch ジョブを作成するには
注記

この手順は、Amazon ECS、Amazon EKS、および AWS Fargate ジョブにおけるすべての AWS Batch で機能します。

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

  2. ナビゲーションバーから、使用する AWS リージョン を選択します。

  3. ナビゲーションペインで ルール] を選択します。

  4. ルールの作成 を選択します。

  5. 名前 で、コンピューティング環境の一意な名前を指定します。名前は最大 64 文字まで入力できます。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    注記

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

  6. (オプション) 説明 に、ルールの説明を入力します。

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

  8. (オプション) すぐに実行しないバスのルールについては、そのルールをオフにします。

  9. ルールタイプ では、スケジュール] を選択します。

  10. 続行してルールを作成する または 次へ を選択します。

  11. スケジュールパターン] では、次のいずれかを実行します。

    • 毎月第一月曜日の午前 8:00 (太平洋標準日) など、厳密なスケジュールを選択してから、cron 式を入力します。詳細については、Amazon EventBridge ユーザーガイドのCron 式を参照してください。

    • 一定の間隔 (10 分ごとなど) で実行するスケジュールを選択してから、rate 式を入力します。

  12. 次へ をクリックします。

  13. ターゲットタイプ] には、AWS のサービス を選択します。

  14. ターゲットの選択 で、バッチジョブのキュー を選択します。次を設定します。

    • ジョブキュー]: ジョブをスケジュールするジョブキューの Amazon リソースネーム (ARN) を入力します。

    • ジョブ定義]: ジョブに使用するジョブ定義の名前、改正、または完全な ARN を入力します。

    • ジョブ名]: ジョブの名前を入力します。

    • 配列サイズ]: (オプション) 複数のコピーを実行するためのジョブの配列サイズを入力します。詳細については、配列ジョブを参照してください。

    • ジョブの試行]: (オプション) ジョブが失敗したときに再試行する回数を入力します。詳細については、ジョブの再試行の自動化を参照してください。

  15. バッチジョブキュー] ターゲットタイプで、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。EventBridge は、ルールの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。

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

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

  16. (オプション)追加設定 を展開します。

    1. ターゲット入力の設定 で、イベントからのテキストをターゲットに渡す前にどのように処理するかを選択します。

    2. イベントの最大保存期間 では、未処理のイベントを保存する時間間隔を指定します。

    3. 再試行 では、イベントを再試行する回数を入力します。

    4. デッドレターキュー では、未処理イベントの取扱いに関するオプションを選択します。必要に応じて、デッドレターキューに Amazon SQS キューを指定します。

  17. (オプション) 別のターゲットを追加] を選択して、このルールに別のターゲットを追加します。

  18. 次へ を選択します。

  19. (オプション) タグ新しいタグを追加 を選択し、ルールのリソースラベルを追加します。詳細については、Amazon EventBridge のタグを参照してください。

  20. 次へ を選択します。

  21. レビューと作成では、設定手順を確認してください。変更する必要がある場合は、編集] を選択します。完了したら、ルールの作成 を選択します。

ルールの作成の詳細については、Amazon EventBridge ユーザーガイドのスケジュールに従って実行する Amazon EventBridge ルールの作成を参照してください。

イベントパターンを持つルールの作成

以下の手順では、イベントパターンを使用してルールを作成する方法について説明します。

定義されたパターンにイベントが一致したときに、イベントをターゲットに送信するルールを作成します。
注記

この手順は、Amazon ECS、Amazon EKS、および AWS Fargate ジョブにおけるすべての AWS Batch で機能します。

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

  2. ナビゲーションバーから、使用する AWS リージョン を選択します。

  3. ナビゲーションペインで ルール] を選択します。

  4. ルールの作成を選択します。

  5. 名前 で、コンピューティング環境の一意な名前を指定します。名前は最大 64 文字まで入力できます。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    注記

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

  6. (オプション) 説明に、ルールの説明を入力します。

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

  8. (オプション) すぐに実行しないバスのルールについては、そのルールをオフにします。

  9. ルールタイプ では、イベントパターンを持つルール] を選択します。

  10. 次へ を選択します。

  11. イベントソース で、AWS イベントまたは EventBridge パートナーイベント を選択します。

  12. (オプション) サンプルイベント では:

    1. サンプルイベントタイプ では、AWS イベント を選択します。

    2. サンプルイベントでは、 バッチジョブの状態変更 を選択します。

  13. 作成方法 では、パターンフォームの使用 を選択します。

  14. イベントパターン では:

    1. イベントソース では、AWS のサービス を選択します。

    2. AWS のサービス では、バッチ を選択します。

    3. イベントタイプ では、バッチジョブの状態変更 を選択します。

  15. 次へ を選択します。

  16. ターゲットタイプ] には、AWS のサービス を選択します。

  17. ターゲットタイプを選択 で、ターゲットタイプを選択します。たとえば、バッチジョブのキュー を選択します。以下を指定します。

    • ジョブキュー]: ジョブをスケジュールするジョブキューの Amazon リソースネーム (ARN) を入力します。

    • ジョブ定義]: ジョブに使用するジョブ定義の名前、改正、または完全な ARN を入力します。

    • ジョブ名]: ジョブの名前を入力します。

    • 配列サイズ]: (オプション) 複数のコピーを実行するためのジョブの配列サイズを入力します。詳細については、配列ジョブを参照してください。

    • ジョブの試行]: (オプション) ジョブが失敗したときに再試行する回数を入力します。詳細については、ジョブの再試行の自動化を参照してください。

  18. バッチジョブキュー] ターゲットタイプで、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。EventBridge は、ルールの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。

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

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

  19. (オプション)追加設定 を展開します。

    1. ターゲット入力の設定 で、イベントからのテキストの処理方法を選択します。

    2. イベントの最大保存期間 では、未処理のイベントを保存する時間間隔を指定します。

    3. 再試行 では、イベントを再試行する回数を入力します。

    4. デッドレターキュー では、未処理イベントの取扱いに関するオプションを選択します。必要に応じて、デッドレターキューに Amazon SQS キューを指定します。

  20. (オプション) 別のターゲットを追加 を選択して、別のターゲットを追加します。

  21. 次へ を選択します。

  22. (オプション) タグ新しいタグを追加 を選択し、リソースラベルを追加します。詳細については、Amazon EventBridge ユーザーガイドのAmazon EventBridge のタグを参照してください。

  23. 次へ を選択します。

  24. レビューと作成では、設定手順を確認してください。変更する必要がある場合は、編集] を選択します。完了したら、ルールの作成 を選択します。

    ルールの作成に関する詳細については、Amazon EventBridge ユーザーガイドのイベントに反応する Amazon EventBridge ルールの作成を参照してください。

EventBridge インプットトランスフォーマーを使用してイベント情報を AWS Batch ターゲットに渡す

EventBridge インプットトランスフォーマーを使用して、ジョブ送信で AWS Batch にイベント情報を渡すことができます。これは、他の AWS イベント情報の結果としてジョブを呼び出す場合は、特に重要です。例えば、Amazon S3 バケットへのオブジェクトのアップロード時など。または、コンテナのコマンドで、パラメータの置換値を使用したジョブ定義を使用できます。EventBridge インプットトランスフォーマーは、イベントデータに基づいてパラメータ値を提供できます。

つまり、開始するイベントからの情報を解析し、parameters オブジェクトに変換する AWS Batch イベントターゲットを作成できます。ジョブが実行されると、トリガーイベントからのパラメータがジョブコンテナのコマンドに渡されます。

注記

このシナリオでは、すべての AWS リソース (Amazon S3 バケット、EventBridge ルール、CloudTrail ログなど) が同じリージョンに存在する必要があります。

インプットトランスフォーマーを使用して AWS Batch ターゲットを作成するには
  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションバーから、使用する AWS リージョン を選択します。

  3. ナビゲーションペインで ルール] を選択します。

  4. ルールの作成 を選択します。

  5. 名前 で、コンピューティング環境の一意な名前を指定します。名前は最大 64 文字まで入力できます。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    注記

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

  6. (オプション) 説明 に、ルールの説明を入力します。

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

  8. (オプション) すぐに実行しないバスのルールについては、そのルールをオフにします。

  9. ルールタイプ では、スケジュール] を選択します。

  10. 続行してルールを作成する または 次へ を選択します。

  11. スケジュールパターン] では、次のいずれかを実行します。

    • 毎月第一月曜日の午前 8:00 (太平洋標準日) など、厳密なスケジュールを選択してから、cron 式を入力します。詳細については、Amazon EventBridge ユーザーガイドのCron 式を参照してください。

    • 一定の間隔 (10 分ごとなど) で実行するスケジュールを選択してから、rate 式を入力します。

  12. 次へ を選択します。

  13. ターゲットタイプ] には、AWS のサービス を選択します。

  14. ターゲットの選択 で、バッチジョブのキュー を選択します。次を設定します。

    • ジョブキュー]: ジョブをスケジュールするジョブキューの Amazon リソースネーム (ARN) を入力します。

    • ジョブ定義]: ジョブに使用するジョブ定義の名前、改正、または完全な ARN を入力します。

    • ジョブ名]: ジョブの名前を入力します。

    • 配列サイズ]: (オプション) 複数のコピーを実行するためのジョブの配列サイズを入力します。詳細については、配列ジョブを参照してください。

    • ジョブの試行]: (オプション) ジョブが失敗したときに再試行する回数を入力します。詳細については、ジョブの再試行の自動化を参照してください。

  15. バッチジョブキュー] ターゲットタイプで、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。EventBridge は、ルールの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。

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

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

  16. (オプション)追加設定 を展開します。

  17. 追加設定 セクションの ターゲット入力の設定]入力トランスフォーマー] を選択します。

  18. 入力トランスフォーマーの設定 を選択します。

  19. (オプション) サンプルイベント では:

    1. サンプルイベントタイプ では、AWSイベント を選択します。

    2. サンプルイベントでは、 バッチジョブの状態変更 を選択します。

  20. ターゲット入力トランスフォーマー入力パス で、トリガーするイベントから解析する値を指定します。例えば、バッチジョブの状態変更 イベントを解析するには、次の JSON 形式を使用します。

    { "instance": "$.detail.jobId", "state": "$.detail.status" }
  21. テンプレート] では、以下を入力します。

    { "instance": <jobId> , "status": <status> }
  22. 確認] を選択します。

  23. イベントの最大保存期間 では、未処理のイベントを保存する時間間隔を指定します。

  24. 再試行 では、イベントを再試行する回数を入力します。

  25. デッドレターキュー では、未処理イベントの取扱いに関するオプションを選択します。必要に応じて、デッドレターキューに Amazon SQS キューを指定します。

  26. (オプション) 別のターゲットを追加 を選択して、別のターゲットを追加します。

  27. 次へ を選択します。

  28. (オプション) タグ新しいタグを追加 を選択し、リソースラベルを追加します。詳細については、Amazon EventBridge ユーザーガイドのAmazon EventBridge のタグを参照してください。

  29. 次へ を選択します。

  30. レビューと作成では、設定手順を確認してください。変更する必要がある場合は、編集] を選択します。完了したら、ルールの作成 を選択します。