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

如何获取API Gateway触发AWS Lambda的event结构并提取POST请求body

API Gateway触发AWS Lambda的Event参数结构说明

对接API Gateway代理集成的AWS Lambda收到的事件结构固定,与运行时版本无关,完全适配你使用的Ruby 2.7环境。

完整Event结构示例

{
  "resource": "/quizzes",
  "path": "/quizzes",
  "httpMethod": "POST",
  "headers": {
    "Accept": "*/*",
    "Content-Type": "application/json",
    "Host": "xxx.execute-api.us-east-1.amazonaws.com",
    "User-Agent": "curl/7.64.1"
  },
  "queryStringParameters": null,
  "pathParameters": null,
  "stageVariables": null,
  "requestContext": {
    "requestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "sourceIp": "192.168.1.1",
    "httpMethod": "POST",
    "stage": "prod"
  },
  "body": "{\n    \"quiz\":\n    {\n        \"first_name\": \"john\",\n        \"last_name\": \"doe\",\n        \"ssn\": \"1234\",\n        \"address\":\n        {\n            \"line1\": \"4444 NW ANYSTREET AVE\",\n            \"city\": \"anytown\",\n            \"state\": \"FL\",\n            \"zip_code\": \"33333\"\n        },\n        \"dob\":\n        {\n            \"day\": 25,\n            \"month\": 12,\n            \"year\": 2000\n        }\n    }\n}",
  "isBase64Encoded": false
}

如果使用的是HTTP API v2版本的集成,事件结构会有少量差异,顶层会新增值为2.0的version字段,body字段位置、格式完全不变。

提取请求载荷的实现方法

你需要的POST请求完整载荷存放在body字段中,注意该字段默认是字符串格式,二进制请求场景下会被Base64编码,Ruby环境下的提取代码参考:

require 'json'
require 'base64'

def lambda_handler(event:, context:)
  # 处理Base64编码的请求体场景
  raw_body = event['isBase64Encoded'] ? Base64.decode64(event['body']) : event['body']
  # 将字符串格式的请求体解析为Ruby哈希对象
  request_payload = JSON.parse(raw_body)
  # 直接获取你需要的quiz对象
  quiz_info = request_payload['quiz']
  
  # 后续业务逻辑
end

如果你的API Gateway配置为非代理集成,你可以在集成请求配置中自定义映射模板,自定义事件结构,默认代理集成场景下直接使用上述逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:03