在 AWS 步骤函数中使用 json 输入进行 ECS 容器配置

问题描述 投票:0回答:1

在尝试访问在步骤函数中传递给运行 ECS 任务的 json 输入的属性时,我遇到了问题。 json 输入具有以下结构。

enter image description here

我正在尝试将一些属性作为命令行参数传递,并将一些属性设置为环境变量。以下是我的步骤函数中的 ECS 任务配置。

enter image description here

当我运行 ECS 任务时,值将作为字符串 Ex: "$.lambdaResult.body.productId" 传递,而不是 json 中的实际值。我尝试将环境变量的值设置为 "Value.$": "$.lambdaResult.body.totalPrice" 但在部署步骤函数时它给了我以下错误。

“无效的状态机定义:'SCHEMA_VALIDATION_FAILED:字段'Value.$'的值必须是有效的 JSONPath 或 /States/RunCreateOrderECSTask/Parameters 处的有效内部函数调用”

将 json 值作为命令行参数传递并将其设置为环境变量的正确方法是什么。我正在使用 Spring Boot 容器,因此 Command [] 中的内容都会作为参数传递到应用程序。

amazon-web-services amazon-ecs aws-step-functions
1个回答
0
投票

我发现您的工作流程定义存在一些问题。

首先,您在提供 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)"

© www.soinside.com 2019 - 2024. All rights reserved.