You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以编程方式将Map迭代索引传入ECS任务?

解决Step Functions Map状态迭代索引传入ECS任务的问题

在Step Functions的Map状态迭代中,直接将$$.Map.Item.Index写入ECS任务的Command数组会被当作字面量字符串,无法解析为当前迭代的索引值。需要使用Step Functions的参数引用语法$()包裹系统变量,才能正确替换为实际索引。

修改后的状态机定义如下:

{
  "Comment": "A state machine that iterates over an array and creates an ECS task for each item.",
  "StartAt": "IterateArray",
  "States": {
    "IterateArray": {
      "Type": "Map",
      "InputPath": "$.arrayField", 
      "ItemsPath": "$", 
      "MaxConcurrency": 0,
      "Iterator": {
        "StartAt": "RunECSTask",
        "States": {
          "RunECSTask": {
            "Type": "Task",
            "Resource": "arn:aws:states:::ecs:runTask.sync",
            "Parameters": {
              "LaunchType": "FARGATE",
              "Cluster": "ClusterName",
              "TaskDefinition": "TaskDefinitionName",
              "Overrides": {
                "ContainerOverrides": [
                  {
                    "Name": "yourContainerName",
                    "Command": [
                      "python",
                      "src.py",
                      "--my_argument",
                      "$($$.Map.Item.Index)"
                    ]
                  }
                ]
              }
            },
            "End": true
          }
        }
      },
      "End": true
    }
  }
}

关键说明

  • Step Functions的系统变量(如$$.Map.Item.Index)在嵌套的数组或对象结构中,必须用$()包裹才能被正确解析替换。
  • 这种语法告诉状态机:此处需要解析并插入指定的系统变量值,而非保留字符串字面量。

内容的提问来源于stack exchange,提问作者james pow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:34:55