【问题标题】:AWC CLI S3 Multipart UploadAWS CLI S3 分段上传
【发布时间】:2020-05-09 00:09:05
【问题描述】:

根据下面的文档,如果文件大于 64MB,AWS CLI 会使用分段上传。 https://awscli.amazonaws.com/v2/documentation/api/latest/topic/s3-config.html

此外,默认情况下每个部分都有8MB,因为 S3 多部分最多支持 10000 部分,这意味着 AWS CLI 只能在文件不超过 8MB * 10000 = ~78GB 的情况下将文件作为多部分发送。我的这个假设是否正确?
https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html

如果我们在 AWS CLI 上配置 multipart_chunksize,我们可以更改此行为。 我知道我们应该使每个部分尽可能小,以充分利用分段上传。

我的问题是,我们如何处理这种配置以充分利用分段上传并能够上传大于78GB的不同大小的文件?

为避免混淆,问题是关于multipart 的用法。 AWS CLI 工作正常,我没有遇到问题,我只是想确保它在我们需要发送不同大小的文件时使用 multipart 上传。

【问题讨论】:

  • 您的假设是正确的,除了一个小错误8MB * 10000 应该是80GB。回到您的问题,由于 S3 对一次分段上传中允许的最大分段数有硬性限制,因此如果您想利用这两个分段上传的优势,则不可能在一次分段上传中执行此操作。另一种方法是启动多个分段上传,分别完成每个分段,最后启动另一个分段上传以在 S3 中组合它们。
  • 如果我使用两个分段上传,我最终会得到两个文件还是一个文件?我的意思是,我想上传一个大 150GB 的文件,如果我将 multipart_chunksize 更改为 16MB 我可以做到。但是如果我需要发送另一个 200GB 大的文件,我不能,我需要再次更改 multipart_chunksize
  • 你好像知道解决办法是增加multipart_chunksize。是什么阻止你这样做?
  • @jarmod 是的,如果我更改此参数,它可以正常工作,我不会遇到问题。我关于如何处理这种变化的问题。据我所知,我们只能按配置文件(默认或非默认)执行此操作,也不能按执行执行。如果我在默认配置文件上更改此设置,并且我们有两个不同的进程发送文件,其中一个将覆盖另一个的更改。
  • 现在我明白了您的问题:aws cli 将自行使用分段上传。

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

您的假设不正确。您可以使用分段上传到 S3 上传高达 5TB 的文件。

您说得对,一次分段上传最多可以上传 10.000 个块。

任何块的最大大小为 5GB,大于该大小的任何块都必须使用分段上传进行上传。因此,您可以使用最大 5GB 的任意大小进行分段上传。

使您的块尽可能小实际上可能会损害您的上传时间,因为设置连接非常耗时。小块可能会因连接设置时间而受到伤害,而大块可能会伤害您,因为某些上传可能会失败并且您需要重做。这就是获得正确的块大小很重要的地方。

我们在一个项目中使用了 100MB 的块,我们正在上传超过 100 GB 的文件并且它可以工作。使用此限制,我们将最大文件大小限制为 1TB,但这对于我们的需求来说是可以的。

【讨论】:

  • 5 TB 是最大对象大小,但 AWS CLI 不一定会使用多部分发送它。是的,使用 AWS CLI 发送大于 100 GB 的文件始终有效。但问题是,它如何以多部分形式发送文件?
  • 使用多部分发送任何大于 5GB 的内容。
  • 所以 AWS CLI 仅在文件大于 5GB 的情况下使用 multipart 发送文件,是你说的吗?
  • 不,我是说对于大于 5GB 的任何东西肯定会使用分段上传,但即使是较小的文件大小也会使用它。你不应该担心这个,可以处理任何文件大小。
  • 如果您使用 100mb 的 multipart_chunk,连接超时设置是多少?对于滞后的 4g 移动连接来说,这不是一大块吗?如果失败,则需要重试整个 100mb 块。
猜你喜欢
  • 1970-01-01
  • 2021-12-03
  • 2017-05-14
  • 2020-04-18
  • 2021-06-13
  • 2021-06-13
  • 2018-04-25
  • 2014-06-26
  • 1970-01-01
相关资源
最近更新 更多