CloudWatch のスケジュールされたトリガーから AWS Batch ジョブにパラメータを渡す方法を教えてください。

最終更新日: 2020 年 5 月 15 日

Amazon CloudWatch のスケジュールされたトリガーから 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)。

Amazon CloudWatch Events ルールを作成する

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

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

3.    [今すぐ始める] を選択します。

4.    [イベントソース] セクションで、必要に応じて [イベントパターン] または [スケジュール] を選択します。

5.    [ターゲット] では、[ターゲットの追加] を選択します。

6.    ターゲットのリストから、[Batch ジョブのキュー] を選択します。

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

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

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

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

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

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

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

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

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

12.    [詳細の設定] を選択し、セットアップウィザードの残りのステップを実行してルールを作成します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合