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

如何在AWS Step Functions的Map状态中获取迭代索引并生成结果数组?

解决AWS Step Functions Map状态生成结果数组的问题

核心原理

AWS Step Functions的Map状态默认会自动收集每个迭代的输出并组装成数组,不需要手动处理索引或额外计数器Lambda。你之前的问题出在ResultPath的配置上,导致每次迭代的结果没有被正确收集。

修改后的配置示例

"MyIterator": {
  "Type": "Map",
  "InputPath": "$.myArray",
  "Iterator": {
    "StartAt": "Parser",
    "States": {
      "Parser": {
        "Type": "Task",
        "Resource": "${my-lambda}",
        "End": true
      }
    }
  },
  "ResultPath": "$.Result"
}

配置说明

  • 移除Iterator里Parser任务的ResultPath:默认情况下,Task的ResultPath为$,会把Lambda的执行结果直接替换当前迭代的输入。这样每个迭代的输出就是Lambda处理后的单个值(比如输入0返回1,输入1返回2)。
  • 在Map状态层级添加"ResultPath": "$.Result":Map状态会自动把所有迭代的输出组装成数组,然后将这个数组存入顶层的Result字段中。

效果验证

当输入为{"myArray": [0,1,2]}时,Lambda执行x = x + 1逻辑,最终输出会是:

{
  "myArray": [0,1,2],
  "Result": [1,2,3]
}

额外说明

如果需要保留迭代的原始输入和结果,可以调整Iterator里Task的ResultPath,比如设为$.processedValue,这样每个迭代的输出是{"processedValue": 1}(对应输入0),Map收集后会得到[{"processedValue":1},{"processedValue":2},{"processedValue":3}],再通过Map的ResultPath存入指定字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:15:37