使用 AWS CLI 进行 AWS S3 数据传输



我正在尝试使用 AWS CLI 将存储在 s3中的 25 TB 数据从一个 aws 账户传输到另一个 AWS 账户(两者都位于不同区域(中的另一个 s3 存储桶,任何人都可以建议我哪个 EC2 实例更适合使用 CLI 进行数据传输,主要是完成传输可能需要多少时间。

复制文件

复制是容易的部分!使用 AWS 命令行界面 (CLI(:

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

数据将直接在存储桶之间传输 - 数据不会被下载和上传。因此,您使用什么大小的 EC2 实例并不重要 - 您甚至可以从自己的计算机运行该命令,并且速度也一样快。CLI 会将要复制的每个文件的必要复制命令发送到 S3。

使用sync命令的好处是,如果出现问题,可以恢复复制,因为它只复制自上次同步以来丢失或更新的文件。

权限

您需要考虑的是如何允许访问以复制文件。假设您有:

  • 具有存储桶 A 的账户 A
  • 具有存储桶 B 的账户 B
  • 您希望从存储桶 A 复制到存储桶 B

您应该从账户 B 中有权写入存储桶 B 的用户("用户 B"(运行sync命令。

您还需要向存储桶 A 添加专门允许用户 B 访问的存储桶策略。该策略如下所示:

{
"Id": "Policy1",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadOnlyAccess",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/user-b"
]
}
}
]
}

arn值是用户 B 的 ARN。

定时

如果存储桶位于同一区域,则传输速度会更快。但是,我不知道转移需要多长时间。25TB实际上是很多数据!(您是否尝试过在计算机上复制1TB的数据?它很慢!

好处是您可以多次使用aws s3 sync命令。假设您需要在周末进行转移。您可以在一周内运行该命令,然后在周末再次运行它。只会复制已添加/更改的文件,因此最终的复制窗口将非常小。

最新更新