Java编写AWS Lambda获取API Gateway查询字符串参数为空问题排查
问题根因
你使用了错误的请求事件类型:APIGatewayProxyRequestEvent 是Lambda代理集成模式专属的事件类,你当前未勾选代理集成配置,属于自定义映射模板的非代理集成模式,Lambda实际接收到的JSON结构和代理集成的标准结构不匹配,AWS SDK无法将接收到的内容反序列化到对应字段,因此打印出来是空对象。
解决方案
可从以下两种方案中任选其一处理:
- 方案1:切换为Lambda代理集成模式
在API Gateway对应GET方法的「集成请求」配置页勾选「Use Lambda Proxy integration」,重新部署API即可。无需修改现有Lambda入参定义,事件对象会自动填充全部请求相关信息。 - 方案2:保留非代理集成模式,调整Lambda入参类型
将Lambda处理方法的入参替换为Map<String, Object>类型直接接收映射模板传入的自定义结构,也可以根据你编写的映射模板输出的JSON结构,自定义对应POJO类作为入参,SDK即可正常反序列化字段。 - 临时验证方式:可先把Lambda入参改为
Map<String, Object>类型,打印入参内容确认实际接收到的JSON结构,再对应调整入参类型即可。
内容的提问来源于stack exchange,提问作者jkim
相关产品推荐
相关产品推荐

