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

API Gateway + Lambda场景下启用压缩功能无效该如何解决

API Gateway REST API 压缩功能不生效配置排查方案

1 确认压缩阈值配置有效性

  • 无论通过控制台还是SAM模板配置,MinimumCompressionSize的有效值范围为 0到10485760字节(即10MB),超出范围的配置会直接导致压缩功能失效。
  • 该阈值对应的是响应载荷的未压缩原始大小,如果接口返回内容的原始大小小于你配置的阈值,API Gateway不会触发压缩。如果需要所有符合条件的响应都触发压缩,可将阈值设为0。

2 检查Lambda返回的响应配置

API Gateway REST API对接Lambda代理集成时,只有Lambda返回的响应满足以下条件才会触发压缩:

  • Lambda返回的Content-Type响应头必须属于API Gateway支持压缩的类型,默认支持的类型包括application/json、text/plain、text/css、application/javascript、text/xml、application/xml、text/javascript等,自定义Content-Type需要属于支持压缩的范畴才能生效。
  • Lambda返回的响应不能提前携带Content-Encoding头,已携带该头的响应会被API Gateway直接跳过压缩逻辑。
  • Lambda返回头中除了Vary: Accept-Encoding之外,不要手动添加其他和压缩相关的响应头,避免覆盖API Gateway的默认逻辑。

3 校验SAM模板配置层级

如果通过SAM模板部署,需要确保MinimumCompressionSize配置在正确的层级,示例正确配置如下:

Resources:
  MyRestApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: Prod
      MinimumCompressionSize: 0 # 根据业务需要配置阈值,0代表所有符合条件的响应都压缩
      DefinitionBody:
        # 你的API定义内容

注意不要将该参数配置到Stage变量层级,必须配置在AWS::Serverless::Api的根Properties下才会生效。

4 重新部署API到对应Stage

不管是控制台修改压缩配置还是SAM模板更新配置,修改完成后必须重新部署API到对应的Stage,新的压缩配置才会生效,这是高频遗漏的配置步骤。

5 确认请求头符合要求

  • 请求头的Accept-Encoding必须明确包含gzip或者deflate,注意API Gateway REST API目前不支持br压缩,请求中携带的br参数会被直接忽略,只要包含gzip或deflate即可。
  • 请求头不能携带Cache-Control: no-transform,该头会强制API Gateway跳过压缩逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:45:03