我有3个AWS帐户:
- S3所有者
- 账户A
- 账户B
我有一个由";S3所有者";具有bucket策略的帐户,以允许a和B帐户对bucket和对象具有完全访问权限。我还设置了ACL,这样A和B帐户也可以完全访问对象。
我试图让账户A或B将对象上传到bucket,但允许另一个账户复制。然而,我一直收到拒绝访问的异常。我会使用lambda将对象上的ACL设置为与bucket(所有3个ACL(相同,但这需要在帐户a和B中都运行lambda,必须确定它是否是所有者才能设置ACL。有没有更简单的方法来实现这一点?
我和你也有同样的问题。我看到bucket可以完全访问这些对象。我尝试了2种方法将帐户B上传的对象复制到帐户A:
- 设置bucket策略以允许帐户A读取bucket中的任何内容-仍然获得访问拒绝异常
- 使用假定角色让帐户A读取bucket中的任何内容。-这成功地读取了对象,但复制失败(因为我所扮演的角色没有对帐户A写入权限(
我想知道这两种授予跨帐户权限的方式之间有什么区别。。。
当一个对象在另一个帐户拥有的Amazon S3存储桶中创建/复制时,重要的是指定:
ACL = bucket-owner-full-control
这将对象"赋予"拥有bucket的帐户。
如果没有指定这一点,那么对象(奇怪地(由源帐户"拥有",并且(更奇怪的是(拥有bucket的帐户通常甚至无法从自己的bucket中删除对象!
此外,仅供参考,要授予对帐户A和B的访问权限,您可以简单地使用Bucket Policy。没有必要对ACL做任何事情。(事实上,除了bucket-owner-full-control
和使用public-read
公开单个对象之外,很少需要使用ACL