在尝试访问在步骤函数中传递给运行 ECS 任务的 json 输入的属性时,我遇到了问题。 json 输入具有以下结构。
我正在尝试将一些属性作为命令行参数传递,并将一些属性设置为环境变量。以下是我的步骤函数中的 ECS 任务配置。
当我运行 ECS 任务时,值将作为字符串 Ex: "$.lambdaResult.body.productId" 传递,而不是 json 中的实际值。我尝试将环境变量的值设置为 "Value.$": "$.lambdaResult.body.totalPrice" 但在部署步骤函数时它给了我以下错误。
“无效的状态机定义:'SCHEMA_VALIDATION_FAILED:字段'Value.$'的值必须是有效的 JSONPath 或 /States/RunCreateOrderECSTask/Parameters 处的有效内部函数调用”
将 json 值作为命令行参数传递并将其设置为环境变量的正确方法是什么。我正在使用 Spring Boot 容器,因此 Command [] 中的内容都会作为参数传递到应用程序。
我发现您的工作流程定义存在一些问题。
首先,您在提供 JSONPath 时没有为键添加
.$
后缀。
{
"Name": "UNIT_PRICE",
"Value": "$.lambdaResult.body.unitPrice"
}
应该是
{
"Name": "UNIT_PRICE",
"Value.$": "$.lambdaResult.body.unitPrice"
}
其次,当你想提供一个数组时,你需要使用
States.Array
内在函数。例如:
"Command.$": "States.Array($.lambdaResult.body.productId,$.lambdaResult.body.productDescription,$.lambdaResult.body.productType)"