Amazon web services S3到S3使用不同账户转账?

Amazon web services S3到S3使用不同账户转账?,amazon-web-services,amazon-s3,aws-cli,Amazon Web Services,Amazon S3,Aws Cli,我已经读过多篇文章,比如关于如何使用不同帐户将数据从一个S3存储桶传输到另一个S3存储桶,但我仍然无法做到这一点。我确信这是因为我还没有完全掌握AWS中帐户+权限设置的概念(例如iam帐户与访问密钥) 我有一个供应商给了我一个名为“Foo”的用户和账号“123456789012”,带有两个访问键,可以访问eu-central-1中的S3存储桶“SourceBucket”。我使用供应商提供的访问密钥在我的机器上创建了一个配置文件,名为“sourceProfile”。在us-east-1中,我的S3

我已经读过多篇文章,比如关于如何使用不同帐户将数据从一个S3存储桶传输到另一个S3存储桶,但我仍然无法做到这一点。我确信这是因为我还没有完全掌握AWS中帐户+权限设置的概念(例如iam帐户与访问密钥)

我有一个供应商给了我一个名为“Foo”的用户和账号“123456789012”,带有两个访问键,可以访问eu-central-1中的S3存储桶“SourceBucket”。我使用供应商提供的访问密钥在我的机器上创建了一个配置文件,名为“sourceProfile”。在us-east-1中,我的S3名为“DestinationBucket”,我将bucket策略设置为以下内容

{
“版本”:“2012-10-17”,
“Id”:“保单12345678901344”,
“声明”:[
{
“Sid”:“STMT148722222”,
“效果”:“允许”,
“委托人”:{
“AWS”:“arn:AWS:iam::123456789012:user/Foo”
},
“行动”:[
“s3:PutObject”,
“s3:PutObjectAcl”,
“s3:GetObject”,
“s3:ListBucket”
],
“资源”:[
“arn:aws:s3:::DestinationBucket/”,
“arn:aws:s3:::DestinationBucket/*”
]
}
]
}

奇怪的部分来了。我可以使用以下命令行列出文件,甚至可以从“DestinationBucket”下载文件

aws s3 ls s3://DestinationBucket--profile sourceProfile
aws s3 cp s3://DestinationBucket/test./--配置文件源配置文件

但是,当我试图使用配置文件将任何内容复制到的“DestinationBucket”中时,我遇到了拒绝访问错误

aws s3 cp测试s3://DestinationBucket--profile sourceProfile--region us-east-1
上载失败:./test to s3://DestinationBucket/test调用PutObject操作时发生错误(AccessDenied):访问被拒绝


我是否制定了桶政策,尤其是行动清单,对吗?从目的地到本地的ls和cp如何工作,但从本地到目的地的cp存储桶却不工作?

因为AWS提供了这样一种方式


实际上,除了将访问权委托给特定的访问密钥用户之外,您还可以选择在bucket上进行复制,如上所述

您能否暂时将操作更改为
“s3:*”
,以测试其是否有效?如果是这样,那么目标存储桶中可能需要一些额外的操作
aws s3 cp
命令。是的,我尝试了s3:*并且得到了相同的结果,这时它肯定会工作!我建议暂时将其更改为
*
的主体,以查看其是否有效。这将有助于缩小可能出现的错误。我认为@mootmoot建议的文章中的步骤2.3是缺少的部分,但调用PutObject操作时仍然会出现相同的
错误(AccessDenied):拒绝访问
@FooBarbaz:您需要通读整个文档。第2.3步还没有完成,我改变了方法,现在可以了。我没有使用供应商创建的帐户从他们的bucket中获取对象并将对象放在我的bucket中,而是使用能够将对象放在我的bucket中的帐户。设置相同,但相反(例如,在供应商的bucket上设置bucket策略,允许我的帐户访问该策略)。不知道为什么最初的方法不起作用,但是没有时间进一步研究。@FooBarbaz委托部分非常棘手。AWS只显示其工作方式,而不显示其他方式(例如,供应商提供bucky访问密钥)。