
StepFunctionsのPassステートでできることあれこれ
この記事は公開されてから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






