能否在同一条AWS CLI命令中使用两个配置文件跨账号同步S3桶?
跨AWS账号直接同步S3桶的实现方案
可以实现直接跨账号同步S3桶,无需本地中转,但AWS CLI不支持在单个s3 sync命令中同时指定两个不同的profile,需要通过配置跨账号权限来实现,以下是具体可行方案:
方法一:配置源桶跨账号访问权限,用目标账号执行同步
给源桶添加跨账号读取权限
登录持有s3://my-first-bucket的默认账号,给该桶添加如下桶策略,允许other_account对应的AWS账号下的IAM用户/角色读取源桶内的对象:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::目标账号ID:user/目标账号用户名" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-first-bucket/*" } ] }请将上述代码中的
目标账号ID和目标账号用户名替换为实际信息。用目标账号执行同步命令
切换到other_account的profile,直接执行跨桶同步:aws s3 sync s3://my-first-bucket/ s3://my-other-bucket --profile other_account此时目标账号已具备源桶的读取权限,AWS会直接在S3服务端完成数据同步,无需将文件下载到本地。
方法二:配置目标桶跨账号写入权限,用源账号执行同步
如果希望用默认账号发起同步,需要给目标桶s3://my-other-bucket添加桶策略,允许默认账号拥有写入权限,之后执行:
aws s3 sync s3://my-first-bucket/ s3://my-other-bucket --profile default
核心逻辑与方法一一致,仅权限配置的方向相反。
注意:执行同步操作的账号必须同时拥有源桶的读取权限和目标桶的写入权限,才能触发S3服务端的直接同步流程。
内容的提问来源于stack exchange,提问作者kevbonham
相关产品推荐
相关产品推荐

