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

Step Functions中Choice步骤读取Lambda返回值报错求助

解决Step Functions中Lambda返回值在Choice步骤的访问问题

问题根源

报错有两个核心原因:

  1. 路径层级错误:Lambda执行后的结果中,实际业务返回数据嵌套在Payload字段下,而非根节点
  2. 键名拼写错误:Lambda返回的键是number_of_higher_grade_promotions(末尾带s),但Choice步骤中写的是number_of_higher_grade_promotion(缺少s)

解决方案

你可以选择以下两种方式修复:

方案1:修改Lambda任务的OutputPath,直接输出Payload内容

在Lambda任务配置中,将OutputPath设置为$.Payload,后续步骤的输入就会是Lambda返回的字典本身,无需嵌套访问:

{
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "Parameters": {
    "Payload.$": "$",
    "FunctionName": "arn:aws:lambda:eu-central-1:1234456789:function:my_lambda_function:$LATEST"
  },
  "Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException",
        "Lambda.TooManyRequestsException"
      ],
      "IntervalSeconds": 1,
      "MaxAttempts": 3,
      "BackoffRate": 2
    }
  ],
  "OutputPath": "$.Payload",
  "Next": "Is queue empty"
}

同时修正Choice步骤中的键名拼写:

{
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.number_of_higher_grade_promotions",
      "NumericEquals": 0,
      "Next": "Empty queue"
    }
  ],
  "Default": "lambda_function_2"
}

方案2:保持原OutputPath,在Choice步骤中使用完整路径

如果不想修改Lambda任务的输出结构,直接在Choice步骤中使用完整的JSON路径,并修正键名:

{
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.Payload.number_of_higher_grade_promotions",
      "NumericEquals": 0,
      "Next": "Empty queue"
    }
  ],
  "Default": "lambda_function_2"
}

额外说明

Lambda代码中定义的DEPT_NAME在执行结果中变成了dept,这是因为你赋值的是dataset["dept"],如果后续需要访问部门名称,路径应为$.Payload.dept[0](因为它是数组格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:25:06