先在本地安装Oracle VM VirtualBox,安装好虚拟机(调整优化系统各个参数)此处不再赘述,IP设置为自动获取,最后关机导出,格式为“开放式虚拟化格式 1.0”,如下图,导出完以后上传到S3存储上;
如果镜像超过1G推荐使用S3 Browser上传,直接浏览器上传会出现上传100%以后,提示失败。
使用 pip 安装 AWS CLI:
pip install awscli --upgrade --user
--upgrade 选项通知 pip 升级已安装的任何必要组件。--user 选项通知 pip 将程序安装到用户目录的子目录中,以避免修改您的操作系统所使用的库。
将/root/.local/bin路径加入环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/.local/bin
卸载AWS CLI:
pip uninstall awscli
将Python2.x更新到Python3.x即可完整使用AWS服务,低版本的python部分服务不兼容
更多安装方法参考:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html
配置AWS CLI:
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
第一次运行的时候需要配置CLI,AWS CLI 会提示您输入四条信息,并将它们存储在名为 default 的配置文件(一个设置集合)中。每当您运行的 AWS CLI 命令未明确指定要使用的配置文件时,就会使用该配置文件。
参考:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-configure.html
创建服务角色:
1、创建名为 trust-policy.json 的文件:
{
"Version": "2019-04-01",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
2、使用 create-role 命令创建名为 vmimport 的角色,并向 VM Import/Export 提供对该角色的访问权。请确保指定 trust-policy.json 文件的完整路径,并且为路径添加 file:// 前缀。
aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
3、创建名为 role-policy.json 的文件并编写下面的策略,其中,disk-image-file-bucket 为存储磁盘映像的存储桶:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource":[
"arn:aws-cn:s3:::hongsin",
"arn:aws-cn:s3:::hongsin/*"
]
},
{
"Effect":"Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource":"*"
}
]
}
其中
"arn:aws-cn:s3:::disk-image-file-bucket",
"arn:aws-cn:s3:::disk-image-file-bucket/*"
arn:aws-cn:s3为AWS中国区域,disk-image-file-bucket 为存储磁盘映像的存储桶:为存储桶的名称
4、使用put-role-policy命令将策略挂载到之前创建的角色,请指定 role-policy.json 文件位置的完整路径
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
导入 OVA
创建containers.json文件:
[
{
"Description": "win2008R2",
"Format": "ova",
"UserBucket": {
"S3Bucket": "hongsin",
"S3Key": "win2008R2.ova"
}
}]
开始导入
aws ec2 import-image --description "win2008R2" --license-type BYOL --disk-containers file://containers.json
{
"Status": "active",
"Description": "win2008R2",
"SnapshotDetails": [
{
"UserBucket": {
"S3Bucket": "hongsin",
"S3Key": "win2008R2.ova"
},
"DiskImageSize": 0.0,
"Format": "OVA"
}
],
"Progress": "2",
"StatusMessage": "pending",
"ImportTaskId": "import-ami-0e4a7239420c77ab0"
}
查看导入进度:
aws ec2 describe-import-image-tasks --import-task-ids import-ami-0e4a7239420c77ab0
{
"ImportImageTasks": [
{
"Status": "active",
"Description": "win2008R2",
"SnapshotDetails": [
{
"Status": "active",
"UserBucket": {
"S3Bucket": "hongsin",
"S3Key": "win2008R2.ova"
},
"DiskImageSize": 3383259136.0,
"Format": "VMDK"
}
],
"Progress": "28",
"StatusMessage": "converting",
"ImportTaskId": "import-ami-0e4a7239420c77ab0"
}
]
}
等到状态变成completed即导入完成
aws ec2 describe-import-image-tasks --import-task-ids import-ami-0e4a7239420c77ab0
{
"ImportImageTasks": [
{
"Status": "completed",
"LicenseType": "AWS",
"Description": "win2008R2",
"ImageId": "ami-0d2e94d768524fc51",
"Platform": "Windows",
"Architecture": "x86_64",
"SnapshotDetails": [
{
"Status": "completed",
"DeviceName": "/dev/sda1",
"Format": "VMDK",
"DiskImageSize": 3383259136.0,
"SnapshotId": "snap-0e164f09dc71359fa",
"UserBucket": {
"S3Bucket": "hongsin",
"S3Key": "win2008R2.ova"
}
}
],
"ImportTaskId": "import-ami-0e4a7239420c77ab0"
}
]
}
现在可以到“我的AMI”里面找到创建的镜像,然后就可以使用自己的镜像创建机器了;
使用 describe-import-image-tasks 命令返回导入任务的状态。
包括的状态值如下:
active — 正在运行导入任务。
deleting — 正在取消导入任务。
deleted — 导入任务已取消。
updating — 导入状态正在更新。
validating — 正在验证导入的映像。
validated — 已验证导入的映像。
converting — 正在将导入的映像转换成 AMI。
completed — 导入任务已完成,并且 AMI 已准备就绪,随时可以使用。
Tag标签:「镜像 aws ami s3」更新时间:「2021-11-04 11:26:06」阅读次数:「919」