如何用Serverless/CloudFormation开启API Gateway HTTP API压缩?
解决HTTP API的API Gateway压缩配置问题
你之前的配置无效,核心原因是provider.apiGateway.minimumCompressionSize是REST API专属配置项,而你的服务使用的是HTTP API(通过events.httpApi定义端点),该配置不会对HTTP API生效。以下是两种可行的解决方案:
方案一:通过Serverless框架HTTP API配置直接设置
若你的Serverless框架为v3及以上版本,可直接在provider块下添加httpApi配置,指定压缩阈值:
provider: name: aws httpApi: minimumCompressionSize: 1 # 响应体大小超过1字节即触发压缩
方案二:自定义CloudFormation资源配置
如果方案一不生效(比如使用旧版本Serverless),可以通过自定义CloudFormation资源覆盖HTTP API的压缩设置:
resources: Resources: HttpApi: Type: AWS::ApiGatewayV2::Api Properties: Name: ${self:service}-${self:stage} # 保持与自动生成的API名称一致 ProtocolType: HTTP MinimumCompressionSize: 1 # 开启压缩,阈值设为1字节
验证前的关键修正
你之前的curl命令使用了POST方法,但你的端点配置的是GET,导致返回404,无法正常验证压缩。请使用正确的请求方法测试:
curl -X GET -sILH 'Accept-Encoding: gzip, deflate' https://example.com/v1/dummy
若压缩生效,响应头会出现Content-Encoding: gzip(或deflate),同时Content-Length会比原始响应体尺寸更小。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

