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

AWS Step Functions Parallel任务输出无法被Lambda读取的语法问题

排查结论

你的状态机配置存在3处直接导致传参失败的问题,按优先级修复即可:

  • 最核心的问题是合并逻辑对应的Create_Brand_Iteration_Array任务传参缺失:你使用arn:aws:states:::lambda:invoke这个SDK集成模式调用Lambda时,Parameters里只配置了函数ARN,没有指定Payload参数,Step Functions不会自动把上游Parallel的输出作为事件传给Lambda,这就是为什么你手动给Lambda传正确的输入能跑通,但在工作流里拿不到数据——Lambda根本没收到Parallel的输出。
  • Parallel状态多余配置了Parameters字段:你加的{"Input.$": "$"}会把所有传入分支的输入额外嵌套一层Input键,导致两个分支的Lambda如果预期直接读取上游Get_Token输出的字段,会读不到值,间接导致分支返回空数据。
  • 所有使用lambda:invoke集成的任务都没有配置OutputPath解包:这个集成模式的返回值会把Lambda的实际输出包在Payload字段下,外层还有SDK调用的元数据,如果不解包,下游拿到的结构会和你预期的完全不一致。

修复步骤
  1. 修改Create_Brand_Iteration_Array任务配置,补全Payload传参,同时加上OutputPath解包Lambda返回值:
"Create_Brand_Iteration_Array": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "Parameters": {
    "FunctionName": "arn:aws:lambda...",
    "Payload.$": "$"
  },
  "OutputPath": "$.Payload",
  "Next": "Retrieve_Brand_Info"
}

这里可以删掉原来的InputPath: "$",默认就是取全量输入,不需要额外配置。

  1. 删掉Parallel状态下多余的Parameters配置,保留InputPath即可:
"Get_Brand_List_and_Brand_Props": {
  "Type": "Parallel",
  "Next": "Create_Brand_Iteration_Array",
  "InputPath": "$.Payload",
  "Branches": [
    // 原有两个分支的配置不需要改动
  ]
}

注意:如果你分支里的两个Lambda任务后续也改成lambda:invoke集成模式,必须和上面的合并任务一样,每个任务都要加Payload.$: "$"传参和OutputPath: "$.Payload"解包,不然分支输出会带冗余的SDK元数据。如果保持现在直接写Lambda ARN的优化集成模式,就不需要额外改配置,这个模式会自动传参、自动解包返回值。

  1. 校验分支输出:改完配置后可以在Step Functions的执行详情里看Parallel状态的输出,确认是长度为2的数组,第0位包含非空的brand_list字段,第1位包含非空的brand_props字段,只要这两个值正常,合并Lambda就能按照你之前测试的逻辑生成正确的迭代数组,不会再返回空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:12:19