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

AWS Lambda调用测试事件JSON时事件为空的原因及用法疑问

问题分析与解决方案

为什么query_params为空?

你的测试事件JSON里只包含date字段,但代码里尝试获取的是queryStringParameters字段——这个字段是API Gateway触发Lambda时才会自动生成的结构,用于存放HTTP请求的查询参数。因为测试事件里没有这个字段,event.get('queryStringParameters', {})就返回了默认值空字典,所以CloudWatch日志显示query_params {}。

测试事件的正确写法(模拟API Gateway触发场景)

如果你的Lambda是通过API Gateway的HTTP请求触发(比如前端带查询参数调用),测试事件需要严格模拟API Gateway传递给Lambda的event结构,把date放到queryStringParameters下:

{
  "queryStringParameters": {
    "date": "2024-05-17 13:14:15"
  }
}

用这个测试事件调用后,代码里的query_params就能拿到{"date": "2024-05-17 13:14:15"},日志也会显示正确内容。

关于Lambda测试事件的运作逻辑

Lambda的event参数结构完全由触发它的上游服务决定:

  • 若由API Gateway触发:event会包含queryStringParameters(查询参数)、body(请求体)、headers等HTTP相关字段;
  • 若由其他服务触发(如S3、CloudWatch Events):event结构会对应上游服务的事件格式;
  • 手动测试时:你需要根据Lambda实际的触发场景,构造匹配对应结构的测试事件,才能让代码逻辑正常执行。

如果你的业务场景不是API Gateway触发,而是直接传递date参数,那需要修改代码里的参数获取逻辑,比如date = event.get('date'),同时保持原测试事件不变即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:07:11