使用 AWS CLI 将2T数据从 S3 存储桶复制到其他账户和区域
文章目录
【注意】最后更新于 August 17, 2024,文中内容可能已过时,请谨慎使用。
一般在公司运营中不涉及公司主体变更或者跟换云服务厂商的事情,一般都不会对静态资源服务做迁移,不巧我就遇到了前者,21年公司被收购其中一个尾巴工作,近期才算是处理干净,对运营了9年+公司(2015年创)的 AWS S3 中静态资源作迁移,光想想就很刺激,这里记录一下事情处理经过。
任务目标
为了确保整个流程丝滑(用户无感知)不影响用户体验,又需要保证数据不丢失,需要先完成增量数据的自动复制,资源上传至 A 账户 S3 存储桶后,自动复制到 B 账号的 S3 存储桶,等待将 A 账号 S3 存储桶下所有资源全量的迁移完成后,再将上传入口切换到新存储桶。
快速梳理一下任务目标
- 配置 AWS A 账号 S3 的存储桶完成,自动复制到 B 账号 S3 的存储桶
- 使用 AWS CLI 将 AWS A 账号下 S3 中的资源转移至 AWS B 账号下 S3
- 配置 AWS B 账户下 S3 新 CDN 加速,承载静态新流量的加速服务
- 切换静态资源上传阀门至 B 账号下 S3,并切换全站 CDN 加速地址为 B 账号的 CDN
通过查询了解到 AWS 提供 AWS CLI 工具,可以将一个账号下桶资源同步至另外一个账户,如何做到再 AWS CLI
工具同步的同时,新上传的至 AWS A 账号的资源也会自动同步至 AWS B 账号,以保资源不丢失,可以参考这个S3 Batch Replication 将一个 S3 存储桶的内容自动复制到另一个 S3 存储桶,无需任何手动干预,源存储桶和目标存储桶可以位于相同 AWS 账户 或不同区域中。
这里我们主要是记录使用 AWS CLI
完成一次性迁移任务。
配置步骤
配置前需要具备两个AWS 账号的权限,详细参考官方文档
默认生成的临时凭证的过期时间为1h,再执行大量同步数据时是不够的,需要再 B账号更改会话时间,最长支持12h设定,通过参数 duration-seconds
代入,即可生成12h的临时凭证。
|
|
|
|
- source_bucket_name 源存储桶,即在账户 A 中创建的 S3 存储桶名称
- destination_bucket_name 目标存储桶,即在账户 B 中创建的 S3 存储桶名称
注意事项
- AWS CLI 提供的是迁移工具,但是迁移中产生的流量和请求次数是收费的,本次迁移费用41$,以下是我们的 AWS 迁移大约400万次的 Request
- AWS s3 sync 命令迁移中中断后,有自动检查能力,但检查会消耗一定时间,如果文件太多,一次同步预计会超会话时间,建议指定文件夹迁移,多开两个进程窗口处理
迁移前费用
迁移后费用
最后迁移后的数据超过 2T
文章作者 BING
上次更新 2024-08-17