EventBridge のスケジュール済みトリガーから AWS Batch ジョブにパラメータを渡すにはどうすればよいですか?

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

Amazon EventBridge のスケジュールされたトリガーから AWS Batch ジョブにパラメータを渡したいと考えています。

簡単な説明

AWS Batch では、パラメータは、AWS Batch ジョブ定義のコマンドセクションで定義する変数のプレースホルダーです。これらのプレースホルダーを使用すると、次のことができます。

  • 同じ形式を使用する複数のジョブに同じジョブ定義を使用します。
  • 送信時にコマンドの値をプログラムで変更します。

パラメータをキーと値のペアとして定義することをお勧めします。例:

"Parameters" : {"test" : "abc"}

ジョブ定義を登録するか、ジョブを送信する場合は、ジョブのコンテナプロパティのコマンドフィールドでパラメータ置換プレースホルダーを使用します。例:

"Command" : [ "echo” "Ref::test" ]

上記のジョブを送信すると、コンテナのコマンドRef::test 引数がデフォルト値 (abc) に置き換えられます。

ジョブを送信するときに、同じパラメータキーに対して別のパラメータ値を定義できます。例:

"Parameters" : {"test" : "hello"}

上記のジョブを送信すると、コンテナのコマンドRef::test 引数が、ジョブの送信時に定義したカスタム値 (hello) に置き換えられます。

解決方法

AWS Batch 環境をセットアップする

1.    コンピューティング環境を作成します

2.    ジョブキューを作成して、ジョブキューをステップ 1 で作成したコンピューティング環境に関連付けます。

3.    画像を使用してジョブ定義を作成します (例: nginx)。

EventBridge ルールを作成する

1.    [EventBridge コンソール] を開きます。

2.    [Create rule] (ルールを作成) を選択します。

3.    ルールの [Name] (名前) を入力します。必要に応じて [Description] (説明) を入力できます。

4.    [パターンの定義] で、ユースケースに基づいて [イベントパターン] または [スケジュール] を選択します。

5.    [イベントバスの選択] で、[AWS デフォルトイベントバス] のデフォルトオプションを選択します。

6.    [ターゲットの選択] で、[ターゲット] ドロップダウンリストから [バッチジョブキュー] を選択します。

7.    [ジョブキュー] には、前に作成したジョブキューの ARN を入力します。

8.    [ジョブ定義] には、以前に作成したジョブ定義の名前を入力します。

9.    [ジョブ名] には、ジョブの名前を入力します。

10.    [入力の設定] セクションを展開し、[定数 (JSON テキスト)] を選択します。

11.    表示されるテキストボックスに、次のように入力します。

{"Parameters": {"name":"test"}, "ContainerOverrides": { "Command": ["echo","Ref::name"] } }

EventBridge がルールを呼び出すと、ルールは AWS Batch ジョブを送信します。ジョブが成功した場合、CloudWatch Logs は次の場所で「テスト」を印刷します。

Log Group: /aws/batch/job
Log Stream: yourJobDefinitionName/default/your-ecs-task-ID

重要: EventBridge ルールでは、JSON テキストにキャメルケースを使用する必要があります。

12.    [Create] (作成) を選択します。