CloudWatch Events ルールのターゲットとして、AWS Batch を使用するにはどうすればよいですか?

最終更新日: 2019 年 12 月 9 日

AWS Batch を、Amazon CloudWatch Events ルール のターゲットとして使用したいと思っています。

解決方法

次の例は、新しい Amazon Simple Storage Service(Amazon S3) バケットが作成されたときに AWS Batch ジョブを送信するように Amazon CloudWatch を設定する方法を示しています。

ジョブ定義を作成する

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.    [Overview★] セクションから キュー ARN をコピーし、後で使用するために保存しておきます。

5.    ナビゲーションペインで、[ジョブ定義] を選択し、以前に作成したジョブ定義を選択します。

6.    [Job definitions attributes★] セクションから ジョブ定義 ARN をコピーし、後で使用するために保存しておきます。

CloudWatch Events ルールの作成

1.    CloudWatch コンソールを開きます。

2.    ナビゲーションペインで [Rules★] をクリックします。

3.    [ルールの作成] をクリックします。

4.    [Event Source★] セクションで、[Event Pattern★] をクリックします。

5.    [Service Name★] の中から 、[Simple Storage Service (S3)] を選択します。

6.    [イベントタイプ] で「Bucket Level Operations」を選択します。

注意: Amazon S3 オブジェクトレベルのオペレーション (たとえば、新しいオブジェクトが既存のバケットにアップロードされたとき) で AWS Batch ジョブをトリガーするには、AWS CloudTrail データイベントで S3 バケットのオブジェクトレベルのログ記録を有効にする方法を参照してください。

7.    [Any operation★] をクリックします。

8.    [ターゲット] セクションで、[ターゲットの追加] をクリックします。

9.    メインメニューから [バッチジョブキュー] を選択します。

10.    [ジョブキュー] に、前の手順で保存しておいたジョブキュー ARN を貼り付けます。

11.    [ジョブ定義] に、前の手順で保存しておいたジョブ定義 ARN を貼り付けます。

12.    [ジョブ名] に、AWS Batch ジョブの名前を入力します。

13.    [入力の設定] セクションで、[インプットトランスフォーマー] を選択します。

14.    最初の入力ボックスに、イベントトリガー時に送信される次の S3 バケット値を入力します。

{"S3BucketNameValue":"$.detail.requestParameters.bucketName"}

注意: S3BucketNameValue を独自の値に置き換えます。

15.    2 番目の入力ボックスに、バッチジョブに渡されるパラメータストラクチャーを入力します。

{"Parameters" : {"S3bucket": S3BucketNameValue}}

注意: S3BucketNameValue を独自の値に置き換えます。S3bucket を、AWS Batch ジョブで定義するパラメータの名前に置き換えます。

16.    [この特定のリソースに対して新しいロールを作成する] または [既存のロールの使用] をクリックします。

注意: 既存のロールを選択した場合、そのロールには、batch:SubmitJob アクションを許可する AWS Identity and Access Management (IAM) ポリシーが必要です。

17.    [詳細設定] を選択します。

18.    [名前] に、ルールの名前を入力します。

19.    [状態] の中で、[有効] チェックボックスを選択します。

20.    [ルールの作成] をクリックします。

作成した新しいルールをテストする

1.    Amazon S3 コンソールを開きます。

2.    [バケットを作成する] をクリックします。

3.    [バケット名] フィールドに、新しいバケットの一意の DNS 準拠名を入力します。

4.    [リージョン] で、CloudWatch Events ルールを作成したのと同じリージョンを選択します。

5.    [作成] を選択します。

ログを確認します

1.    AWS Batch コンソールを開きます。

2.    ナビゲーション ペインで [Jobs★] を選択します。

3.    [Status★] が SUCCEEDED となっているジョブを選択します。

4.    [ジョブの詳細] ページの [試行] セクションで、[ログの表示] をクリックします。ログには、CloudWatch コンソールのバケット名が表示されます。