将大量数据从 S3 Bucket 复制到不同区域的 Bucket

将大量数据从 S3 Bucket 复制到不同区域的 Bucket

好吧,我正在设置我的 S3 数据的异地备份,并设置了跨区域复制到另一个区域的新存储桶。但是,原始存储桶中有很多数据也需要移动,超过 100TB,超过 2000 万个文件。我的第一个想法是运行:

aws s3 sync s3://source-bucket s3://destination-bucket

在 EC2 实例上。但这花费的时间比我预期的要长得多,而且由于它发出了所有 PUT/LIST 请求,因此成本也比我预期的要高。

阅读 AWS 文档,似乎他们推荐使用 AWS Snowball 进行此类操作。来自常见问题解答:

根据经验,如果使用现有互联网连接的空闲容量将数据上传到 AWS 需要一周以上的时间,那么您应该考虑使用 Snowball。

但是看起来这些是用于导入或导出的,而不是同时用于导入和导出。我需要用同一个 Snowball 做两个单独的作业吗?无论如何,为了将数据放到 Snowball 上,我是否仍然需要为所有这些 PUT/LIST 请求付费?他们提到了数据传输费用为 0.03 美元/GB,但没有提到 API 请求。

答案1

如果您要将 AWS 中已有的数据复制到另一个区域,Snowball 似乎不是一个好的选择。从 AWS 中的 EC2 实例的命令行运行同步似乎是正确的。

您是否尝试过配置最大并发请求数?这可能会解决性能问题。另外,本文针对您的情况有更多建议。

如果您的 S3 存储桶中有许多对象(超过 1000 万个对象),请考虑使用 Amazon S3 清单报告和 Amazon CloudWatch 指标。这些报告有助于优化验证复制对象的成本和性能。您还可以拆分不同前缀的同步命令以优化 S3 存储桶性能。有关优化工作负载性能的更多信息,请参阅请求率和性能指南。

如何在 Amazon S3 存储桶之间复制对象?

相关内容