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 ルールを作成する
重要: EventBridge ルールでは、JSON テキストにキャメルケースを使用する必要があります。
1. EventBridge コンソールを開きます。
2. [Create rule] (ルールを作成) を選択します。
3. ルールの [Name] (名前) を入力します。必要に応じて [Description] (説明) を入力できます。
4. [Define pattern] (パターンの定義) で、ユースケースに基づいて [Event pattern] (イベントパターン) または [Schedule] (スケジュール) を選択します。
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
12. [Create] (作成) を選択します。
関連情報
イベントに反応する Amazon EventBridge ルールの作成
スケジュールに従って実行する Amazon EventBridge ルールの作成