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

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

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

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

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

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

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

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

    注記

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

EventBridge ルールとターゲットを使用してAWS Batchジョブを送信するには、ユーザーに代わって EventBridge AWS Batchジョブを実行するアクセス権限がサービスに必要です。 EventBridge AWS Batchジョブをターゲットとして指定するルールをコンソールで作成すると、このロールを作成する機会が提供されます。このロールに必要なサービスプリンシパルと IAM アクセス権限の詳細については、「EventBridge IAM ロール」を参照してください。

AWS Batchスケジュールされたジョブの作成

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

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

この手順は、Amazon ECS、Amazon EKS、AWSおよびFargateAWS Batch すべてのジョブで有効です。

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

  2. 次の値を使用して、 EventBridge AWS Batchジョブをスケジュールするルールを作成します。

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

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

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

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

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

    • [ターゲットの選択] で [Batch job queue] (バッチジョブのキュー) を選択し、以下のフィールドに適切な内容を入力します。

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

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

      • [Job name] (ジョブ名): ジョブの名前を入力します。

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

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

    • [Batch job queue] (バッチジョブのキュー) ターゲットタイプで、 EventBridge ターゲットにイベントを送信するためのアクセス許可が必要です。 EventBridge ルールの実行に必要な IAM ロールを作成できます。以下のいずれかを行ってください。

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

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

      詳細については、「EventBridge IAM ロール」を参照してください。

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

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

EventBridge インプットインプットトランスフォーマーを使用する、AWS Batchジョブ送信でにイベント情報を渡します。これは、AWS他のイベント情報の結果としてジョブをトリガーする場合は、特に重要です。1 つの例としては、Amazon S3 バケットへのオブジェクトのアップロードがあります。コンテナのコマンドで、パラメータの置換値を使用したジョブ定義を使用できます。 EventBridge 入力トランスフォーマーは、イベントデータに基づいてパラメータ値を提供できます。たとえば、次のジョブ定義では、[S3bucket] および [S3key] というパラメータ値を参照します。

注記

以下の例は Amazon ECSAWS Batch のジョブに関するものです。

{ "jobDefinitionName": "echo-parameters", "containerProperties": { "image": "busybox", "resourceRequirements": [ { "type": "MEMORY", "value": "2000" }, { "type": "VCPU", "value": "2" } ], "command": [ "echo", "Ref::S3bucket", "Ref::S3key" ] } }

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

注記

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

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

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

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

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

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

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

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

  7. [Next] (次へ) を選択します。

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

  9. イベントパターンについては、アプリケーションのニーズに合わせてルールを作成します。

  10. [次へ] を選択します。

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

  12. [Select a target] (バッチジョブのキュー) で [Batch job queue] (バッチジョブのキュー) を選択し、このルールによってトリガーされるジョブのジョブキュー、ジョブ定義、およびジョブ名を指定します。

  13. ジョブに使用する既存の EventBridge IAM ロールを選択するか、[Create a new role for this resource] (この特定のリソースに対して新しいロールを作成する) を選択して新しいロールを作成します。詳細については、「EventBridge IAM ロール」を参照してください。

  14. [Additional settings] (追加設定) セクションの [Configure target input] (ターゲット入力の設定) で [Input transformer] (入力トランスフォーマー) を選択します。

  15. [Configure input transformer] (入力トランスフォーマーの設定) を選択します。

  16. [Target input transformer] (ターゲット入力トランスフォーマーの [Input path] (入力パス) で、トリガーするイベントから解析する値を指定します。たとえば、Amazon S3 イベントからのバケットおよびキー名を解析するには、次の JSON を使用します。

    { "S3BucketValue":"$.detail.bucket.name", "S3KeyValue":"$.detail.object.key" }
  17. Template では、ParametersAWS Batchジョブに渡す構造を作成します。これらのパラメータは、ジョブの実行時にジョブコンテナのコマンドの [Ref::S3bucket] および [Ref::S3key] プレースホルダーに置き換えられます。

    { "Parameters" : { "S3bucket": <S3BucketValue>, "S3key": <S3KeyValue> } }

    また、ContainerOverrides構造を更新して、更新コマンドや環境変数などの設定に渡すことができます。

    { "Parameters" : { "S3bucket": <S3BucketValue> }, "ContainerOverrides" : { "Command": [ "echo", "Ref::S3bucket" ] } }
    注記

    ContainerOverrides構造体のメンバー名は大文字にする必要があります。たとえば、Command and を使用しResourceRequirementscommand or は使用しませんresourceRequirements

  18. [Confirm] (確認) を選択します。

  19. [次へ] を選択します。

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

  21. [次へ] を選択します。

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