AWS Step FunctionsでLambdaにInputPathでフィルターして入力値を渡す方法
Lambdaを実行するだけのStep Functionsです。こちらのLambdaに入力値を渡します。
InputPathを使用する
ステートマシン起動時に入力したペイロードをInputPathを使用して渡します。
「InputPathで入力をフィルタリング」にチェックを入れます。
「$.data」とします。
Lambda
LambdaではeventをCloudWatch Logsに出力しています。
exports.handler = async (event) => { console.log(event) return { statusCode: 200 }; };
ペイロード
設定タブにペイロードがあります。
No payload…関数にペイロードを提供しません。eventに入力値は渡りません。
Enter payload…ペイロードとして使用するJSONオブジェクトを入力します。「amazon states language」構文を使用すると、実行時に状態入力から値を取得することができます。
Use state input as payload…JSONの入力全体を関数のペイロードとして使用します。
「Use state input as payload」を選択してみます。
実行の開始(Use state input as payload)
保存したら「新しい実行」をクリックし、以下の入力値を設定します。
{ "data": {"hoge":"fuga"}, "datas": "xxxx" }
「実行の開始」をクリックし、CloudWatch Logsを見ます。
eventに{“hoge”:”fuga”}が渡ってきています。
datasの値が出力されないのは、InputPathでフィルターしているためdataの値のみとなります。
実行の開始(Enter payload)
InputPathを「$.data」にした状態で、「Enter payload」にします。
$.dataでフィルターされた値は以下になります。
{ "hoge":"fuga" }
Enter payloadを以下にします。状態入力の値を取得するには、キー名.$というように「.$」を末尾に付ける必要があります。
{ "sampleKey1": "sampleValue1", "abc.$": "$.hoge" }
保存したら「新しい実行」をクリックし、以下の入力値を設定します。
{ "data": {"hoge":"fuga"}, "datas": "xxxx" }
「実行の開始」をクリックし、CloudWatch Logsを見ます。
eventに{ sampleKey1: ‘sampleValue1’, abc: ‘fuga’ }が渡ってきています。
$.hogeは入力値の値を渡していることが確認できます。
参考サイト
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント