翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 すべてのジョブで有効です。
https://console.aws.amazon.com/events/
で Amazon EventBridge コンソールを開きます。 -
次の値を使用して、 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 ターゲットを作成するには
https://console.aws.amazon.com/events/
で Amazon EventBridge コンソールを開きます。 -
ナビゲーションペインで [Rules] (ルール) を選択します。
-
[Create rule] (ルールの作成) を選択します。
-
ルールの名前と説明を入力します。
ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[Event bus] (イベントバス) では、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、AWS のデフォルトのイベントバスを選択します。AWS のサービスアカウントのがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。
-
[Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。
-
[Next] (次へ) を選択します。
-
[Event source] (イベントソース) で、[AWSevents] (イベント) を選択します。
-
イベントパターンについては、アプリケーションのニーズに合わせてルールを作成します。
-
[次へ] を選択します。
-
[Target types] (ターゲットタイプ) には、[AWS のサービス] を選択します。
-
[Select a target] (バッチジョブのキュー) で [Batch job queue] (バッチジョブのキュー) を選択し、このルールによってトリガーされるジョブのジョブキュー、ジョブ定義、およびジョブ名を指定します。
-
ジョブに使用する既存の EventBridge IAM ロールを選択するか、[Create a new role for this resource] (この特定のリソースに対して新しいロールを作成する) を選択して新しいロールを作成します。詳細については、「EventBridge IAM ロール」を参照してください。
-
[Additional settings] (追加設定) セクションの [Configure target input] (ターゲット入力の設定) で [Input transformer] (入力トランスフォーマー) を選択します。
-
[Configure input transformer] (入力トランスフォーマーの設定) を選択します。
-
[Target input transformer] (ターゲット入力トランスフォーマーの [Input path] (入力パス) で、トリガーするイベントから解析する値を指定します。たとえば、Amazon S3 イベントからのバケットおよびキー名を解析するには、次の JSON を使用します。
{ "
S3BucketValue
":"$.detail.bucket.name", "S3KeyValue
":"$.detail.object.key" } -
Template では、
Parameters
AWS Batchジョブに渡す構造を作成します。これらのパラメータは、ジョブの実行時にジョブコンテナのコマンドの[Ref::S3bucket]
および[Ref::S3key]
プレースホルダーに置き換えられます。{ "Parameters" : { "S3bucket":
<S3BucketValue>
, "S3key":<S3KeyValue>
} }また、ContainerOverrides構造を更新して、更新コマンドや環境変数などの設定に渡すことができます。
{ "Parameters" : { "S3bucket":
<S3BucketValue>
}, "ContainerOverrides" : { "Command": [ "echo", "Ref::S3bucket
" ] } }注記 ContainerOverrides構造体のメンバー名は大文字にする必要があります。たとえば、
Command
and を使用しResourceRequirements
、command
or は使用しませんresourceRequirements
。 -
[Confirm] (確認) を選択します。
-
[次へ] を選択します。
-
(オプション) ルールに 1 つ以上のタグを入力します。詳細については、Amazon EventBridge ユーザーガイドの「Amazon EventBridge タグ」を参照してください。
-
[次へ] を選択します。
-
ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。