AWS StepFunctionsで定義したStateMachineで、実行時に与えられる値をStateを横断して参照するようなケースを考える。
ex.
以下のようなステートマシンで、実行時にparam
が与えられるとき、Step2
でも同じくparam
を参照したい
flowchart TD
Start(Start) -->|param| Step1[Step1]
Step1 -->|param| Step2[Step2]
Step2 --> End(End)
ResultPath
ResultPathを使うことで、InputをOutputへ引き回し、伝播させることができる
結果を破棄し、元の入力を渡す
ResultPathにnullを指定すると、実行したStateの結果を破棄し、元の入力をそのまま出力することができる
ex.)
StateMachine
{ "StartAt": "Step1", "States": { "Step1": { "Type": "Pass", "Result": "hogefuga", "ResultPath": null, "Next": "Step2" }, "Step2": { "Type": "Pass", "Result": "$.param", "End": true } } }
Input
{ "param": "input value" }
Output
Step1の結果hogefuga
が破棄され、Inputと同じ値が出力される。これでStep2でもStep1と同じInputを参照できる
{ "param": "input value" }
結果を入力に含める
元の入力に、指定したキーの値として実行したStateの結果を入れ、出力することができる
ex.)
StateMachine
{ "StartAt": "Step1", "States": { "Step1": { "Type": "Pass", "Result": "hogefuga", "ResultPath": "$.result", "Next": "Step2" }, "Step2": { "Type": "Pass", "Result": "$.param", "End": true } } }
Input
{ "param": "input value" }
Output
Step1の結果hogefuga
がResultPathに指定したキーresult
の値としてInputに追加され出力される。
{ "param": "input value", "result": "hogefuga" }