StepFunctionsの基本
概要
Step Functionsの基本を書いていきます。わかったら追記します。
デバッグ方法
とりあえず挙動を確認するには Workflow Studio
を使って手で動かすのが良さそうです。
慣れてからJSONを加工するようにすると良いと思います。
Workflow Studioでpass
を使う
どんな結果が返ってくるかを見るのに pass
を使うと便利です。
これは特に何も処理をしないStateですが、入出力を確認したり、加工したりできます。
以下検証はPass
を使って、入力、出力を確認しています。
InputPath
これは受け取ったInputのJSONをフィルタリングするのに使えます。
例えば下記のようなInputのJSONが渡った場合。
"flowName": "example",
"id": 12345,
"name": {
"firstname": "taro",
"lastname": "suzuki"
}
}
InputPathで下記のようにフィルタリングする。
"InputPath": "$.name"
そうすると結果としては下記が返ってくる。
"firstname": "taro",
"lastname": "suzuki"
}
Idを指定すると、
"InputPath": "$.id"
下記が返ってくる。
12345
OutputPath
OutputPathを使うと、出力をフィルタリングできる。
入力JSONが下記だったとする。
"flowName": "example",
"id": 12345,
"name": {
"firstname": "taro",
"lastname": "suzuki"
}
}
OutputPathに下記を指定する。
すると下記lastnameだけが出力される。
ResultPath
既存のInputのJSONにStateのなにかの出力を追加する場合に使う。
例えば、stateの名前と実行ステータスコードを結果として、resultというKeyに追加したい場合は下記のように指定する。
"stateName": "Pass",
"statusCode": "200"
}
$.result
は $ がJSONのツリー階層を表していて、例えば下記のような入力を渡すと、
"taskName": "example"
}
出力は下記のようになる。
"taskName": "example",
"result": {
"stateName": "Pass",
"statusCode": "200"
}
}
Parameters
InputPathと似ているけど用途が異なる。
InputPathは入力JSONから特定のKEYの値を取り出すことに使える。
Parametersは入力JSONを元に別のJSONを作る場合に使える。
入力JSON
"flowName": "example",
"id": 12345,
"name": {
"firstname": "taro",
"lastname": "suzuki"
}
}
Parametersで下記を指定したとする。
"inputId.$": "$.id"
}
出力は下記となる。新しいKEY名で出力されている。
"inputId": 12345
}
もう少し露骨な例にすると、最終的にほしいJSONをParametersで作る。
入力JSONは最初と同じとする。
下記の例では、nameが1階層下になっているのをフラットにするようにしている。
"new_flowName.$": "$.flowName",
"new_Id.$": "$.id",
"new_lastname.$": "$.name.lastname",
"new_firstname.$": "$.name.firstname"
}
そうすると下記が返ってくる。
"new_firstname": "taro",
"new_Id": 12345,
"new_flowName": "example",
"new_lastname": "suzuki"
}