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

跨账户S3数据迁移求助:无权限改策略,拥有EC2及自有S3桶

分步指导:无权限修改策略下的S3跨账户数据迁移

没问题,我来给你一步步拆解这个迁移方案——既然你没法修改任何桶或IAM策略,那咱们就完全基于手里的凭证和EC2实例来做,全程不需要调整任何策略配置,直接用AWS CLI的同步功能搞定。

步骤1:在EC2上配置双账户凭证

你需要同时访问客户的S3桶和自己的桶,所以得在EC2上存两套合法凭证:

  • 先登录到你的EC2实例(用SSH或者AWS Session Manager都行)
  • 在当前用户的主目录下创建.aws文件夹(如果还没有的话):
    mkdir -p ~/.aws
    
  • 创建credentials文件,把两个账户的凭证分别放进去:
    [customer-s3]
    aws_access_key_id = 客户给的Access Key
    aws_secret_access_key = 客户给的Secret Key
    
    [my-s3]
    aws_access_key_id = 你自己的Access Key
    aws_secret_access_key = 你自己的Secret Key
    
    保存文件后,一定要修改权限防止其他人读取:
    chmod 600 ~/.aws/credentials
    

步骤2:先验证两边的访问权限

别着急直接迁移,先确认凭证能正常访问两个桶:

  • 测试客户的桶:
    aws s3 ls s3://客户的桶名 --profile customer-s3
    
  • 测试自己的桶:
    aws s3 ls s3://你的桶名 --profile my-s3
    

如果都能列出桶里的文件,说明凭证没问题;要是报错,先检查凭证是否输错,或者客户给的凭证有没有至少s3:ListBucket和s3:GetObject权限(毕竟你没法改策略,客户必须给你这两个权限才能拉数据)。

步骤3:用s3 sync批量迁移数据

这是最省心的方法,AWS CLI的sync命令会自动增量同步,只传新的或改了的文件,还能保留元数据:

aws s3 sync s3://客户的桶名 s3://你的桶名 --source-profile customer-s3 --profile my-s3
  • --source-profile指定用客户的凭证访问源桶
  • --profile指定用你自己的凭证访问目标桶

要是数据量很大?后台运行不中断

如果要迁移的文件特别多,别直接在SSH窗口跑,用nohup让它在后台运行,就算SSH断了也不影响:

nohup aws s3 sync s3://客户的桶名 s3://你的桶名 --source-profile customer-s3 --profile my-s3 > sync_log.txt 2>&1 &

之后想看进度的话,直接看日志:

tail -f sync_log.txt

步骤4:核对迁移结果

迁移完一定要验证,避免漏文件:

  • 统计客户桶的文件数和总大小:
    # 文件数
    aws s3 ls s3://客户的桶名 --recursive --profile customer-s3 | wc -l
    # 总大小(GB)
    aws s3 ls s3://客户的桶名 --recursive --profile customer-s3 | awk '{sum += $3} END {print sum/1024/1024/1024 " GB"}'
    
  • 再统计你自己桶的对应数值:
    aws s3 ls s3://你的桶名 --recursive --profile my-s3 | wc -l
    aws s3 ls s3://你的桶名 --recursive --profile my-s3 | awk '{sum += $3} END {print sum/1024/1024/1024 " GB"}'
    

两边数值一致,就说明迁移成功了。

几个关键注意点

  • 安全第一:EC2上的凭证文件要管好,迁移完最好删掉客户的凭证段,或者直接删除.aws/credentials文件,别留隐患。
  • 提速技巧:如果EC2和客户的S3桶不在同一个区域,尽量换个同区域的EC2实例,跨区域传输速度会快很多;要是客户的桶开了Transfer Acceleration也可以用,但这个需要客户那边配置,你没法改的话就忽略。
  • 加密文件处理:如果客户桶里有SSE-KMS加密的文件,那客户给的凭证必须有对应KMS密钥的解密权限,否则你拉不了这些文件,得让客户确认一下权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:03