AWS CDK(v2) StepFunctions の BatchSubmitJob で command を Context や Input から動的に上書きする
目次
はじめに
AWS CDK で StepFunctions から AWSBatch を実行するときに、 BatchSubmitJob
を使うと便利ですが、
containerOverrides.command
を 上書きする方法がなかなか調べられなかったので書き残しておきます。
Version
aws-cdk
:2.20.0
BatchSubmitJob で command を Context や Input から動的に上書きする方法
aws_stepfunctions.JsonPath
というのが使えて、 string[]
が期待されるパラメータであれば、
JsonPath.listAt(JSON_PATH)
が使えます。
従って、例えば、以下のように書くことができます。
他にも JsonPath.numberAt(JSON_PATH)
や stringAt()
などもあります。
少し注意が必要なのは、 入力となる JSON の中に、 指定した JSON_PATH がない場合はエラーになります。
import {
aws_stepfunctions as sfn,
aws_stepfunctions_tasks as tasks,
} from "aws-cdk-lib";
export class MyAwesomeStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// ...
const batchTask = new tasks.BatchSubmitJob(this, `SubmitJobTask`, {
jobDefinitionArn: JOB_DEF_ARN,
jobName: "SubmitJob",
jobQueueArn: JOB_QUEUE_ARN,
containerOverrides: {
command: sfn.JsonPath.listAt("$.commands"),
},
attempts: sfn.JsonPath.numberAt("$.attempts"),
});
// ...
}
※ 入力の JSON 例
{
"commands": ["echo", "hello"],
"attempts": 3
}
さいごに
こういう情報がなかなかピンポイントで検索に引っかからない(検索下手なのか…)ので難航します。