You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跨AWS账号递归复制S3存储桶内容?

跨AWS凭证复制S3存储桶内容的解决方案

以下是几种无需本地中转的高效解决方案,覆盖不同工具场景:

1. AWS CLI v2 多配置文件直接同步(推荐)

AWS CLI v2支持直接指定源和目标的凭证配置文件,实现S3到S3的服务器端复制:

  • 先在~/.aws/credentials中配置两组凭证的profile:
    [foo-profile]
    aws_access_key_id = 你的源桶凭证AccessKey
    aws_secret_access_key = 你的源桶凭证SecretKey
    
    [bar-profile]
    aws_access_key_id = 你的目标桶凭证AccessKey
    aws_secret_access_key = 你的目标桶凭证SecretKey
    
  • 执行递归复制(sync自带增量同步,也可替换为cp --recursive实现全量复制):
    aws s3 sync s3://foo s3://bar --source-profile foo-profile --destination-profile bar-profile
    

2. AWS CLI v1 临时环境变量方案

若使用CLI v1(不支持--source-profile参数),可通过临时环境变量指定源凭证,默认用当前配置的目标凭证:

# 临时设置源桶凭证,执行复制命令
AWS_ACCESS_KEY_ID=源桶AccessKey AWS_SECRET_ACCESS_KEY=源桶SecretKey aws s3 cp s3://foo/ s3://bar/ --recursive --source-region 源桶区域 --dest-region 目标桶区域

3. 修正Rclone配置实现直接S3传输

你之前遇到的下载再上传问题,是因为未启用Rclone的S3服务器端复制功能:

  • 用rclone config分别创建两个S3远程(比如foo-s3和bar-s3),对应两组凭证
  • 执行复制时添加参数触发服务器端复制:
    rclone copy foo-s3: bar-s3: --recursive --s3-server-side-acl --s3-acl bucket-owner-full-control
    
    注:bucket-owner-full-control用于跨账户场景,确保目标桶所有者拥有对象权限。

4. S3跨账户复制(CAR)(适合长期同步)

如果需要持续同步而非一次性复制,可配置S3原生的跨账户复制规则:

  • 给源桶s3://foo添加桶策略,允许目标账户的IAM角色读取源桶对象
  • 在目标桶s3://bar的控制台中配置复制规则,指定源桶、复制范围及存储类
  • 配置完成后,S3会自动同步现有对象及后续新增对象,全程无需人工干预

权限注意事项

无论使用哪种方法,需确保:

  • 源凭证拥有s3:ListBucket和s3:GetObject权限
  • 目标凭证拥有s3:ListBucket、s3:PutObject和s3:PutObjectAcl权限

内容的提问来源于stack exchange,提问作者maxisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:00:22