入力から配列の長さを比較し、次の状態に進むことを決定する AWS Step Function の Choice 状態があります。
ただし、length()
配列の長さを取得する関数はエラーを返しました。
{
"error": "States.Runtime",
"cause": "状態 'CheckItemsCountState' (イベント ID #18 で入力) の実行中にエラーが発生しました。無効なパス '$.Metadata[2].Items.length( )': 選択状態の条件パスが無効な値を参照しています。"}
Choice 状態の定義は次のとおりです。
"CheckItemsCountState":{
"Type": "Choice",
"InputPath": "$",
"OutputPath": "$",
"Default": "NoItemsState",
"Choices":[
{
"Variable": "$.Metadata[2].Items.length()",
"NumericGreaterThan": 0,
"Next": "ProcessState"
}
]
},
状態は、JSON を返す他の状態に接続されています。JSON は以下のとおりです。
{
"Metadata": [
{
"foo": "name"
},
{
"Status": "COMPLETED"
},
{
"Items": []
}
]
}
Items
そのため、 inの長さを取得してMetadata[2]
、値が 0 より大きいかどうかを比較しようとしていました。
$.Metadata[2].Items.length()
このWeb サイトでJsonPath を検証しようとしましたが、 0 が返されます。
何かを見逃したかどうかはわかりません。AWS Step Function のドキュメントや、jsonpath での関数の使用例に関する情報は見つかりませんでした。
助けていただければ幸いです。ありがとうございました!