跨区域在账户之间复制 AWS S3 存储桶

问题描述 投票:0回答:1

我们需要将存储桶的内容复制到不同 AWS 区域的新账户。

该存储桶包含 ±200K 对象,其中大部分已归档(Glacier),其中很大一部分相当大(>10GB)。

首先我们尝试了以下方法:

  1. 用于恢复所有对象的批处理脚本。
  2. 配置 Lambda 触发器来处理每个对象的恢复完成。
  3. 在 Lambda 函数上使用 boto3 执行复制方法。

这对于较小的对象(最多 ~2GB)效果很好,但较大的对象需要比允许的最大 Lambda 持续时间(15 分钟)更长的时间。

要完成其余部分(>10K 对象),我们必须使用一些 VM,但是 VM 被迫位于 VPC 中,并且由于某种原因 boto3 无法处理 VPC 内的跨区域复制命令:

An error occurred (AccessDenied) when calling the UploadPartCopy operation: VPC endpoints do not support cross-region requests

因此我们采取下载和上传每个对象的方法。对于我们需要复制的对象数量来说,这花费的时间太长了。

谁能提供更好的解决方案?

注意#1:AWS 有一个名为“批处理作业”的功能,可能与之相关,但配置起来有点困难,并且由于某种原因需要源存储桶和目标存储桶都启用版本控制(在本例中禁用)。

注意#2:我们在目标帐户上有一个角色,该角色可以访问源帐户,并且调用 S3 请求时请求者会为其付费。

python amazon-web-services amazon-s3
1个回答
0
投票

最终我们确实使用了DataSync。需要注意的是,您需要在运行 DataSync 任务之前手动恢复对象。

有关如何操作的 AWS 教程位于此处

© www.soinside.com 2019 - 2024. All rights reserved.