按照无服务器框架文档,我将其添加到我的
serverless.yaml
provider:
name: aws
apiGateway:
minimumCompressionSize: 1
因此,我有任何给定的端点进行测试,它返回一个大约 500 个字符的 JSON 字符串,根据我上面的配置,该字符串应该返回压缩的,但正如我们可以通过 cURL 验证的那样,它没有压缩。
functions:
v1-http-dummy:
handler: app/v1/http/dummy.handler
events:
- httpApi:
path: /v1/dummy
method: GET
检查:
$ curl -X POST -sILH 'Accept-Encoding: *' https://example.com/v1/dummy
HTTP/2 404
date: Thu, 16 Nov 2023 10:19:13 GMT
content-type: application/json
content-length: 23
apigw-requestid: OfHpQg_xIAMEJwA=
无任何压缩迹象。
我知道 REST API 和 HTTP API 之间存在差异;我的项目使用 HTTP API。我的问题是,如何使用 Serverless 框架在 API Gateway 上启用压缩?
也可以通过 CloudFormation 实现。
我尝试了在 StackOverflow 上找到的答案,但它不再起作用,这就是我再次询问的原因。因此,这不应被视为重复问题,因为旧的解决方案不再有效。
您需要明确指定您想要接收压缩响应:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-receive-response-with-compressed-payload.html
另请注意,如果您想对所有请求/响应启用压缩,可以将该值设置为
0
。参考:https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#minimumCompressionSize