AWS Batch を、Amazon EventBridge ルールのターゲットとして使用したいと思っています。
解決方法
次の例は、新しい Amazon Simple Storage Service (Amazon S3) バケットが作成されたときに AWS Batch ジョブを送信するように Amazon EventBridge を設定する方法を示しています。
ジョブ定義を作成する
1. AWS Batch コンソールを開きます。
2. ナビゲーションバーから、AWS リージョンを選択します。
3. ナビゲーションペインで [ジョブ定義] をクリックし、[作成] を選択します。
4. [ジョブ定義名] には、ジョブ定義の一意名を入力します。
注意 : 一意の名前には、最大 128 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。
5. [コンテナイメージ] には「amazonlinux」と入力します。
6. [コマンド] には以下を入力します。
echo Ref::S3bucket
7. [vCPUs] には「2」と入力します。
8. [メモリ (MiB)] には「500」と入力します。
9. [次へ] を選択し、次に、[作成] をクリックします。
ジョブキューとジョブ定義の ARN を取得する
1. AWS Batch コンソールを開きます。
2. ナビゲーションペインで [Job queues★] をクリックします。
3. ご使用になるジョブキューを選択します。
4. [ジョブキューの詳細] セクションから キュー ARN をコピーし、後で使用するために保存しておきます。
5. ナビゲーションペインで、[ジョブ定義] を選択し、以前に作成したジョブ定義を選択します。
6. [ジョブ定義の詳細] セクションから ジョブ定義 ARN をコピーし、後で使用するために保存しておきます。
S3 バケット内のオブジェクトに対する CloudTrail データイベントのログ記録を有効にする
Simple Storage Service (Amazon S3) オブジェクトレベルのオペレーション (たとえば、新しいオブジェクトが既存のバケットにアップロードされた場合など) で AWS Batch ジョブをトリガーするには、「S3 バケットおよびオブジェクトの CloudTrail イベントのログ記録の有効化」を参照してください。
EventBridge ルールを作成する
1. [EventBridge コンソール] を開きます。
2. [Create rule] (ルールを作成) を選択します。
3. ルールの [名前] を入力します。必要に応じて [Description] (説明) を入力できます。
4. [Define pattern] (パターン定義) で、[Event pattern] (イベントパターン) を選択します。
5. [Pre-defined pattern by service] (サービスごとの事前定義パターン) を選択します。
6. [Service provider] (サービスプロバイダー) で、[AWS] を選択します。
7. [サービス名] で 、[Simple Storage Service (S3)] を選択します。
8. [イベントタイプ] で、[CloudTrail 経由のバケットレベル API コール] を選択します。
9. [任意の操作] をクリックします。
10. [ターゲットの選択] セクションで、[ターゲット] ドロップダウンリストから [バッチジョブキュー] を選択します。
11. [ジョブキュー] に、前の手順で保存しておいたジョブキュー ARN を貼り付けます。
12. [ジョブ定義] に、前の手順で保存しておいたジョブ定義 ARN を貼り付けます。
13. [ジョブ名] に、AWS Batch ジョブの名前を入力します。
14. [入力の設定] セクションで、[インプットトランスフォーマー] を選択します。
15. 最初の入力ボックスに、イベントトリガー時に送信される次の S3 バケット値を入力します。
{"S3BucketNameValue":"$.detail.requestParameters.bucketName"}
注意: S3BucketNameValue を独自の値に置き換えます。
16. 2 番目の入力ボックスに、バッチジョブに渡されるパラメータストラクチャーを入力します。
{"Parameters" : {"S3bucket": S3BucketNameValue}}
注意: S3BucketNameValue を独自の値に置き換えます。S3bucket を、AWS Batch ジョブで定義するパラメータの名前に置き換えます。
17. [この特定のリソースに対して新しいロールを作成する] または [既存のロールの使用] をクリックします。
注意: 既存のロールを選択した場合、そのロールには、batch:SubmitJob アクションを許可する AWS Identity and Access Management (IAM) ポリシーが必要です。
18. [Create] (作成) を選択します。
作成した新しいルールをテストする
1. Amazon S3 コンソールを開きます。
2. [バケットを作成する] をクリックします。
3. [バケット名] フィールドに、新しいバケットの一意の DNS 準拠名を入力します。
4. [リージョン] で、EventBridge ルールを作成したのと同じリージョンを選択します。
5. [Create] (作成) をクリックします。
ログを確認します
1. AWS Batch コンソールを開きます。
2. ナビゲーション ペインで [Jobs★] を選択します。
3. [Status★] が SUCCEEDED となっているジョブを選択します。
4. [ジョブの詳細] ページの [試行] セクションで、[ログの表示] をクリックします。ログには、CloudWatch コンソールのバケット名が表示されます。
関連情報
チュートリアル: EventBridge がイベントターゲットに渡すものを Input Transformer を使用してカスタマイズする