🕌
StepFunctionsのChoice検証メモ
ここで書いていること
AWS StepFunctions の Choise の使い方を確認したので、忘れないようにここにメモする。
作ったもの
このようにLambda関数の実行結果から受け取った値をChoiceで分岐判定します。
Choise
の判定はこのようになっていて、val
要素の値がhoge
なのかどうかが分岐判定になります。
Lambda関数について
このStepFunctionsステートマシンにより実行するLambda関数のPythonスクリプトです。
returnで返す値が、StepFunctions ステートマシン に渡される値になります。
import json
def lambda_handler(event, context):
retVal = event["val"]
return {
'statusCode': 200,
'val': retVal
}
Lambda関数実行時に渡す引数を{"val": "hoge"}
とすると、変数retValに"hoge"が格納され、returnで返す値は以下のようになります。
{
'statusCode': 200,
'val': "hoge"
}
動作検証
StepFunctionsステートマシンを実行し挙動を確認します。
検証①:val="hoge" で実行
StepFunctionsステートマシン実行時に渡す引数をこのようにします。
実行結果はこちら、期待通り Pass-hoge
を通りました
検証②:val="fuga" で実行
StepFunctionsステートマシン実行時に渡す引数をこのようにします。
実行結果はこちら、期待通り Pass-NotHoge
を通りました
(おまけ)StepFunctionsのソース
今回検証で作ったStepFunctionsステートマシンのソースです。
{
"Comment": "A description of my state machine",
"StartAt": "Lambda Invoke",
"States": {
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:ap-northeast-1:123456789012:function:sample:$LATEST"
},
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException",
"Lambda.TooManyRequestsException"
],
"IntervalSeconds": 1,
"MaxAttempts": 3,
"BackoffRate": 2
}
],
"Next": "Choice"
},
"Choice": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.val",
"StringEquals": "hoge",
"Next": "Pass-hoge"
}
],
"Default": "Pass-NotHoge"
},
"Pass-hoge": {
"Type": "Pass",
"End": true
},
"Pass-NotHoge": {
"Type": "Pass",
"End": true
}
}
}
以上です。
LambdaからStepFunctionsに値を渡す方法と、Choiseの判定は忘れがちなのでメモできてよかった。
Discussion