AWS API Gateway接收deflate压缩负载返回415错误的配置问询
问题根因与修正方案
1. 方法请求配置修正
你在方法请求中额外添加的application/x-gzip、application/x-gzip-compressed、application/zlib属于冗余配置,会触发内容类型匹配异常。方法请求的请求体内容类型只需要保留和你请求头一致的application/json即可,不需要添加编码相关的内容类型。
2. 网关全局配置确认
- 网关设置页的
Content Encoding开关仅管控网关返回给客户端的响应压缩逻辑,完全不影响客户端上传压缩请求的处理,当前关闭状态无需调整。 Binary Media Types配置只需要保留application/json即可,无需配置通配符或者其他编码相关类型。配置完成后必须重新部署API到对应生效阶段,旧配置会被阶段缓存导致不生效。
3. 集成请求配置适配
Lambda代理集成模式
不需要配置任何映射模板,网关会自动将压缩后的二进制请求体做Base64编码后传递给Lambda,你只需要在Lambda侧先对请求体做Base64解码,再做deflate解压即可拿到原始JSON数据。
非代理集成模式
添加application/json类型的映射模板,模板内容填入$util.base64Decode($input.body)即可完成二进制解码,请求体传递规则保持当前的When there are no templates defined即可。
4. 客户端压缩格式校验
AWS API Gateway仅支持RFC 1950标准的带zlib头的deflate格式,如果你客户端使用的是不带zlib头的raw deflate格式,会被识别为非法内容返回415错误,需要调整客户端的压缩实现。
内容的提问来源于stack exchange,提问作者Sunil K Behera
相关产品推荐
相关产品推荐

