使用不同的密钥将内容从一个S3存储桶复制到另一个S3存储桶

时间:2016-11-02 04:29:23

标签: amazon-web-services amazon-s3 copy

我有两个带有两组不同访问和密钥的S3存储桶。这是集:

Bucket1, Key1, Secret1

Bucket2, Key2, Secret2, Token

我试图通过aws cli触发S3-S3副本,如下所示:

aws s3 cp s3://key1:secret1@Bucket1 s3://key2:secret2@Bucket2

我几乎没有问题:

  • 我不确定如何指定令牌以便为bucket2提供写入权限
  • aws cli是否允许在S3 Url中指定密钥和密钥?

实现此用例的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

要在Amazon S3存储桶之间复制文件,您必须使用有权访问两个存储桶的凭据,或将存储桶策略应用于允许存储的目标存储桶访问。

无法指定两组凭据,因为AWS Command-Line Interface (CLI)仅调用单个AWS API ,执行从源存储桶直接复制到目标存储桶。 AWS CLI不下载对象 - 它只是告诉S3将对象复制到另一个存储桶(甚至可以位于不同的区域)。

因此,您应在目标存储桶上创建存储桶策略,以允许将PutObject使用的凭据传入目标存储区。

该政策类似于:

{
    "Version": "2012-10-17",
    "Id": "Policy1",
    "Statement": [
        {
            "Sid": "Stmt1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-NUMBER:role/ROLE-NAME"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::DESTINATION-BUCKET/*"
        }
    ]
}

以上假设从具有指定角色的Amazon EC2实例调用该命令。要从用户凭据调用,请使用:

"AWS": "arn:aws:iam::ACCOUNT-NUMBER:user/USER-NAME"