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

时间:2017-07-24 03:00:44

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

我正在尝试使用AWS CLI将存储在s3中的25 tb数据从一个aws帐户转移到另一个AWS账户中的另一个s3存储桶(两者位于不同地区),任何人都可以建议我哪个EC2实例更好用,使用CLI进行数据传输的过程,主要是完成传输所需的时间。

1 个答案:

答案 0 :(得分:2)

复制文件

复制很容易!使用AWS Command-Line Interface (CLI)

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

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

使用sync命令可以在出现问题时恢复副本,因为它只复制自上次同步以来丢失或更新的文件。

<强>权限

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

  • 使用Bucket A的帐户A
  • 帐户B与Bucket B
  • 您希望从Bucket A复制到Bucket B

您应该从帐户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命令。假设您需要在周末进行转移。您可以在一周内运行该命令,然后在周末再次运行它。只会复制已添加/更改的文件,因此最终的复制窗口将非常小。