AWS Batch を EventBridge ルールのターゲットとして使用する方法を教えてください。

最終更新日: 2022 年 1 月 19 日

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 コンソールのバケット名が表示されます。