如何修改AWS API Gateway自定义授权拒绝响应的字段大小写?
解决AWS自定义授权器拒绝响应键名大写问题
当自定义授权Lambda返回拒绝策略时,API Gateway默认会返回键名为大写Message的响应,可通过以下几种应用内配置或代码修改实现键名转为小写message:
方案1:配置API Gateway网关响应映射模板
这是最直接的方式,无需修改Lambda代码,通过API Gateway的内置配置转换响应结构:
- 登录API Gateway控制台,进入目标API
- 切换至网关响应标签页
- 找到
ACCESS_DENIED类型的响应,点击编辑 - 在映射模板区域,添加
application/json类型的模板,内容如下:
{ "message": "$context.error.messageString" }
- 保存配置后重新部署API
此后,授权拒绝时API Gateway会自动生成键名为小写message的响应。
方案2:修改自定义授权Lambda的错误返回逻辑
调整授权Lambda的代码,不返回标准Deny策略,而是抛出自定义错误,再通过API Gateway映射转换响应:
- 在Lambda代码中,当判定用户无权访问时,抛出包含错误信息的异常(以Python为例):
raise Exception("User is not authorized to access this resource with an explicit deny")
- 进入API Gateway的目标方法配置,在集成响应中添加对500状态码的处理:
- 将状态码映射为403
- 添加
application/json映射模板:
{ "message": "$input.path('$.errorMessage')" }
- 在方法响应中添加403状态码的响应模型,确保结构符合要求
方案3:后端Lambda代理集成处理(若适用)
如果API采用Lambda代理集成,可在后端业务Lambda中捕获授权拒绝的错误信息,重新构造包含小写message键的响应返回给前端。
内容的提问来源于stack exchange,提问作者mosh
相关产品推荐
相关产品推荐

