LoginSignup
1
0

AWSのStepFunctionsにおけるInvokeで後続処理への値の引き渡し及び新規パラメータを追加する方法

Last updated at Posted at 2023-12-06

はじめに

StepfFunctionsのInvokeを知用し、LambdaA→LambdaBへとパラメータを渡す際に、Aの戻り値以外にも新たなパラメータを追加してLambdaBに渡したい事案が発生した。
その際にどうやるべきかを学んだのでここにまとめる。

ステートマシーン構成図

構成は以下の図の通り。
LambdaA(=Lambda Invoke)、LambdaB(=Lambda Invoke 2)として説明する
スクリーンショット (359) (1).png

ソースコード

[Lambda Invoke]

import json

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': 'Hello from Lambda!',
        'count_list': [
	                    {"count":"3"},
	                    {"count":"21"},
	                    {"count":"39"},
	                    {"count":"40"},
	                    {"count":"52"},
	                    {"count":"60"}
        ]
    }

[Lambda Invoke 2]

import json

def lambda_handler(event, context):
    print(event)

実装方法

StepFunctionsの機能であるペイロードを設定する

StepFunctionsの設定のペイロードにて[Use state input as payload]を選択すると、前段の戻り値の値をそのままeventで引き継ぐ。しかし今回は新たに値を埋め込みたいので

① Lambda Invoke 2の設定で[Enter payload]を選択する。

② 以下の値を設定する。

{
  "sampleKey1": "sampleValue1",
  "StateInput.$": "$",
  "key3": 100
}

:bulb: 固定値を追加で埋め込む場合は"sampleKey1": "sampleValue1”のようにKey:Valueで記述する。もちろん文字列だけでなく、数値も追加可能。

:bulb:「StateInput.\$」はLambda Invoke 2がeventで受け取る時のKey名となる。またValueに「”$”」と記述することでLambda Invoke 1での戻り値がここに入る。

実行してログを確認

StepFunctionsを実行してログを確認してみた。

Lambda Invoke 2が受け取ったeventの中身は以下のようになった。

{
	"sampleKey1": "sampleValue1",
	"key3": 100,
	"StateInput": {
		"statusCode": 200,
		"body": "Hello from Lambda!",
		"count_list": [
			{
				"count": "3"
			},
			{
				"count": "21"
			},
			{
				"count": "39"
			},
			{
				"count": "40"
			},
			{
				"count": "52"
			},
			{
				"count": "60"
			}
		]
	}
}

埋め込んだ値、及び前段の戻り値を後続のLambdaのパラメータとして渡すことができた。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0