AWS BatchCloudWatch イベントターゲットとしてのジョブ - AWS Batch

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

AWS BatchCloudWatch イベントターゲットとしてのジョブ

Amazon CloudWatch Events では、Amazon Web Services リソースの変更を記述した、システムイベントのほぼリアルタイムのストリームを配信します。AWS Batchジョブは CloudWatch Events ターゲットとして使用できます。簡単なルールを使用して、一致したイベントとAWS Batchそれらに応答してジョブ。詳細については、「」を参照してください。Amazon CloudWatch Events とはAmazon CloudWatch Events ユーザーガイド

CloudWatch Events を使用して、CloudWatch Events を使用して特定の時間に呼び出される自動アクションをスケジュールすることもできます。cronまたは rate 式。詳細については、「」を参照してください。ルールの式をスケジュールするAmazon CloudWatch Events ユーザーガイド

の一般的なユースケースAWS Batchジョブを CloudWatch イベントターゲットとして実行するには、次のユースケースが含まれます。

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

  • AnAWS Batchジョブは、CloudTrail に記録されている API オペレーションに応答して実行されます。たとえば、指定された Amazon S3 バケットにオブジェクトがアップロードされたときにジョブが送信され、CloudWatch Events インプットトランスフォーマーによって、オブジェクトのバケットとキー名をAWS Batchパラメーターを毎回使用します。

    注記

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

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

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

次の手順では、スケジュールされたAWS Batchジョブと、必要な CloudWatch イベント IAM ロールが必要です。

スケジュールされたを作成するにはAWS BatchCloudWatch イベントを使用したジョブの実行

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

  2. 左のナビゲーションペインで、[イベント]、[ルールの作成] の順に選択します。

  3. [イベントソース] で、[スケジュール] を選択します。次に、固定間隔スケジュールを使用するか cron 式を使用するかを選択します。詳細については、「」を参照してください。ルールのスケジュール式Amazon CloudWatch Events ユーザーガイド

    • [一定の速度] に、スケジュールの間隔と単位を入力します。

    • [Cron expression] に、タスクスケジュールの cron 式を入力します。これらの式には 6 つの必須フィールドがあります。フィールドは空白で区切ります。詳細な説明と例についてはcronエクスプレッションの詳細については、cron 式Amazon CloudWatch Events ユーザーガイド

  4. [Targets] で、[Add target] を選択します。

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

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

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

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

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

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

  6. ジョブに使用する既存の CloudWatch Events IAM ロールを選択するか、この特定のリソースに対して新しいロールを作成する新しい設定を作成します。詳細については、「CloudWatch Events IAM ロール」を参照してください。

  7. [ルールの定義] で、以下のフィールドに適切に入力し、[ルールの作成] を選択します。

    • 名前: ルールの名前を入力します。

    • 説明: (オプション)ルールの説明を入力します。

    • State: ルールを有効にするかどうかを選択し、次の間隔でスケジューリングを開始するか、後日まで有効にするかを指定します。

へのイベント情報の受け渡しAWS BatchCloudWatch イベント入力トランスフォーマーを使用したターゲット

CloudWatch Events のインプットトランスフォーマーを使用して、イベント情報をAWS Batchジョブ送信で。これは、他のの結果としてジョブを呼び出すと、特に重要です。AWSAmazon S3 バケットへのオブジェクトのアップロードなど、イベント情報 (Amazon S3 バケットへのオブジェクトのアップロードなど)。コンテナのコマンドで、パラメータの置換値を使用したジョブ定義を使用できます。CloudWatch Events インプットトランスフォーマーによって、イベントデータに基づいてパラメータ値を指定できます。たとえば、次のジョブ定義では、「」というパラメータ値を参照します。bucketおよびS3 キー

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

次に、単純にAWS Batchイベントターゲットは、それを開始するイベントからの情報を解析し、それをparametersオブジェクト。ジョブが実行されると、トリガーイベントからのパラメータがジョブコンテナのコマンドに渡されます。

注記

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

インプットトランスフォーマーを使用して AWS Batch ターゲットを作成するには

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

  2. 左のナビゲーションペインで、[イベント]、[ルールの作成] の順に選択します。

  3. [イベントソース] で、[イベントパターン] を選択してから、アプリケーションのニーズに合わせてルールを作成します。

  4. を使用する場合ターゲット] で、Batch ジョブキュー次に、このルールによって呼び出されるジョブジョブキュー、ジョブ定義、およびジョブ名を指定します。

  5. 選択入力の設定[] を選択してから、[インプットトランスフォーマー

  6. インプットトランスフォーマーの上部のテキストボックスで、トリガーされるイベントから解析する値を指定します。たとえば、Amazon S3 イベントからのバケットおよびキー名を解析するには、次の JSON を使用します。

    {"S3BucketValue":"$.detail.requestParameters.bucketName","S3KeyValue":"$.detail.requestParameters.key"}
  7. インプットトランスフォーマーの下部のテキストボックスに、AWS Batch ジョブに渡す Parameters 構造を作成します。これらのパラメーターは、Ref። S3bucketおよびRef። S3keyプレースホルダを、ジョブ実行時にジョブコンテナのコマンドに置き換えます。

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

    また、更新することもできますコンテナのオーバーライド構造体を使用して、更新コマンド、環境変数、およびその他の設定に渡します。

    {"Parameters" : {"S3bucket": <S3BucketValue>}, "ContainerOverrides" : {"Command": ["echo","Ref::S3bucket"]}}
  8. ジョブに使用する既存の CloudWatch Events IAM ロールを選択するか、この特定のリソースに対して新しいロールを作成する新しい設定を作成します。詳細については、「CloudWatch Events IAM ロール」を参照してください。

  9. [設定の詳細] を選択し、[ルールの定義] で以下のフィールドに適切に入力してから、[ルールの作成] を選択します。

    • 名前: ルールの名前を入力します。

    • 説明: (オプション)ルールの説明を入力します。

    • State: ルールを今すぐ有効にするか、後日まで有効にするかを選択します。