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" } ] },
- AWS Lambda – 下载文件,并将其用于相同的function – nodejs
- NodeJs不住在aws中
- 如何将node.js日志从Elastic Beanstalk Docker应用程序发送到Cloudwatch Logs?
- 在elasticbeanstalk中设置NODE_ENVvariables
- 从AWS Lambda函数的S3中获取对象并发送到Api Gateway
- 在AWS上部署反应Web应用程序
- 在亚马逊lambda,并行调整多个缩略图大小asynchronous抛出错误:stream产生空的缓冲区
- 缩放Node.js应用程序 – 哪个提供程序?
- 无法确认NodeJS中的http端点的aws Sns订阅