こうこく
作 ▸

AWS Step Functionsから呼び出されるLambdaで実行IDを受け取る

コンテキストには $$ でアクセスできる

Context オブジェクト - AWS Step Functions

実行IDは $$.Execution.Id にあるので、そこから拾ってLambdaのペイロードにセットしてやればOK。

ステートマシンの定義
{
  "Comment": "オスのひよこ",
  "StartAt": "Lambda Invoke",
  "States": {
    "Lambda Invoke": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "OutputPath": "$.Payload",
      "Parameters": {
        "FunctionName": "MyPiyopiyoFunction",
        "Payload": {
          "executionId.$": "$$.Execution.Id",
          "params.$": "$"
        }
      },
      "End": true
    }
  }
}

ここでは、パラメータで受け取った実行IDとそれ以外を合わせて出力してみた。

Lambda関数のコード
exports.handler = async (event) => {
    return {
        executionId: event.executionId,
        ...event.params,
        smile: '(^-^)'
    }
};

これで以下の通りに実行される。

ステートマシンの実行入力
{
  "hoge": "piyo"
}
ステートマシンの実行出力
{
  "executionId": "arn:aws:states:ap-northeast-1:999999999999:execution:MyPiyopiyoStateMachine:00000000-0000-0000-0000-000000000000",
  "hoge": "piyo",
  "smile": "(^-^)"
}
この記事に何かあればこちらまで (非公開)