amazon-web-services - 使用 API Gateway 从 S3 下载已压缩的文件
问题描述
我有一些东西的 API 前端,其中之一是包含大量文件的 S3 存储桶。
当我设置一个与我的 S3 存储桶集成的资源时,这对于标准文本数据非常有效,但对于已经 gzip 压缩的文件则失败。
如何告诉 API Gateway 将 gzip 压缩文件作为二进制流传递?
我需要使用 API Gateway 进行身份验证,所以我不能通过使用 s3 存储桶来提供我的文件来绕过它。
我还需要为几乎所有其他端点打开 gzip 编码,因此关闭它会导致已经工作的端点出现其他问题。
解决方案
“其他”工作内容 - 只有文本文件还是二进制内容文件?
使用默认(非 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)。
推荐阅读
- linux - 我是否为我的 shell 脚本使用了正确的语法?
- ios - 以编程方式使用按钮更改应用程序语言
- google-bigquery - 您可以在不取消嵌套的情况下投射重复的字段吗?
- html - 具有最大高度的填充
- primefaces - 如何更改 p:calendar 组件中的夏令时 (DST) 日期
- corda - 创建启动流时出现异常 [errorCode=1i4tu3y]
- c# - 异步任务 c#
- sql - 如何为跨环境的 SQL 脚本生成一键部署?
- css - 如何使用 nth-child 选择每个第一个和第三个元素?
- python - 如何使用 Pandas MultiIndex DataFrame 中的先前值进行计算?