Step Functions から Lambda 関数を実行する処理の CDK での記述方法

2022.11.26

困っていた内容

CDK v2 で作成した Step Functions のステートマシンの定義内容を確認すると、Lambda 関数の呼び出し方法が

Resource: arn:aws:states:::lambda:invoke

となっています。

以前 CDK v1 では、

Resource: arn:aws:lambda:ap-northeast-1:123456789012:function:MyFunction

と、Resource に関数の ARN を直接記述する方式になっていました。

CDK v2 で Resource に関数の ARN を直接記述するには、どうすればよいでしょうか。

どう対応すればいいの?

方法1: Resource に関数の ARN を直接書く。
方法2: Parameters.FunctionName に関数名を書く。 Resource は arn:aws:states:::lambda:invoke 固定。

Step Functions から Lambda 関数を実行する処理を CDK で記述する場合、aws-cdk-lib.aws_stepfunctions_tasksLambdaInvoke (construct) [1] を利用できます。 この場合、Construct Props の payloadResponseOnly 値true にすると 方法1 の記述になり、false (デフォルト) にすると 方法2 の記述になります。

参考資料

[1] class LambdaInvoke (construct) · AWS CDK

[2] Step FunctionsからLambda関数を実行する書き方2つの違い | DevelopersIO

Step FunctionsからLambda関数を実行したい場合、ASL(Amazon State Languageの略。ステートマシンの実装をこの形式で書く)の書き方が2つあります。この違いを調べました。

方法1: Resourceに関数のARNを直接書く
方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定

[3] [AWS CDK] Step FunctionsステートマシンでLambdaInvokeでの”payloadResponseOnly”の指定による動作の違いを確認してみた | DevelopersIO

[4] StepFunctionsから呼び出したLambda関数のエラー発生時に、Lambda関数の再試行が行われたか教えてください | DevelopersIO