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

Step Function调用Lambda:如何传Body?Headers与Query参数是否正确?

问题解答

一、当前Headers和Query参数的定义问题

从语法和Step Function调用Lambda的规则来看,你写的Headers和QueryParameters结构本身没问题,但你的JSON代码存在语法错误:">>>BODY TO BE PASSED<<<"后面缺少逗号,且Parameters对象的闭合括号前格式不对,这会导致状态机无法部署,必须先修正。

另外要注意:由于你无法修改目标Lambda,必须确保Headers、QueryParameters这些键名完全匹配Lambda期望的输入参数名(比如如果Lambda要求的是小写的headers而不是Headers,就得改成对应小写),否则Lambda接收不到正确的参数。

二、如何传递Body参数

直接在Parameters里添加对应键值对即可,键名同样要和Lambda期望的一致(常见的是Body或body),根据需求选择两种传递方式:

1. 传递JSON对象形式的Body

如果Lambda期望接收结构化的JSON Body,直接嵌套对象即可:

{
  "StartAt": "InvokeLambdaState",
  "States": {
    "InvokeLambdaState": {
      "Type": "Task",
      "Resource": ">>>AWS ARN<<<",
      "Parameters": {
        "Method": "POST",
        "Headers": {
          "header1": "value1"
        },
        "QueryParameters": {
          "Param1": "value1"
        },
        "Body": {
          "username": "test",
          "content": "hello world",
          "tags": ["demo", "post"]
        }
      },
      "End": true
    }
  }
}

2. 传递字符串形式的Body

如果Lambda期望接收JSON字符串格式的Body,就把值写成字符串(注意转义双引号):

{
  "StartAt": "InvokeLambdaState",
  "States": {
    "InvokeLambdaState": {
      "Type": "Task",
      "Resource": ">>>AWS ARN<<<",
      "Parameters": {
        "Method": "POST",
        "Headers": {
          "header1": "value1"
        },
        "QueryParameters": {
          "Param1": "value1"
        },
        "Body": "{\"username\":\"test\",\"content\":\"hello world\",\"tags\":[\"demo\",\"post\"]}"
      },
      "End": true
    }
  }
}

三、额外提示

如果需要传递动态参数(比如从前面状态的输出中获取数据),可以用Step Function的路径引用语法,比如:

"Body.$": "$.previousState.bodyData"

这会把前一个状态输出里的bodyData字段值直接传给Lambda的Body参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:33:24