はじめに
Step Functions(sfn)をふと触ってみました。
lambdaをコールする際のinputとなるペイロードJSONの記法にやや戸惑ったので、アウトプットしてみます。
ペイロードJSONの記法
ペイロードJSONとは、sfnの中で実行されるlambdahandlerの第一引数にあたるオブジェクトです。
これです。
sfnコンソールでの設定箇所です。
簡単ですが、eventオブジェクトへのマッピングの動作確認ができました。
lambdaで参照したいものは大きく二つあると思います。
sfnのinputと、sfn全体のcontextをです。
それぞれについて整理します。
(参考)sfnの特殊なJSONPath記法について
JSONPathによってvalueが動的に定義されるkeyは、末尾に".$"を付ける必要があることに注意です。
https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters
inputを参照したい場合
以下の要領で記載します。
"input.$": "$"
{"Comment": "テスト"}
をinputにsfnを実行してみます。
"input.$": "$"
で取得できていることが確認できます。
(参考)inputとは?
sfnにおいては、「①ワークフローが実行された最初の入力値」および、「②直前のstateの出力値」です。
LambdaAのinputは①ワークフローが実行された最初の入力値となります。
LambdaBのinputは②直前のstateの出力値=LambdaAのoutputとなります。
contextを参照したい場合
以下の要領で記載します。
"context.$": "$$"
取得できていることが確認できます。
(参考)contextとは?
sfn全体の情報を持つオブジェクトです。
sfnのIDや、TaskTokenなどを保持しています。
おわりに
そもそもJSONpathが理解できていなかったため最初は戸惑いましたが、整理してみれば単純な記法に思いました。
ばりばりsfnでマイクロサービスを結合させていきたいです。