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

如何在AWS Step Functions中映射数组并保留父ID?

使用AWS Step Functions Map状态实现数组遍历并保留顶层字段

要实现遍历bubble数组,同时在每个迭代输出中保留id字段,核心是利用Map状态的参数映射能力,结合JSONPath将顶层的id传递到每个子任务输入,并替换bubble为当前遍历的数组元素。

状态机核心配置

直接用以下JSON定义你的状态机,重点关注Map状态的ItemsPath和Parameters配置:

{
  "Comment": "遍历bubble数组并保留id字段",
  "StartAt": "ProcessBubbles",
  "States": {
    "ProcessBubbles": {
      "Type": "Map",
      "ItemsPath": "$.bubble", // 指定要遍历的数组路径
      "Parameters": {
        "id.$": "$.id", // 从顶层输入中获取id字段
        "bubble.$": "$$.Map.Item.Value" // 获取当前遍历的bubble数组元素
      },
      "Iterator": {
        "StartAt": "ProcessSingleBubble",
        "States": {
          "ProcessSingleBubble": {
            "Type": "Pass", // 可替换为实际业务任务(如Lambda、自定义Task等)
            "End": true
          }
        }
      },
      "End": true
    }
  }
}

关键JSONPath说明

  • ItemsPath": "$.bubble":告诉Map状态要遍历输入中的bubble数组。
  • "id.$": "$.id":将顶层输入的id字段直接复制到每个迭代的输入中。
  • "bubble.$": "$$.Map.Item.Value":$$代表Step Functions的上下文对象,$$.Map.Item.Value指向当前正在遍历的数组元素,把它赋值给bubble字段,替换原来的数组。

效果验证

传入目标输入JSON后,Map状态会自动生成两个迭代输入,分别是:

{
  "id": "123456",
  "bubble": {
    "type": "flex",
    "altText": "001"
  }
}

和

{
  "id": "123456",
  "bubble": {
    "type": "flex",
    "altText": "002"
  }
}

完全符合预期需求。

注意事项

  • 如果子任务需要调整输出格式,可以在ProcessSingleBubble状态中配置ResultPath或OutputPath。
  • 若使用STANDARD模式的Map状态,可通过MaxConcurrency控制并发数(默认1000)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:15:03