【问题标题】:How to speed up the copy in S3 bucket?如何加快 S3 存储桶中的复制速度?
【发布时间】:2019-10-01 16:25:50
【问题描述】:

我有一个存储桶bucket_a,并试图将此存储桶的内容复制到另一个存储桶bucket_b,但是将对象从存储桶bucket_a 的文件夹folder_a 复制到folder_a 需要花费大量时间桶bucket_b,因为每个文件夹中有近 9k 个对象,每个大小为 600MB,我有 20 个这样的文件夹。

我尝试了存储桶的加速选项,并使用了 aws cli 的 cp 命令,看来复制内容还需要 2-3 天。

【问题讨论】:

  • 您尝试过 aws sync 命令吗?
  • aws s3 同步 s3://from_my_bucket s3://to_my_other_bucket
  • 桶是否在同一个区域?
  • 您可以同时为每个文件夹运行sync 命令(在单独的 CLI 会话中),以便并行复制文件夹。此外,从同一区域的 Amazon EC2 实例运行 sync 命令可能会加快速度。 (虽然数据直接在存储桶之间移动而无需下载,但 API 调用可能会更快。)
  • @JohnRotenstein - 我使用 synccp 对 30GB 文件夹进行了测试,其中包含 20 个文件,并且没有发现文件传输有任何差异,并且存储桶位于同一区域。跨度>

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


【解决方案1】:

加快这种传输的一种方法是确保您用于传输的角色可以读取源存储桶并写入目标存储桶。正确设置角色和存储桶策略后,您可以防止数据在 AWS 服务器之外传输。这样可以加快传输时间并节省您自己的数据使用量。

请参阅:https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

另一种加快传输速度的方法是调整复制期间使用的一些设置。您可以指定块大小、可以同时进行传输的线程数以及其他设置。见:https://docs.aws.amazon.com/cli/latest/topic/s3-config.html

您可能希望使用至少 4 到 10 个 max_concurrent_requests(线程数)并将 multipart_chunksize 从默认值增加到基于您的可用内存和您将允许的并发请求数的某个值。

我发现 aws cli 工具基本上能够消耗你所有的 CPU 和内存,所以你需要小心你如何设置它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 2017-03-13
    • 1970-01-01
    • 2017-11-23
    • 2018-06-18
    • 1970-01-01
    • 2022-01-24
    • 2022-01-11
    相关资源
    最近更新 更多