Stateの種類によって入出力の挙動が異なるので注意が必要。
Task以外のState
デフォルトで前のStateからきた入力をそのまま出力するので問題ない。OutputPath
を設定することで入力をフィルタリングして渡すことができる。また、Pass State ならばResult
とResultPath
を指定することで、次のStateへの出力項目を追加することができる。
Task
基本的には、Taskの出力がそのまま次のStateの入力となる。自身の入力を次のStateに渡したい場合は、次のいずれかの方法をとる。
-
ResultPath
でTaskの出力を値として定義した上でOutputPath: "$"
を指定する - Task の側で入力値を明示的に出力する。例えばLambdaの場合は
event
に入力値が入るので、それを返すようにすれば入力値を次のStateに渡すことができる
例
ResultPath
で出力を拾うパターン
- Statement言語
"exState1": {
"Type": "Task",
"Resource": "arn:...(略)..."
"ResultPath": "$.Result"
"OutputPath": "$"
"Next": "exState2"
}
Taskの実装に任せるパターン
Lambdaを使う場合
- Statement言語
"exState1": {
"Type": "Task",
"Resource": "arn:...(略)..."
"Next": "exState2"
}
- Lambda内の処理(Python)
def handler (event, content):
### ...(処理は省略)...
return event ### eventの値をそのまま返す