AWS
stepfunctions

Step Functionsで前のStateの入力を次のStateに渡す

Stateの種類によって入出力の挙動が異なるので注意が必要。

Task以外のState

デフォルトで前のStateからきた入力をそのまま出力するので問題ない。OutputPath を設定することで入力をフィルタリングして渡すことができる。また、Pass State ならばResultResultPathを指定することで、次の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の値をそのまま返す

参考

AWS Step Functions 開発者ガイド » Amazon ステートメント言語 » 入力および出力処理