在处理跨账户数据副本时遇到了一些困难。具体来说,我正尝试将 S3 存储桶从一个 AWS 账户(在 中eu-west-1
)克隆到另一个 AWS 账户(在 中eu-west-2
)。
我已尝试按照本指南设置存储桶复制,添加复制批处理操作来复制现有文件,并且还按照本指南尝试了 DataSync 作业。
尽管严格遵循了指南:
复制指标显示没有活动,并且 24 小时后目标存储桶仍然为空。
复制批处理操作因原因而中止
Job failure rate 100% is above 50%
。DataSync 作业的 CloudWatch 日志仅提供以下详细信息:
finished with status Unable to connect to S3 endpoint
我想知道我是否遗漏了指南中假设已经设置的一些先决条件;例如,在跨账户权限生效之前,是否需要在两个 AWS 账户之间建立某种信任关系?
即,帐户 987654321098 中的预期目标 S3 存储桶具有权限策略,其中包含此代码片段以识别源帐户中的操作角色:
"Sid": "DataSyncCreateS3LocationAndTaskAccess",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:role/source-account-datasync-s3-copy-role" }
..这就是目标账户信任来自其他账户的 IAM 角色所需要的全部内容吗?
这个问题的答案似乎是否定的——跨账户操作无需账户级别的任何特殊信任即可正常进行(至少对于 S3 而言)。
我对所关注的教程进行了进一步研究,发现各种帖子都提到这些说明对其他人也不起作用,因此最终按照此帖子中的说明将我的 IAM 用户从源帐户添加到目标存储桶的存储桶策略,然后作为源帐户用户:
aws s3 sync s3://sourcebucket s3://destinationbucket
- 效果很好。注 1:尝试保存对存储桶策略的更改时,在上述链接中给出的示例中添加了许多操作,我遇到了类似以下的错误:
action doesn't apply to any resources
;此问题的解决方法是将两个语句合并为一个,如本文所示。(我想也可以在双语句版本中细化个人..bucketname
和ARN 的操作列表。)..bucketname/*
注 2:AWS CLI 可能不是实现预期结果的最具成本效益的方式?但是截止日期迫在眉睫,它完成了工作。