文章目录
这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/120734216
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
AMI镜像从海外迁移至国内
目标 & 原因
目标
实现目标:
- 将海外区域的
AMI
(Amazon Machine Images
)镜像迁移到国内区域
原因
- 海外区域和国内区域是互相隔离的两套系统,它们之间的信息数据无法共享。所以
AMI
镜像无法直接在账户层面在海外账号和国内账号设置权限共享数据
解决思路
- 将
EC
实例卷导出为镜像(海外账号) - 将该镜像转移存储到
S3
存储通当中(海外账号) - 使用一台中转主机,这台主机可以是海外
EC2
实例、国内EC2
实例、甚至可以是本地主机或者其他云平台的主机。在该主机当中登录海外账号,然后将S3
存储桶中的IAM
镜像下载到中转主机当中。 - 在该中转主机当中重新配置登录国内账号,将该中转主机的本地
AMI
镜像上传到国内账号的S3
存储桶当中 - 从
S3
存储桶当中还原AMI
镜像
实现过程
使用AWS-CLI
登录海外账号
在AWS控制台界面创建Access keys (access key ID and secret access key)
- 使用账号密码登录到
AWS
控制台主界面 - 在主界面右上角点击你的用户名,出来下拉菜单,在下拉菜单界面点击
My Security Credentials
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ik1ABNGX-1634050432280)(images/image-20211012100429537.png)]
- 在
Your Security Credentials
界面当中,点击Access keys (access key ID and secret access key)
栏目,然后点击Create New Access key
此时
AKSK
用户访问密钥便创建成功了,在创建成功时会弹出一个方框告诉你AKSK
,记得把文件下载下来,因为这个文件只有在第一次创建时才能获取,以后是无法获取的。
确保中转主机安装aws-cli
- 查看
aws-cli
是否安装,执行以下命令
aws --version
-
因为我执行命令后提示
-bash: aws: command not found
,那么我要先安装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
查看cli
版本
[root@idys ~] aws --version
aws-cli/2.2.45 Python/3.8.8 Linux/3.10.0-1160.11.1.el7.x86_64 exe/x86_64.centos.7 prompt/off
此时显示版本,说明我的
aws-cli
安装成功
- 使用
aws-cli
登录账号
[root@idys ~] 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 # 输出内容格式
为EC
实例创建AMI
镜像
使用aws-cli
创建AMI
镜像
aws ec2 create-image --instance-id i-0fa8a21490aad44b9 --name "My Web server images" --description "An AMI for web server"
{
"ImageId": "ami-054b82c9d196f81f1"
}
将海外AMI 镜像存储到S3存储桶当中
使用aws-cli
创建s3
存储桶
aws s3api create-bucket --bucket idys-bucket --region us-east-1
{
"Location": "/idys-buckett"
}
使用aws-cli
将AMI
镜像存储到S3
存储桶当中
aws ec2 create-store-image-task --image-id ami-054b82c9d196f81f1 --bucket idys-bucket
{
"ObjectKey": "ami-054b82c9d196f81f1.bin"
}
--image-id
后接镜像ID
--bucket
后接存储桶名称
将S3存储桶中的镜像文件下载到中转主机
aws s3 cp s3://idys-bucket/ami-054b82c9d196f81f1.bin ./
最后下载完成后,可以看到文件已经存在
ls ami-054b82c9d196f81f1.bin
ami-054b82c9d196f81f1.bin
使用AWS-CLI配置登录国内账号
配置登录国内账号
AWS Access Key ID [****************IS4T]: **************************SJ5D # 填写国内账号的 access key
AWS Secret Access Key [****************VXxE]: **************************Ua0BA # 填写国内账号的 secret key
Default region name [us-east-1]: cn-northwest-1 # 填写 默认区域
Default output format [json]: json # 填写输出格式,默认为json
创建S3存储桶并将镜像上传到存储桶当中
创建S3存储桶
aws s3api create-bucket --bucket idys-bucket --region cn-northwest-1
An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
此时提示未指定区域限制,从而报错
我们将创建存储桶命令设置为
aws s3api create-bucket --bucket idys-bucket --region cn-northwest-1 --create-bucket-configuration LocationConstraint=cn-northwest-1
{
"Location": "http://idys-bucket.s3.cn-northwest-1.amazonaws.com.cn/"
}
此时存储桶创建成功
将下载到中转主机本地的AMI
镜像上传到国内区域的S3存储桶当中
aws s3 cp ami-054b82c9d196f81f1.bin s3://idys-bucket
从S3存储桶中还原AMI
镜像
使用AWS-CLI
还原AMI
镜像
aws ec2 create-restore-image-task --object-key ami-054b82c9d196f81f1.bin --bucket idys-bucket --name "migration-ami-foreign"
{
"ImageId": "ami-04c73462514648673"
}
使用
create-restore-image-task
指令将S3
存储桶文件还原为镜像
--object-key
参数指定对象名称
--bucket
指定存储桶名称
--name
指定还原后的镜像名称
"ImageId": "ami-04c73462514648673"
指明了还原后的镜像ID
此时可以看到镜像创建还原成功
--object-key
参数指定对象名称
--bucket
指定存储桶名称
--name
指定还原后的镜像名称
"ImageId": "ami-04c73462514648673"
指明了还原后的镜像ID
此时可以看到镜像创建还原成功
写在最后的话:
- 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
- 欢迎关注我的CSDN博客,IDYS’BLOG
- 持续更新内容:
linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算 - 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
- 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!