AWS Step Function:函数.length()在Choice状态的variables字段中返回错误
我在AWS Step Function中有一个Choice状态,它将比较Input的数组长度,并决定进入下一个状态。
但是,获取数组长度的length()
函数返回了一个错误:
{
“错误”:“States.Runtime”,
“cause”:“执行状态'CheckItemsCountState'时发生错误(input到事件ID#18)无效path'$ .Metadata [2] .Items.length()':select状态的条件path引用无效值。”}
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": [] } ] }
所以我试图获取Metadata[2]
的Items
的长度Metadata[2]
并且如果值大于0,则进行比较。
我试图validation这个网站的JsonPath $.Metadata[2].Items.length()
,它返回0。
我不确定我是否错过了任何东西。 我在AWS Step Function的文档中找不到任何信息,或者在jsonpath中使用函数的示例。
我将不胜感激任何帮助。 谢谢!
步骤函数不允许您使用函数来获取值。 从select规则文档 :
对于每个操作符,相应的值必须是适当的types:string,数字,布尔值或时间戳记。
要做你所要求的,你需要获得前一个函数的数组长度,并将其作为输出的一部分返回。
{ "Metadata": [ { "foo": "name" }, { "Status": "COMPLETED" }, { "Items": [], "ItemsCount": 0 } ] }
然后在步骤functionselect步骤中:
"CheckItemsCountState":{ "Type": "Choice", "InputPath": "$", "OutputPath": "$", "Default": "NoItemsState", "Choices":[ { "Variable": "$.Metadata[2].ItemsCount", "NumericGreaterThan": 0, "Next": "ProcessState" } ] },