由于公司与AWS签了项目合作,因此一些在阿里云上面的业务需要迁移到AWS云上面。但是由于系统运行了很久,因此有很多资源都不能在AWS上面直接重新部署,需要通过各种迁移工具来保证迁移的完整性以及效率。服务器方面的迁移工作我用的是CloudEndure。使用方法可以参照这篇。本次介绍的是使用AWS CLI实现Aliyun OSS迁移到AWS S3的方法。
  本次要用到的工具是Amazon-s3-resumable-upload,为GitHub上面的一个开源项目。包括单机版,无服务器版和集群版。因为源站是在阿里云,所以我们这里使用单机版来进行迁移任务。

1.迁移工具Amazon-s3-resumable-upload

  
  据GitHub项目地址介绍,单机版有以下几个特点:

1.单机运行

  能运行Python的地方都能运行,无Python环境也可使用打包版本。

2.自动遍历

  自动遍历下级子目录,也可以指定单一文件拷贝

3.断点续传

  不用担心网络中断或Down机

4.多线程

  充分压榨带宽

  单机版架构图如下:

OSStoS3

2.部署迁移环境

1.安装Python3 & SDK

  该工具需要先安装 AWS SDK boto3,如果需要从阿里云OSS拷贝,则还需要安装阿里 SDK oss2。注意这里安装的是Python3.如果不想一个个安装觉得麻烦的话,这里还有一键安装脚本ec2_init.sh

  yum update -y
  yum install git
  amazon-linux-extras install python3
  pip3 install --upgrade pip --user
  pip3 install boto3
  pip3 install oss2

2.配置访问凭证

  使用一个具有权限访问对应的S3的IAM角色,通过命令 aws configure 来键入Access_Key等,确保区域是和S3桶的区域相同。

3.下载并配置迁移脚本

  下载迁移脚本并确保两个文件在同一目录下。

  wget https://s3.cn-north-1.amazonaws.com.cn/myworkshop-lxy/oss-to-s3/s3_upload.py
  wget https://s3.cn-north-1.amazonaws.com.cn/myworkshop-lxy/oss-to-s3/s3_upload_config.ini

  修改其中的config文件。

  #credentials
  [default]
  region = <your region>
  aws_access_key_id = <your access key id>
  aws_secret_access_key = <your secret key>

  #OSS源设置
  ali_SrcBucket = "your bucket name"  # 阿里云OSS 源Bucket,对于 LOCAL_TO_S3/S3_TO_S3 则本字段无效
  ali_access_key_id = "xxxxxxxxxxx"  # 阿里云 RAM 用户访问密钥
  ali_access_key_secret = "xxxxxxxxxxxx"
  ali_endpoint = "oss-cn-beijing.aliyuncs.com"  # OSS 区域 endpoint,在OSS控制台界面可以找到

  如下图所示,该配置文件还可以设置更多细化的筛选等操作。但我们这里只修改两个地方,其他的都选择默认就好。

OSSmigration

3.进行任务迁移

  该迁移工具第一次是进行全量迁移,再次执行的话则是增量迁移。在运行迁移工具前首先验证一下AWS CLI是否正常工作。可以在EC2上执行命令aws s3 ls查看桶列表。

awss3ls

  然后执行命令

  python3.8 s3_upload.py --nogui

  由于我已经迁移过一次了,所以本次执行是增量迁移,已有的文件会显示已存在然后跳过。至此迁移任务完成,S3上已经完整复制了OSS上的内容。

S3mission