Amazon web services AWS S3跨帐户访问的GetObject错误
我是AWSAccountC的所有者,需要列表并获得由另一个人/团队拥有的BucketName的权限 创建的bucket策略附在下面。AccountA和AccountB的策略已经存在,我添加了AccountC的策略,如下所示Amazon web services AWS S3跨帐户访问的GetObject错误,amazon-web-services,amazon-s3,permissions,Amazon Web Services,Amazon S3,Permissions,我是AWSAccountC的所有者,需要列表并获得由另一个人/团队拥有的BucketName的权限 创建的bucket策略附在下面。AccountA和AccountB的策略已经存在,我添加了AccountC的策略,如下所示 { "Version": "2012-10-17", "Statement": [ { "Sid": "AccessA"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccessA",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::AccountA:root",
"arn:aws:iam::AccountA:user/ABC-Prod"
]
},
"Action": [
"s3:GetObject",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::BucketName/*",
"arn:aws:s3:::BucketName"
]
},
{
"Sid": "AccessB",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::AccountB:user/service-user",
"arn:aws:iam::AccountB:role/BatchUserRole"
]
},
"Action": "*",
"Resource": [
"arn:aws:s3:::BucketName/*",
"arn:aws:s3:::BucketName"
]
},
{
"Sid": "AccessC",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountC:root"
},
"Action": "s3:List*",
"Resource": "arn:aws:s3:::BucketName"
},
{
"Sid": "AccessD",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountC:root"
},
"Action": "s3:Get*",
"Resource": "arn:aws:s3:::BucketName/*"
}
]
}
我可以使用
aws s3 ls BucketName
然而,当我尝试
aws s3 cp——递归BucketName/folderName/,它给我一个拒绝访问错误
调用GetObject操作时发生错误(AccessDenied):拒绝访问
在bucket上启用了Block public access,但是我认为它不会影响,因为bucket策略已经添加
尝试以多种方式写入策略,但错误仍然存在。有人能帮我理解我在这里遗漏了什么吗?非常感谢除非对对象设置了ACL Bucket owner完全控制,否则Bucket策略不会应用于其他帐户拥有的对象。我已经被这个问题困扰了很多次,但从来没有发现它被清晰地记录在案……@jordanm此bucket策略被添加到我需要在帐户C中访问的bucket中,jordanm说如果bucket中的对象不属于拥有该bucket的帐户,则bucket策略无关紧要-这仅适用于外部帐户执行了
PutObject
操作。有关如何强制bucket所有者访问对象的信息,请参见。导致AccessDenied的更常见原因是您无法访问用于加密/解密S3数据的KMS密钥-您是否启用了KMS的SSE?并且您确实需要通过跨帐户访问,您需要访问源帐户和目标帐户中的S3。除了我已经发布的链接之外,你也需要通过这两个链接,我非常确定你的问题通过这两个链接都得到了解决。