我们在AWS-Account-A
中有一项服务,它将把一些带有ACL: 'bucket-owner-full-control'
的文件复制到AWS-Account-B
的s3存储桶中。现在有一个AWS-Account-C
,它已经有一个来自AWS-Account-B的assumeRule(它附加了一个S3读取访问策略(,并且S3 bucket策略已经提供了对AWS-Account-C规则的读取访问,所以问题是,AWS-Account-C:Can't
读取从AWS-Account-A上传的文件,并且仅CAN
阅读使用AWS-Account-B本身上传的文件。
我知道这是房地产公司的同谋,但据我所知,这是一个所有权问题。bucket策略只适用于bucket所有者拥有的对象,所以这就像X
拥有一些文件,他将其复制到Y
,现在Z
无法从Y
获得它,因为它不属于Y
。
如果有人以前面对过这种sencarios并有解决方案,我真的很感激它能提供一些指导。
您的问题是使用Account-A将文件复制到Account-B拥有的存储桶中,但现在复制的文件归Account-A所有。这就是为什么Account-C无法访问它们。Account-C没有所需的权限。
正确的程序是在账户B中创建一个由账户a承担的角色。然后,在Account-A将文件复制到Account-B中的bucket之前,它将承担Account-B的角色。现在,复制到bucket的文件将归Account-B所有。
对于当前在Account-B存储桶中的文件,在使用Account-B的凭据时执行就地复制。这将把所有权切换到Account-B。
这是一个就地复制的例子。注意:S3中没有数据通过互联网传输,因此执行速度很快。
aws s3 cp s3://mybucket/mykey s3://mybucket/mykey --storage-class STANDARD
要应用于整个密钥文件夹的"--recursive"参数。
警告:
1( 所有自定义元数据和现有权限都将丢失。
2( 在执行这样的命令之前,请确保您有数据备份。