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

Lambda返回错误状态码时,AWS API Gateway始终返回200状态码问题咨询

解决方案

1. 用Lambda代理集成的正确返回格式

如果你的API Gateway用的是Lambda代理集成,Lambda必须返回特定结构的响应,API Gateway才会识别其中的状态码:

{
  "statusCode": 400,
  "headers": {
    "Content-Type": "application/json"
  },
  "body": "{\"error\": \"Invalid input\"}"
}
  • statusCode字段会被API Gateway直接用作HTTP响应状态码
  • body必须是字符串格式(如果是JSON对象要先序列化)

2. 配置非代理集成的集成响应映射

如果用的是非代理集成,得手动配置API Gateway的集成响应,把Lambda返回的错误映射到对应HTTP状态码:

  • 进API Gateway控制台,找到目标API和对应方法
  • 切换到「集成响应」标签
  • 点击「添加集成响应」,输入Lambda返回内容的错误正则匹配(比如.*"statusCode":400.*)
  • 设置对应的HTTP状态码(比如400)
  • 配置响应模板,把Lambda返回的内容映射到API响应体

3. 处理Lambda异常情况

如果Lambda抛出错误(不是返回带错误码的响应),需要配置API Gateway的「错误响应」:

  • 在集成响应里,添加针对Lambda错误类型的映射(比如Lambda.ServiceException)
  • 关联对应的HTTP状态码,比如500
  • 可以自定义错误响应体模板

4. 验证返回内容格式

确保Lambda返回的是合法JSON格式,API Gateway才能正确解析状态码字段。如果返回非JSON格式,API Gateway会默认返回200。

比如错误的返回方式:

"error": "Bad request", "status": 400

正确的返回方式(代理集成):

{
  "statusCode": 400,
  "body": "{\"error\": \"Bad request\"}"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:04