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

如何生成API Gateway触发Lambda本地运行的合法event.json及云端导出方法?

解决API Gateway触发Lambda的本地event.json问题及安全令牌错误

我平时开发AWS Lambda时经常碰到这些问题,分享几个实用的解决方法:

一、生成可本地运行的API Gateway触发event.json

有两种靠谱的方式:

1. 用SAM CLI快速生成标准模板

SAM CLI自带了生成各类事件的工具,直接执行命令就能得到符合API Gateway代理集成格式的event:

# 生成通用的API Gateway代理事件
sam local generate-event apigateway aws-proxy > event.json

# 按HTTP方法生成(比如POST)
sam local generate-event apigateway aws-proxy --method POST > event.json

生成的文件直接就能用,你可以根据自己的需求修改body、headers、queryStringParameters等字段。

2. 手动构造符合结构的event.json

如果你需要更定制化的结构,可以参考AWS官方的API Gateway事件规范,这里给个基础示例:

{
  "resource": "/your-api-path",
  "path": "/your-api-path",
  "httpMethod": "GET",
  "headers": {
    "Accept": "*/*",
    "Content-Type": "application/json"
  },
  "queryStringParameters": {
    "userId": "1001"
  },
  "requestContext": {
    "identity": {
      "sourceIp": "192.168.1.1"
    },
    "httpMethod": "GET"
  },
  "body": null,
  "isBase64Encoded": false
}

二、从云端导出真实的event.json,解决安全令牌无效错误

1. 从云端Lambda日志提取真实event

当你的Lambda在云端被API Gateway正常触发后,去Lambda控制台的「监控」->「日志」里找到对应的日志流,只要你在Lambda代码里加了打印event的逻辑(比如Python里的print(event)),就能在日志里找到完整的真实event内容,复制下来保存成event.json即可,这是最精准的本地测试用例。

2. 关于「请求中包含的安全令牌无效」的问题

这个错误不是event.json的问题,而是本地调用时的AWS凭证权限问题:

  • 本地用sam local invoke时,默认会使用你本地~/.aws/credentials文件里的凭证,要确保这个凭证对应的IAM用户/角色有访问DynamoDB的权限(比如dynamodb:Scan、dynamodb:GetItem等);
  • 如果你有多个AWS配置文件,可以用sam local invoke "MyFunction" -e event.json --profile your-authorized-profile指定有权限的配置文件;
  • 别混淆API Gateway的身份令牌和AWS服务调用凭证:event里的令牌是API Gateway用来做身份验证的,不能用来访问DynamoDB,DynamoDB的访问依赖本地的AWS凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:24:52