AWS CDK(v2) StepFunctions の LambdaInvoke で Payload を Context や Input から動的に上書きする
目次
はじめに
AWS CDK で StepFunctions から Lambda を実行するときに、 LambdaInvoke
を使うと便利ですが、
その payload
を Input 情報から Mapping する方法をメモしておきます。
これは検索すると結構見つかりますが、 AWSBatch の BatchSubmitJob
と指定の仕方が違うのでちょっと注意が必要です。
Version
aws-cdk
:2.20.0
LambdaInvoke で Payload を Context や Input から動的に上書きする方法
Lambda の payload
(Lambda の Handler に渡される Object) は TaskInput.fromObject()
を使うと良いようです。
ここで指定した Object がそのまま handler に渡されます。
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 reportTask = new tasks.LambdaInvoke(this, "ReportTask", {
lambdaFunction: reportLambda,
payload: sfn.TaskInput.fromObject({
taskName: sfn.JsonPath.stringAt("$.taskName"),
report: sfn.JsonPath.objectAt("$.report"),
}),
});
}
※ 入力の JSON 例
{
"taskName": "MyGreatTask",
"report": {
"profit": "5000兆円"
}
}
さいごに
メモでした。