我有两个带有两组不同访问和密钥的S3存储桶。这是集:
Bucket1, Key1, Secret1
和
Bucket2, Key2, Secret2, Token
我试图通过aws cli
触发S3-S3副本,如下所示:
aws s3 cp s3://key1:secret1@Bucket1 s3://key2:secret2@Bucket2
我几乎没有问题:
aws cli
是否允许在S3 Url中指定密钥和密钥?实现此用例的最佳方法是什么?
答案 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"