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

Python中AWS Lambda对接API Gateway:返回statusCode还是status_code?

在Python中通过API Gateway使用AWS Lambda时,HTTP响应字段用"statusCode"还是"status_code"?

核心结论

  • 配合API Gateway使用Lambda时,必须用**"statusCode"**作为状态码字段名,这是API Gateway识别并生成HTTP响应状态码的约定字段。
  • Python requests库的Response对象中,状态码属性是status_code(下划线分隔),这是requests自身的命名规则,和API Gateway的响应字段分属不同场景。

问题解析

当你从Lambda返回如下内容:

return {
    "statusCode": 500,
    'message': "第三方API调用失败。查看服务器日志获取详情。"
}

用requests调用后得到的结果:

post_update_response.status_code = 200

post_update_response.text:
{"statusCode": 500, "message": "第三方API调用失败。查看服务器日志获取详情。"}

出现这个问题的原因是你的API Gateway和Lambda的集成模式不是Lambda代理集成。只有在代理集成模式下,API Gateway才会自动解析Lambda返回的statusCode字段,将其设置为HTTP响应的状态码;如果是其他集成模式,API Gateway会默认返回200状态码,同时把Lambda的返回值直接作为响应体返回。

解决方法

  1. 切换为Lambda代理集成:在API Gateway的集成设置中选择Lambda代理集成,这样API Gateway会自动根据Lambda返回的statusCode、headers、body等字段构建标准HTTP响应,此时requests调用后就能拿到正确的status_code(比如500)。
  2. 配置集成响应映射:如果无法使用代理集成,需要在API Gateway的集成响应中手动配置规则,将Lambda返回的statusCode字段值映射到对应的HTTP状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:49:54