AWS AMI海外镜像迁移至国内

作者:ezmsp易云服科技公有云架构师杨美志

前言

AWS海外区域和国内区域是互相隔离的两套系统,海外账号与国内账号之间的信息数据无法共享。所以AMI镜像无法直接在账户层面在海外账号和国内账号设置权限共享数据,但在实际工作中为保证海外国内业务系统的一致性,海外系统与国内系统需保持一致,因此需要将海外AMI迁移至大陆region。

解决方案

  1. 将EC2实例转换为AMI镜像(海外账号)
  2. 将镜像打包压缩转移转存到S3存储桶(海外账号)
  3. 将打包压缩的AMI镜像下载到本地
  4. 将本地AMI镜像上传到国内账号的S3存储桶当中
  5. 从S3存储桶中还原AMI镜像
  6. 使用还原的AMI镜像创建EC2实例

操作步骤

将需制作成AMI镜像的EC2实例关机,选中实例双击鼠标,选择“映像和模板”“创建映像”。

AWS AMI海外镜像迁移至国内

填写镜像名称与描述,选择磁盘大小。

AWS AMI海外镜像迁移至国内

点击“创建映像”完成镜像的创建

AWS AMI海外镜像迁移至国内

待镜像变成可用后可往后继续操作

AWS AMI海外镜像迁移至国内

为用户创建访问密钥(海外账户),用于登录CLI

AWS AMI海外镜像迁移至国内

选择“命令行界面(CLI)”

AWS AMI海外镜像迁移至国内

默认即可,直接创建访问密钥

AWS AMI海外镜像迁移至国内

使用AWS-CLI登录账户(国外账户),AWS CLI安装参考
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html

aws configure
AWS Access Key ID [****************725J]: AKIAR6XXRZOOUGL7BJLI
AWS Secret Access Key [****************HyYS]: uZQ5IcbygSjwDCZKdVYO3/mrOxQS5il7lE3gv8Q
Default region name [us-east-1]: us-west-2
Default output format [json]: json

创建海外存储桶

aws s3api create-bucket --bucket ymz-ami-us  --region us-west-2
{
    "Location": "/ymz-ami-us"
}

将AMI镜像存储到S3存储桶当中

aws ec2 create-store-image-task --image-id ami-0d2fee5ff1a2da2e1 --bucket ymz-ami-us
{
    "ObjectKey": "ami-0d2fee5ff1a2da2e1.bin"
}

–image-id 后接镜像ID

–bucket 后接存储桶名称

将S3存储桶的镜像文件下载到本地

命令行下载

aws s3 cp s3://idys-bucket/ami-0d2fee5ff1a2da2e1.bin D:下载

控制台下载

AWS AMI海外镜像迁移至国内

提前创建好访问密钥,使用AWS-CLI登录账户(国内账户),

aws configure
AWS Access Key ID [****************BJLI]: AKIAZ5VPSJK46BUL4XV2D
AWS Secret Access Key [****************gv8Q]: CYZmApDSKNJKDhhepDSvgTdw8bZOTb+O9fh9Cx1Rwqj+mS
Default region name [us-west-2]: cn-northwest-1
Default output format [json]: json

创建存储桶

aws s3api create-bucket --bucket ymz-ami-ch  --region cn-northwest-1
{
    "Location": "/ymz-ami-ch"
}

将镜像文件上传到国内S3存储桶

aws s3 cp D:下载ami-0d2fee5ff1a2da2e1.bin  s3://ymz-ami-ch

使用CLI命令create-restore-image-task指令将S3存储桶文件还原为镜像

aws ec2 create-restore-image-task --object-key ami-0d2fee5ff1a2da2e1.bin --bucket ymz-ami-ch --name "yangmeizhi-rocky-linux-8.7-ami"
{
    "ImageId": "ami-0b843c4088409409d"
}

–object-key参数指定对象名称

–bucket指定存储桶名称

–name指定还原后的镜像名称

“ImageId”: “ami-0b843c4088409409d”指明了还原后的镜像ID

登录AWS 控制台,在EC2左侧菜单栏找到AMI,根据AMI ID找到还原的AMI镜像,点击进去之后选择右上角“从AMI启动实例”创建一台新实例

AWS AMI海外镜像迁移至国内

创建完成之后通过通过EC2公网IP远程连接至AMI创建的实例,连接成功

AWS AMI海外镜像迁移至国内

发表评论

您的电子邮箱地址不会被公开。