我正在尝试将一个帐户中的数据复制到一个帐户中,在该帐户中我可以访问IAM而不是管理员,访问另一个帐户中的存储桶,其中我是管理员,并且失败。我甚至不能ls
源存储桶。
我已经按照AWS的指示和各种来源在线给自己列出/读取/获取源存储桶的权限,但没有成功。我可以提供详细信息(例如,存储桶策略json),但它是AWS文档和其他地方的内容。我已经完成的工作在我有管理员访问权限的两个帐户之间。
这是"多区域",在我在美国的意义上(主要是us-west-2
),但存储桶位于eu-central-1
。我在aws cli中指定了区域,并在eu-central-1
中设置了目标存储区,但无论如何都无法列出。
答案 0 :(得分:0)
我已经使用我的AWS账户完成了这几次。我猜您已经设置了跨帐户访问您的S3存储桶,但只需仔细检查,这是我为授予S3存储桶交叉帐户访问权限而做的。
帐户(A): S3桶(testbucket)
帐户(B): IAM用户(testuser)需要访问帐户(A)中的S3存储桶testbucket
以下是需要发生的事情:
在testbucket(A)上创建存储桶策略,以授予对测试存储区的读取/列表等访问权限。 例如:
{
"Version": "2012-10-17",
"Id": "BUCKETPOLICY",
"Statement": [
{
"Sid": "AllowS3ReadObject28",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::900000000:user/testuser"
]
},
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::testbucket",
"arn:aws:s3:::testbucket/*"
]
}
]
}
答案 1 :(得分:0)
您的情况似乎是:
您可以将数据从帐户A推送到Bucket B,或者您可以从帐号B中提取来自Bucket A的数据。
从帐户A推送到Bucket B
让我们假设用户A可以访问Bucket A.所需要的只是授予用户A写入Bucket B的权限。这可以通过Bucket B上的存储桶策略完成:
{
"Id": "PolicyB",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GrantAccessToUserA",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::BUCKET-B",
"arn:aws:s3:::BUCKET-B/*"
],
"Principal": "arn:aws:iam::ACCOUNT-A:user/USER-A"
}
]
}
这会在Bucket B上向用户A授予所有 s3权限。这太过分了,但可能只是暂时的。
然后,用户A将文件从Bucket A复制到Bucket B.例如:
aws s3 sync s3://BUCKET-A s3://BUCKET-B \
--acl bucket-owner-full-control \
--source-region SOURCE-REGION \
--region DESTINATION-REGION
重要提示:复制文件时,请务必使用授予bucket-owner-full-control
的访问控制列表。这意味着文件将由Bucket B的所有者拥有。如果您不这样做,文件仍由用户A拥有,并且用户B无法删除,即使使用admin权利!
使用帐户B从广告连播A中提取
为此,必须授予用户B访问Bucket A的权限。您需要在帐户A中有足够的访问权限才能在Bucket A上添加存储桶政策:
{
"Id": "PolicyA",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GrantAccessToUserB",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::BUCKET-A",
"arn:aws:s3:::BUCKET-A/*"
],
"Principal": "arn:aws:iam::ACCOUNT-B:user/USER-B"
}
]
}
然后,用户B可以复制文件:
aws s3 sync s3://BUCKET-A s3://BUCKET-B \
--source-region SOURCE-REGION \
--region DESTINATION-REGION
(您可能需要授予更多访问权限,我没有测试上述政策。)
存储桶位于不同区域这一事实不会影响权限,但它会影响发送命令的 。该命令被发送到目标区域,然后从源区域拉出。