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

非代理集成下AWS Java Lambda如何让API Gateway返回自定义HTTP状态码

解决方案

非代理集成(Lambda自定义集成)不会自动识别Lambda返回体里的statusCode字段,你需要手动在API Gateway控制台完成以下配置:

1. 配置方法响应

  • 进入对应API的方法执行页面,点击「方法响应」
  • 新增你需要返回的所有HTTP状态码(例如示例中的502,以及其他用到的4xx、5xx状态码)
  • 每个新增的状态码下,按需添加要透传的响应头(例如X-Amzn-ErrorType、Content-Type),同时配置响应体的内容类型为application/json

2. 配置集成响应的状态码映射规则

  • 回到方法执行页面,点击「集成响应」
  • 默认存在200状态码的默认响应规则,你需要为每个非200的状态码新增集成响应规则
  • 配置Lambda错误正则表达式:匹配Lambda返回内容中的特征值,例如要映射502状态码,可以配置正则匹配"statusCode": 502或者"errorMessage": "InternalServerError.*",注意正则需要完全匹配目标字符串
  • 将该规则的「方法响应状态码」选择为第一步新增的对应状态码(例如502)

3. 配置响应头和响应体映射

  • 对每个新增的集成响应规则,展开「头映射」,将需要返回的响应头和Lambda返回的对应字段绑定,例如Content-Type对应的映射值填写integration.response.body.headers.content-type,X-Amzn-ErrorType对应的映射值填写integration.response.body.headers.X-Amzn-ErrorType
  • 展开「正文映射模板」,新增application/json类型的模板,模板内容填写$input.path('$.body')即可直接透传Lambda返回的body字段内容
  • 如果你需要支持动态透传任意状态码,可以直接修改默认200集成响应的方法响应状态码,映射值填写integration.response.body.statusCode,无需逐个配置固定状态码规则

注意事项

  • 所有配置修改完成后,必须重新部署API到对应阶段,新配置才会生效
  • 如果Lambda返回的是序列化后的JSON字符串而非Java对象,要确保转义格式不会影响正则匹配

内容的提问来源于stack exchange,提问作者interested-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:54:03