我希望有人可以帮助我进行Amazon S3跨区域复制查询。我有两个Amazon AWS帐户,每个帐户都在不同区域中。我想将数据从一个存储桶复制到另一个存储桶,据我了解,这应该是一个简单的创建过程。但是,我真的很挣扎,我不知道自己在做什么错。我已经在线上遵循了很多说明,包括遍历各种AWS教程,看到了很多示例,但是我无法复制数据。
我在两个存储桶上都启用了版本控制,并且没有数据被加密。但是,我在源存储区中确实有一个策略,该策略允许通过引用条件访问源数据,以便只能通过特定域访问数据(在这种情况下为映像)。一切正常,我怀疑这可能是限制从目标存储桶进行访问的原因。
我已经按照在线说明设置了复制规则和IAM策略。
所以,我的源存储桶策略是:-
{
"Version": "2012-10-17",
"Id": "http referrer policy",
"Statement": [
{
"Sid": "Allow get requests originated from list",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::SOURCEBUCKET/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.domain1.com/*",
"https://www.domain2.com/*",
"http://domain3.com/*"
]
}
}
}
]
}
并且我的目标存储区策略是:-
{
"Version": "2008-10-17",
"Id": "S3-Console-Replication-Policy",
"Statement": [
{
"Sid": "S3ReplicationPolicyStmt1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::MYSOURCEACCIDNUMBER:root"
},
"Action": [
"s3:List*",
"s3:GetBucketVersioning",
"s3:PutBucketVersioning",
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource": [
"arn:aws:s3:::DESTINATIONBUCKET",
"arn:aws:s3:::DESTINATIONBUCKET/*"
]
}
]
}
有人可以建议我如何(如果需要)添加到源桶策略中,以允许从目标桶中进行访问吗?我对此很有信心。
谢谢。
答案 0 :(得分:0)
为了测试这种情况,我做了以下事情:
Bucket-A
中使用版本控制创建了Account-A
Bucket-B
中使用版本控制创建了Account-B
Bucket-A
上配置了跨区域复制,选择“创建新角色”(见下文)Bucket-B
该过程创建了一个名为s3crr_role_for_bucket-a_to_bucket-b
的角色,其中包含:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-a",
"arn:aws:s3:::bucket-a/*"
]
},
{
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags",
"s3:GetObjectVersionTagging"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket-b/*"
}
]
}
然后我将文件上传到Bucket-A
,并成功复制到Bucket-B
。
因此,该过程似乎正常进行。如果您遇到困难,请考虑以下几点:
DENY
答案 1 :(得分:0)
当相同的手动创建策略失败时,让复制规则设置创建新的IAM角色也对我有用。比较自动创建的角色和我的手动创建的角色时,区别是工作中的自动创建角色是 service-role ,而我的非工作角色是 instance-role 。 / p>
再次检查在源存储桶上用于复制的IAM角色是服务角色还是常规角色,而不是实例配置文件角色。