CloudWatchEventsのインプットでBatchのジョブ定義をオーバライドする
6438 ワード
CloudWathEventsru-ルール で AWS Batchでバッチ処理を実行する構成では、CloudWatchEventのルール設定の「input」パラメータで、入力パラメータを設定できます。
さらに、入力パラメータ以外に、ジョブ定義のvcpuや環境変数などのパラメータのオーバーライドも可能ですのでその方法を紹介したいと思います。
TL:DR;
- CloudWatchEventルールのターゲット
Input
にContainerOverrides
を追加する
- ex)パラメータ
Env
の定義および、ジョブ定義のVcpuを4,メモリを2048に上書きする場合のInput
{"Parameters" : {"Env":"Prod" },"ContainerOverrides": { "Vcpus":4, "Memory":2048}}
利用用途
- 一つのジョブ定義を使いまわしたいが、条件によっては環境変数やvcpuなどの一部のパラメータを変更したい場合
- 一部の環境変数の変更やvcpuの変更程度あればジョブ定義を複数用意せずに済む
設定方法
コンソール
- CloudWatchEventルール > ターゲット > 入力の設定 > 定数(JSONテキスト)
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"
}
}
]
}
設定できるプロパティ
Input
にContainerOverrides
を追加する
- ex)パラメータ
Env
の定義および、ジョブ定義のVcpuを4,メモリを2048に上書きする場合のInput
{"Parameters" : {"Env":"Prod" },"ContainerOverrides": { "Vcpus":4, "Memory":2048}}
- 一つのジョブ定義を使いまわしたいが、条件によっては環境変数やvcpuなどの一部のパラメータを変更したい場合
- 一部の環境変数の変更やvcpuの変更程度あればジョブ定義を複数用意せずに済む
設定方法
コンソール
- CloudWatchEventルール > ターゲット > 入力の設定 > 定数(JSONテキスト)
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"
}
}
]
}
設定できるプロパティ
aws events put-targets --rule [ルール名] --cli-input-json file://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"
}
}
}
Author And Source
この問題について(CloudWatchEventsのインプットでBatchのジョブ定義をオーバライドする), 我々は、より多くの情報をここで見つけました https://qiita.com/meno-m/items/cd3dff43c514da0cc01e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .