Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用assumeRule在3个AWS帐户之间进行跨帐户访问_Amazon Web Services_Amazon S3_Aws Sdk_Amazon Iam - Fatal编程技术网

Amazon web services 使用assumeRule在3个AWS帐户之间进行跨帐户访问

Amazon web services 使用assumeRule在3个AWS帐户之间进行跨帐户访问,amazon-web-services,amazon-s3,aws-sdk,amazon-iam,Amazon Web Services,Amazon S3,Aws Sdk,Amazon Iam,我们在AWS-Account-a中提供了一项服务,该服务将使用ACL:'bucket owner full control'将一些文件复制到AWS-Account-B中的s3 bucket中。现在有一个AWS-Account-C已经从AWS-Account-B获得了一个assumeRule(附加了S3读访问策略),并且S3 bucket策略已经授予了AWS-Account-C规则的读访问权,所以问题是,AWS-Account-C:无法读取从AWS-Account-A上载的文件,只有可以读取使用A

我们在
AWS-Account-a
中提供了一项服务,该服务将使用
ACL:'bucket owner full control'
将一些文件复制到
AWS-Account-B
中的s3 bucket中。现在有一个AWS-Account-C已经从AWS-Account-B获得了一个assumeRule(附加了S3读访问策略),并且S3 bucket策略已经授予了AWS-Account-C规则的读访问权,所以问题是,AWS-Account-C:
无法读取从AWS-Account-A上载的文件,只有
可以读取使用AWS-Account-B本身上载的文件

我知道这是一场真正的比赛,但据我所知,这是一个所有权问题。bucket策略仅适用于bucket所有者拥有的对象,因此它就像,
X
拥有一些文件,他将其复制到
Y
,现在
Z
无法从
Y
获取它,因为它不属于
Y


如果以前有人遇到过这种问题,并且有了解决方案,我真的很感谢您能提供一些指导。

您的问题是,您使用Account-A将文件复制到Account-B拥有的存储桶中,但现在复制的文件归Account-A所有。这就是Account-C无法访问它们的原因。帐户-C没有所需的权限

正确的步骤是在Account-B中创建一个由Account-a承担的角色。然后在Account-a将文件复制到Account-B中的bucket之前,它承担Account-B角色。现在复制到bucket的文件将由Account-B拥有

对于当前在Account-B存储桶中的文件,在使用Account-B的凭据时执行就地复制。这将把所有权切换到帐户B

这里有一个就地复制的例子。注意:S3中没有数据通过互联网传输,因此执行速度很快

aws s3 cp s3://mybucket/mykey s3://mybucket/mykey --storage-class STANDARD
“--recursive”参数应用于整个密钥文件夹

警告:

1) 所有自定义元数据和现有权限都将丢失


2) 在执行此类命令之前,请确保您有数据备份。

您的问题是,您使用Account-a将文件复制到Account-B拥有的存储桶中,但现在复制的文件归Account-a所有。这就是Account-C无法访问这些文件的原因。帐户-C没有所需的权限

正确的步骤是在Account-B中创建一个由Account-a承担的角色。然后在Account-a将文件复制到Account-B中的bucket之前,它承担Account-B角色。现在复制到bucket的文件将由Account-B拥有

对于当前在Account-B存储桶中的文件,在使用Account-B的凭据时执行就地复制。这将把所有权切换到帐户B

这里有一个就地复制的例子。注意:S3中没有数据通过互联网传输,因此执行速度很快

aws s3 cp s3://mybucket/mykey s3://mybucket/mykey --storage-class STANDARD
“--recursive”参数应用于整个密钥文件夹

警告:

1) 所有自定义元数据和现有权限都将丢失


2) 在执行此类命令之前,请确保您有数据备份。

以便我们可以尝试再现您的情况,请显示您使用的策略(您可以删除敏感名称)以及复制文件时所采取的确切步骤(例如发出的命令)。以便我们可以尝试再现您的情况,请显示您使用的策略(您可以删除敏感名称)以及复制文件时采取的确切步骤(如发出的命令)。这是一个可能的答案。但是,如果您不能从帐户B中担任角色,那么在推送文件时,您必须从帐户a向帐户B授予完全权限。帐户B可以添加一条规则,拒绝任何不包含该权限的推送。请参阅使用S3对象所有权控制上载对象的所有权:这是一个可能的答案。但是,如果您不能从帐户B中担任角色,那么在推送文件时,您必须从帐户a向帐户B授予完全权限。帐户B可以添加一条规则,拒绝任何不包含该权限的推送。请参阅使用S3对象所有权控制上载对象的所有权: