首页 > 解决方案 > 使用 API Gateway 从 S3 下载已压缩的文件

问题描述

我有一些东西的 API 前端,其中之一是包含大量文件的 S3 存储桶。

当我设置一个与我的 S3 存储桶集成的资源时,这对于标准文本数据非常有效,但对于已经 gzip 压缩的文件则失败。

如何告诉 API Gateway 将 gzip 压缩文件作为二进制流传递?

我需要使用 API Gateway 进行身份验证,所以我不能通过使用 s3 存储桶来提供我的文件来绕过它。

我还需要为几乎所有其他端点打开 gzip 编码,因此关闭它会导致已经工作的端点出现其他问题。

标签: amazon-web-servicesamazon-s3

解决方案


“其他”工作内容 - 只有文本文件还是二进制内容文件?

使用默认(非 http-only)API Gaeway 处理二进制内容时,您必须设置一些参数。请参阅https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html (这只是我对问题的假设,因为您仍然未能提供任何可重复和有效的示例,如何API 网关提供内容?作为 Lambda?代码?)

API Gateway 有效负载也有 10MB 的限制。如果您想返回更长的内容(实际上 - 我会将它用于所有内容),API Gateway 可以为 S3(或 Web 分发)返回一个预签名的 URL,以便客户端可以从 S3 下载任何长度的内容存储桶(直接或通过 CloudFront)。


推荐阅读