LoginSignup
1
2

More than 3 years have passed since last update.

CloudWatchEventsのインプットでBatchのジョブ定義をオーバライドする

Posted at

CloudWathEventsru-ルール で AWS Batchでバッチ処理を実行する構成では、CloudWatchEventのルール設定の「input」パラメータで、入力パラメータを設定できます。
さらに、入力パラメータ以外に、ジョブ定義のvcpuや環境変数などのパラメータのオーバーライドも可能ですのでその方法を紹介したいと思います。

TL:DR;

  • CloudWatchEventルールのターゲットInputContainerOverridesを追加する
    • ex)パラメータEnvの定義および、ジョブ定義のVcpuを4,メモリを2048に上書きする場合のInput
      • {"Parameters" : {"Env":"Prod" },"ContainerOverrides": { "Vcpus":4, "Memory":2048}}

利用用途

  • 一つのジョブ定義を使いまわしたいが、条件によっては環境変数やvcpuなどの一部のパラメータを変更したい場合
    • 一部の環境変数の変更やvcpuの変更程度あればジョブ定義を複数用意せずに済む

設定方法

コンソール

  • CloudWatchEventルール > ターゲット > 入力の設定 > 定数(JSONテキスト)
    • ここにContainerOverridesを記述する
    • 画像ではvcpuを4、memoryを2048に上書きする例 ルールのinput項目.png

aws-cli

  • コマンド
    • aws events put-targets --rule [ルール名] --cli-input-json file://target.json
  • target.json
target.json
{
  "Targets": [
    {
      "Id": "1",
      "Arn": "jobQueueArn",
      "RoleArn": "roleArn",
      "Input": "{\"Parameters\" : {\"Env\":\"Prod\" },\"ContainerOverrides\": { \"Vcpus\":4, \"Memory\":2048}}",
      "BatchParameters": {
        "JobDefinition": "jobDefinitionArn",
        "JobName": "jobName"
      }
    }
  ]
}

設定できるプロパティ

以下のJSONのプロパティであればすべてオーバーライドしてBatchを実行することができると思います

  • Command
    • ジョブ実行時のコマンド
  • Environment
    • 環境変数
  • InstanceType
    • マルチノード並列ジョブに使用するインスタンスタイプ
  • Memory
    • ジョブに使用するメモリ
  • Vcpus
    • ジョブに使用するvcpu数
  • ResourceRequirements
    • GPUの利用設定

{
  "ContainerOverrides": {
    "Command": "echo 'hello world'",
    "Environment": [
      {
        "Name": "env",
        "Value": "prod"
      }
    ],
    "InstanceType": "m5.large",
    "Memory": 2048,
    "Vcpus": 2,
    "ResourceRequirements": {
      "Type": "GPU",
      "Value": "2"
    }
  }
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2