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

如何实现AWS Step Function遍历字符串列表并传参给Lambda

AWS Step Function Map状态遍历传参方案

首先修正原配置的3个核心问题:

  • ItemsPath配置错误:原配置指向整个InputData对象,实际要遍历的是InputData下的Loaders字符串数组,需调整路径为$.InputData.Loaders
  • 动态参数引用规则错误:Step Functions中通过JsonPath取动态值时,对应参数的键名必须加.$后缀,否则会被识别为普通字符串字面量
  • 迭代元素取值方式错误:Map状态内置了上下文对象,不需要手动维护索引,可直接获取当前迭代元素和Map的原始输入
  • 原JSON配置缺失多处键值对之间的逗号分隔符,会直接导致状态机定义校验失败

修正后的完整Step Function定义

如果是用CloudFormation/SAM部署,保留原有的Ref写法即可,核心参数部分按如下配置:

{
  "StartAt": "Handle Loaders",
  "States": {
    "Handle Loaders": {
      "Type": "Map",
      "ItemsPath": "$.InputData.Loaders",
      "Iterator": {
        "StartAt": "Execute Loader",
        "States": {
          "Execute Loader": {
            "Type": "Task",
            "Resource": { "Ref": "DataLoader" },
            "Parameters": {
              "SeedData.$": "$$.Map.Item.Input.InputData.SeedData",
              "Loader.$": "$$.Map.Item.Value"
            },
            "End": true
          }
        }
      },
      "End": true
    }
  }
}

参数取值逻辑说明

  • Loader.$: "$$.Map.Item.Value":以$$开头代表引用Step Functions内置上下文,Map.Item.Value对应当前迭代轮次的数组元素,三次迭代分别传入"Makes"、"Models"、"Styles"
  • SeedData.$: "$$.Map.Item.Input.InputData.SeedData":单个数组迭代项仅为字符串,不包含公共SeedData,因此通过Map.Item.Input获取Map状态收到的完整原始输入,沿路径提取所有迭代共用的SeedData值

修正后的正确输入结构

原输入结构中InputData键名缺失闭合引号,修正后格式如下:

{
  "InputData": {
    "SeedData": "自定义公共种子数据",
    "Loaders": ["Makes", "Models", "Styles"]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:30:42