AWS Step 函数:找不到为字段指定的 JSONPath 'Value.$' '$.S3_BUCKET'



使用以下输入启动Step函数

[{"name":"S3_BUCKET","value":"test-bucket"},{"name":"S3_KEY","value":"key-name.txt"}]'"

将此传递给ECS的容器的正确方法是什么?这是目前为止我在阶跃函数参数

下得到的结果
"Overrides": {
"ContainerOverrides": [
{
"Name": "test",
"Environment": [
{ "Name": "S3_BUCKET", "Value.$": "$.S3_BUCKET"}
]
}
]
}
},

下面是我得到的错误信息:

JSONPath '$。S3_BUCKET'指定字段的值。$'无法找到

希望这对其他人有帮助,我花了一些时间来弄清楚

如果你正在通过cloudwatch启动Step Function,并希望将一些环境变量传递给ECS/Fargate。我最终使用constant而不是input_transformer

下面是aws_cloudwatch_event_target的地形代码

resource "aws_cloudwatch_event_target" "cloudwatch-ecs-target" {
arn    = aws_sfn_state_machine.YOUR-STATEMACHINE.arn
rule     = aws_cloudwatch_event_rule.CLOUDWATCH_RULE.name
role_arn = aws_iam_role.YOUR-ROLE.arn
input = <<JSON
{
"ENV1": "ABC",
"ENV2": "XYZ",
}
JSON
}

状态机地形代码是这样的

resource "aws_sfn_state_machine" "STATEMACHINE" {
name     = "STATEMACHINE-NAME"
role_arn = aws_iam_role.YOUR-ROLE.arn
definition = <<EOF
{
"StartAt": "Run Fargate Task",
"States": {
"Run Fargate Task": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"LaunchType": "FARGATE",
"Cluster": "${aws_ecs_cluster.YOUR-ECS-CLUSTER.arn}",
"TaskDefinition": "${local.task_definition_arn_only}",
"NetworkConfiguration": {
"AwsvpcConfiguration": {
"Subnets": [
"${aws_subnet.subnet-a.id}", "${aws_subnet.subnet-b.id}", "${aws_subnet.subnet-c.id}"
],
"AssignPublicIp": "ENABLED"
}
},
"Overrides": {
"ContainerOverrides": [
{
"Name": "ECS-CLUSTER-NAME",
"Environment": [
{ "Name": "ENV1", "Value.$": "$.ENV1"},
{ "Name": "ENV2", "Value.$": "$.ENV2"},
]
}
]
}
},
"End": true
}
}
}
EOF
}

最新更新