StepFunctionsのPassステートでできることあれこれ
StepFunctionsのPassステートでできることを整理してみました。
既存のパラメータをすべて捨てて、Passステートで返す新たな値だけを使う
Result
フィールドで新たな値を定義するだけです。シンプル。
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "Result": { "Fuga": "FugaValue" }, "End": true } } }
{ "Hoge": "HogeValue" }
{ "Fuga": "FugaValue" }
既存のパラメーターを残したまま、Passステートで新たな値を追加する
ResultPath
フィールドで新たな値の位置を指定すれば、他の場所には既存のパラメーターが残ります。
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "Result": "FugaValue", "ResultPath": "$.Fuga", "End": true } } }
{ "Hoge": "HogeValue" }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
既存のパラメーターをフィルタする
NGパターン: Resultを使う
Result
を使うと失敗します。Result
の中で動的な値は使用できないようです。
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "Result":{ "Fuga" : "$.Fuga" }, "End": true } } }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
{ "Fuga": "$.Fuga" }
OKパターン: Parameterを使う
Result
フィールドは使わず、Parameters
フィールドで残したい値を指定します。Result
を使わない場合Parameters
の値がそのままPassステートの出力になります。
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "Parameters":{ "Fuga.$" : "$.Fuga" }, "End": true } } }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
{ "Fuga": "FugaValue" }
既存のプロパティ名書き換え 他のプロパティはフィルタ
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "Parameters":{ "Foo.$" : "$.Fuga" }, "End": true } } }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
{ "Foo": "FugaValue" }
そのまま残したい値があるのであれば、Parameter
フィールドにもとの名前のまま追記すれば良いです。
何もしない
ユースケースが思い浮かびませんが…一応ご紹介します。特に追加フィールドを定義せず、EndあるいはNextを書くだけです。
{ "StartAt": "PassTest", "States": { "PassTest": { "Type": "Pass", "End": true } } }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
{ "Hoge": "HogeValue", "Fuga": "FugaValue" }
参考情報
- Pass - AWS Step Functions
- json - AWS Step Function - Adding dynamic value to Pass state type - Stack Overflow