S3到S3使用不同账户转账?
我一直在阅读多篇文章,如this one关于如何使用从一个S3存储桶向另一个使用不同账户传输数据,但我仍然无法这样做。我相信这是因为我还没有完全掌握AWS中的account +权限设置的概念(例如iam account vs access key)。S3到S3使用不同账户转账?
我有给了我一个叫“富”用户和账号“123456789012”供应商 2个访问键来访问他们的S3存储“SourceBucket”欧盟 - 中部 - 1。我使用供应商提供的名为“sourceProfile”的访问密钥在我的计算机上创建了一个配置文件。我有我的S3调用“DestinationBucket”在我们东1,我设置桶策略如下。
{ "Version": "2012-10-17", "Id": "Policy123456789", "Statement": [ { "Sid": "Stmt1487222222222", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Foo" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DestinationBucket/", "arn:aws:s3:::DestinationBucket/*" ] } ] }
这里来的怪异的一部分。我可以列出这些文件,甚至使用以下命令行从“DestinationBucket”下载文件。
aws s3 ls s3://DestinationBucket --profile sourceProfile aws s3 cp s3://DestinationBucket/test ./ --profile sourceProfile
但是,当我试图把任何东西复制到使用该配置文件的“DestinationBucket”,我得到了拒绝访问错误。
aws s3 cp test s3://DestinationBucket --profile sourceProfile --region us-east-1 upload failed: ./test to s3://DestinationBucket/test An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
难道我成立了斗政策特别行动右侧的列表中?从目的地到本地工作的ls和cp如何从本地到目的地桶工作,但cp不起作用?
因为AWS使它成为parent account holder must do the delegation。
实际上,除了委托人访问该特定访问密钥用户之外,您可以选择在存储区上执行复制,如here所述。
我以为@mootmoot建议的文章中的第2.3步是缺少的部分,但我仍然在调用PutObject操作时发生错误(AccessDenied):访问被拒绝。 –
@FooBarbaz:你需要阅读整个文档。步骤2.3是不够的 – mootmoot
我改变了方法,现在它工作。与其使用供应商创建的帐户从桶中获取对象并将对象放在桶上,我正在使用能够将对象放入桶中的帐户。设置是相同的,但是相反(例如,在供应商的存储桶中设置允许我的帐户访问它的存储桶策略)。不知道为什么原始方法不起作用,但没有时间进一步调查。 –
你可以暂时将Action改为'“s3:*”'来测试它是否有效?如果是这样,那么可能会有一些额外的操作,aws s3 cp命令在目标存储桶中需要。 –
是的我试过s3:*并得到相同的结果 –
那么它应该肯定会工作!我建议暂时将它改为'*'的主体以查看它是否有效。这将有助于缩小可能的错误。 –