9

入力から配列の長さを比較し、次の状態に進むことを決定する 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 での関数の使用例に関する情報は見つかりませんでした。

助けていただければ幸いです。ありがとうございました!

4

2 に答える 2