EC2实例迁移-从海外区域迁移到国内区域
日期: 2022-08-29

AWS海外区域和国内区域是互相隔离的两套系统,它们之间的信息数据无法共享。所以直接在账户层面将无法对海外账号和国内账号设置权限来共享数据。

 

接下来,我们将通过海外区域创建的EC2实例制作成AMI镜像,利用S3存储桶和中转主机的aws-cli工具,将海外区域的EC2实例迁移到国内区域。

 

解决思路

 


  1. 将EC2实例导出为AMI镜像(海外账号)。
  2. 将该镜像存储到S3存储桶(海外账号)。
  3. 使用中转主机,将S3存储桶中的AMI镜像下载到中转主机。
  4. 中转主机重新配置登录国内账号,将下载好的AMI镜像上传到国内账号的S3存储桶。
  5. 还原AMI镜像。

 

实现过程

 


海外账号和国内账号均需创建AKSK

  1. 在AWS控制台界面创建Access keys (access key ID and secret access key)。
  2. 使用账号密码登录到AWS控制台主界面。
  3. 在主界面右上角点击你的用户名,出来下拉菜单,在下拉菜单界面点击My Security Credentials。
  4. 在Your Security Credentials界面当中,点击Access keys (access key ID and secret access key)栏目,然后点击Create New Access key。
  5. 在创建成功时会弹出对话框告诉你AKSK,记得把文件下载下来,因为这个文件只有在第一次创建时才能获取,以后是无法获取的。

 

| 注:以下操作均在中转主机上执行。这台主机可以是海外EC2实例、国内EC2实例、甚至可以是本地主机或者其他云平台的主机。

 

确保中主机安装aws-cli

执行以下命令安装aws-cli,此方式适用于Linux系统。

curl "<https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip>" -o "awscliv2.zip"

unzip awscliv2.zip

./aws/install

aws --version

 

使用aws-cli登海外账号

[root@localhost ~] aws configure

AWS Access Key ID [None]: # 输入海外账号的access key

AWS Secret Access Key [None]: # 输入海外账号的 secret key

Default region name [None]: us-east-1 # 你的默认区域

Default output format [None]: json # 输出内容格式

 

EC2建AMI

aws ec2 create-image --instance-id i-0fa1e28ba0e99b2f6 --name "ami-test" --description "ami test"

{

"ImageId": "ami-0591c2c1b99828acb"

}

 

建海外域的S3存并将镜像存到存

1. 创建海外区域的S3存储桶

aws s3api create-bucket --bucket s3-ami-test-source --region us-east-1

{

"Location": "/s3-ami-test-source"

}

2. 将AMI镜像存储到S3存储桶

aws ec2 create-store-image-task --image-id ami-0591c2c1b99828acb --bucket s3-ami-test-source

{

"ObjectKey": "ami-0591c2c1b99828acb.bin"

}

 

S3桶中的像文件下到中主机

aws s3 cp s3://s3-ami-test/ami-0591c2c1b99828acb.bin ./

 

使用AWS-CLI配置登录国内账号

[root@localhost ~] aws configure

AWS Access Key ID [None]: #输入国内账号的access key

AWS Secret Access Key [None]: # 输入国内账号的 secret key

Default region name [None]: cn-northwest-1 # 你的默认区域

Default output format [None]: json # 输出内容格式

 

国内区域的S3存并将镜像上到存

1. 创建国内区域的S3存储桶

aws s3api create-bucket --bucket s3-ami-test-destination --region cn-northwest-1 --create-bucket-configuration LocationConstraint=cn-northwest-1

{

"Location": "<http://s3-ami-test-destination.s3.cn-northwest-1.amazonaws.com.cn/>"

}

2. 将下载到中转主机本地的AMI镜像上传到国内区域的S3存储桶

aws s3 cp ami-0591c2c1b99828acb.bin s3://s3-ami-test-destination

 

S3桶中原AMI

aws ec2 create-restore-image-task --object-key ami-0591c2c1b99828acb.bin --bucket s3-ami-test-destination --name "ami-test"

{

"ImageId": "ami-0591c2c1b99828acb"

}

 

此时可以看到镜像创建还原成功。