【问题标题】:How to upload large file using AWS Gateway and S3 proxy如何使用 AWS Gateway 和 S3 代理上传大文件
【发布时间】:2020-05-05 19:17:10
【问题描述】:

我已将 AWS Gateway API 配置为 proxy,以便 S3 将文件上传到 S3 存储桶。我已将二进制媒体配置为支持multipart/form-data

我可以毫无问题地上传大小为 10MB 或以下的文件。但是,当文件大小超过 10MB 时,我会收到 413 Request Entity Too Large 问题。

我知道 AAG 的有效负载硬限制为 10 MB。

问题
1>添加multipart/form-data不是应该解决10 MB的限制问题吗?我还需要配置什么吗?

2>推荐的另一种方法是create pre-signed url。我假设这种工作方法客户端必须拨打电话以获取预签名的 url,然后使用该 url 上传文件。这是上传大文件的唯一方法吗?

请注意,我已经阅读了几篇关于同一问题的 SO 帖子,但其中大多数都是旧的,我很想知道是否有任何新建议。

【问题讨论】:

  • 您应该改用 S3 提供的分段上传功能并解决这个问题 IMO。结帐docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html了解详情。
  • 我找不到任何确认您可以使用此 API Gateway S3 代理功能进行超过 10MB 聚合的大型、多部分上​​传。但是,您绝对可以通过预签名 URL 直接上传到 S3。是的,您在 #2 中提出的方法是正确的。
  • @Siddharth 我们的客户将上传文件。我试图避免为我们的客户直接上传到 S3。将来如果我们从 S3 更改为其他东西,那么他们必须更改他们的代码。

标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway


【解决方案1】:

10 MB 有效负载限制是硬性限制,无法增加 [1]。

似乎可以在客户端将文件拆分成块,然后再次将其放在服务器上 [2] 以规避 10 MB 的限制,但我认为这不是一个合理的方法。如果您不使用提供分块功能的客户端 SDK,预签名 URL 方法对我来说似乎更好。

请注意,如果您决定放弃 S3,您仍然可以自己在任何服务器上实现相同的接口。因此,我认为这是要走的路。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2020-05-14
    • 2020-11-30
    • 1970-01-01
    • 2018-07-07
    • 2017-04-15
    相关资源
    最近更新 更多