この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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