AWS Step Functionsで Pass ステートを使って定義した値を順番に Choice や他の Pass ステートに受け渡す方法を示します。このプロセスでは、ResultPath と InputPath を適切に設定してデータを順次渡していきます。
以下に、具体的な例を示します:
ステートマシンの構造
InitializeState: 初期変数を設定するPassステートChoiceState: 初期化された変数に基づいて条件分岐を行うChoiceステートSuccessPass/FailurePass:Choiceステートの結果に基づいて選択されるPassステート
ステートマシンの定義
{
"Comment": "State machine to pass values through Pass and Choice states",
"StartAt": "InitializeState",
"States": {
"InitializeState": {
"Type": "Pass",
"Result": {
"variable": 42,
"status": "initialized"
},
"ResultPath": "$.initData",
"Next": "ChoiceState"
},
"ChoiceState": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.initData.variable",
"NumericGreaterThanEquals": 50,
"Next": "SuccessPass"
},
{
"Variable": "$.initData.variable",
"NumericLessThan": 50,
"Next": "FailurePass"
}
],
"Default": "FailurePass"
},
"SuccessPass": {
"Type": "Pass",
"Result": {
"message": "Success: Value is greater than or equal to 50"
},
"ResultPath": "$.resultData",
"End": true
},
"FailurePass": {
"Type": "Pass",
"Result": {
"message": "Failure: Value is less than 50"
},
"ResultPath": "$.resultData",
"End": true
}
}
}
説明
InitializeState:
Passステートで{ "variable": 42, "status": "initialized" }を出力。ResultPathを使用して出力を$.initDataに保存。- 次のステートとして
ChoiceStateに遷移。
ChoiceState:
$.initData.variableの値に基づいて条件分岐を行う。- 値が 50 以上であれば
SuccessPassステートに遷移。 - 値が 50 未満であれば
FailurePassステートに遷移。
SuccessPass:
Passステートで成功メッセージを{ "message": "Success: Value is greater than or equal to 50" }として設定。ResultPathを使用して出力を$.resultDataに保存。- ステートマシンを終了。
FailurePass:
Passステートで失敗メッセージを{ "message": "Failure: Value is less than 50" }として設定。ResultPathを使用して出力を$.resultDataに保存。- ステートマシンを終了。
詳細
ResultPath: これは、ステートの出力がどこに保存されるかを指定します。例えば、$.initDataに保存されます。InputPath: 必要に応じて、次のステートが入力データのどの部分を受け取るかを指定できます。
実行例
このステートマシンを実行すると、初期値 variable が 42 なので、$.initData.variable は 50 未満となり、FailurePass ステートに遷移して終了します。メッセージは以下のようになります:
{
"resultData": {
"message": "Failure: Value is less than 50"
}
}
こうして Pass ステートを使って値を次の Choice や Pass に受け渡す方法がわかるかと思います。これを基に、より複雑なステートマシンを構築することも可能です。必要に応じて Task ステートや他のステートも組み合わせることで、柔軟なワークフローを設計できます。

コメント