我正在尝试使用AWS CLI将存储在s3中的25 tb数据从一个aws帐户转移到另一个AWS账户中的另一个s3存储桶(两者位于不同地区),任何人都可以建议我哪个EC2实例更好用,使用CLI进行数据传输的过程,主要是完成传输所需的时间。
答案 0 :(得分:2)
复制文件
复制很容易!使用AWS Command-Line Interface (CLI):
aws s3 sync s3://source-bucket s3://destination-bucket
数据将直接在存储桶之间传输 - 数据将不下载&上传。因此,您使用的EC2实例大小无关紧要 - 您甚至可以从您自己的计算机上运行命令,并且速度也一样快。 CLI将为每个要复制的文件向S3发送必要的复制命令。
使用sync
命令可以在出现问题时恢复副本,因为它只复制自上次同步以来丢失或更新的文件。
<强>权限强>
需要考虑的是如何允许访问来复制文件。假设你有:
您应该从帐户B中的用户(“用户B”)运行sync
命令,该用户有权写入Bucket B。
您还需要向Bucket A添加一个Bucket Policy,专门允许用户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
命令。假设您需要在周末进行转移。您可以在一周内运行该命令,然后在周末再次运行它。只会复制已添加/更改的文件,因此最终的复制窗口将非常小。