将 VMware 中的 Ubuntu 12.04 映像导入成 Amazon EC2 AMI
- 2019-11-20
本文字数:5428 字
阅读完需:约 18 分钟
要在 Amazon EC2 中使用您的 VM,您必须首先将其从虚拟化环境中导出,然后使用 AWS Command Line Interface (AWS CLI) 或 API 工具将其导入 Amazon EC2。(AWS Console不支持从VM导入AWS的操作功能。)
从总体上看,要将VM导入到Amazon EC2中,需要经过以下五个步骤:
1. 安装 AWS CLI。
2. 为 VM 导入 Amazon EC2 做准备。
3. 从虚拟化环境中导出 VM。
4. 将 VM 导入 Amazon EC2。
5. 在 Amazon EC2 中启动实例。
本次实验使用VMware Workstation 10,把Ubuntu原生镜像ubuntu-12.04.5-desktop-amd64.iso导入到VMware Workstation 10。自行个性化操作后,利用VMware Workstation 10导出OVF映像的功能,获得VM的vmdk文件。并用AWS CLI,以流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式把它导入到Beijing Region的AMI当中。(AWS并不完全支持所有基于Windows或Linux操作系统的系统版本,具体的支持列表请查看http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/VMImportPrerequisites.html)。
**一.安装AWS CLI**
在本地安装AWS CLI具体请查看http://docs.aws.amazon.com/zh_cn/cli/latest/userguide/installing.html。需要注意的是,安装完客户端后,需要在AWS账户的IAM->用户->(目标用户)->安全证书 中创建并下载访问安全密钥,根据下载的Excel文件中的AWS Access Key ID和AWS Secret Access Key,配置好AWS CLI。具体请看以下截图。
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0530-1.png)
**二.为 VM 导入 Amazon EC2 做准备**
把个性化操作后的Ubuntu VM从VMware Workstation 10导出前,需要在VM中进行以下几步重要的操作:
1. 在VM中启用SSH远程访问,并保证VM防火墙允许外部访问VM。虽然允许基于密码的SSH,但为安全起见,建议使用公共密钥登录。
2. 在VM中配置一个非root用户。虽然允许root登录,但为了安全起见,建议配置一个非root用户。
3. 确保您的 Linux VM 将 GRUB(传统 GRUB)或 GRUB 2 作为其启动加载程序。
4. 确保您的 Linux VM 使用下列根文件系统之一:EXT2、EXT3、EXT4、Btrfs、JFS 或 XFS。
5. 关闭所有反病毒软件,从您的 VMware 虚拟机上卸载 VMware 工具。
6. 保持您的网络设置为 DHCP 而不是静态 IP 地址。
在本次的操作中,由于我们使用原生的Ubuntu ISO文件,因此一般情况下,我们只需要操作上述的第1、2、6点即可。
**三.从虚拟化环境中导出 VM**
AWS支持下列四种映像格式:
1. 用于导入磁盘和 VM 的 RAW 格式。
2. 固定和动态虚拟硬盘 (VHD) 映像格式,该格式与 Microsoft Hyper-V 和 Citrix Xen 虚拟化产品兼容。目前不支持 VHDX 映像。VM Export 仅支持动态虚拟硬盘 (VHD)。不支持固定 VHD。
3. **流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式**,该格式可与 VMware ESX 和 VMware vSphere 虚拟化产品兼容。**只能将通过 VMware 中的 OVF 导出过程创建的 VMDK 文件导入 Amazon EC2**。
4. 启动虚拟装置 (OVA) 映像格式,该格式支持将映像与多个硬盘一起导入。
AWS官方文档中提到Citrix Xen、Microsoft Hyper-V 和 VMware vSphere这三款虚拟化环境软件。其中VMware vSphere支持导出OVF格式和OVA格式。而最常用的VMware Workstation系列软件,则只支持导出OVF格式。考虑到VMware vSphere是一款操作系统软件,而VMware Workstation是一款应用软件,为了简化复杂程度,我们使用VMware Workstation 10,也就决定了我们使用第三种的映像格式。
当在VM上个性化操作后,关闭VM,然后在**VMware Workstation 10菜单栏中的“文件”->”导出为OVF”中把选中的VM导出到磁盘中**。导出后一共有.mf、.ovf、.vmdk三个文件,个别操作系统的VM会出现.iso原生镜像文件。其中.mf文件是一些文件SHA的集合,主要起到防止映像文件被非法用户篡改的验证作用。.ovf文件相当于配置文件,它保证了映像文件vmdk、资源文件iso与虚拟机domain配置之间的正确对应。.vmdk文件是具体的映像资源。在这里,**我们只需要把.vmdk文件上传到AWS S3的bucket即可**。
**四.将 VM 导入 Amazon EC2**
在这一步中,我们需要使用AWS CLI操作S3中的.vmdk文件,把该文件转换为AMI。在这个过程当中,我们所使用的CLI命令import-image需要在我们的账户中创建名为vmimport的角色,并为该角色配置相关的策略和为使用IAM身份登录的用户配置权限后(http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/VMImportPrerequisites.html),才能够执行特定的操作。因此在转换为AMI前,我们需要先操作我们的账户。下面会逐步介绍。
**1. 使用 aws iam create-role 命令创建名为 vmimport 的角色,并向 VM Import/Export 提供对该角色的访问权。**
**具体命令:**
`aws iam create-role --role-name vmimport --assume-role-policy-document [](http://trust-policy.json/)`
其中trust-policy.json文件的内容为:
`{`
` "Version":"2012-10-17",`
` "Statement":[`
` {`
` "Sid":"",`
` "Effect":"Allow",`
` "Principal":{`
` "Service":"vmie.amazonaws.com"`
` },`
` "Action":"sts:AssumeRole",`
` "Condition":{`
` "StringEquals":{`
` "sts:ExternalId":"vmimport"`
` }`
` }`
` }`
` ]`
`}`
**特别注意事项:**
(1) 必须将外部 ID 命名为vmimport,不能是其他的名字。
(2) trust-policy.json文件当中的”Version”并非是用户自定义版本号,而是AWS中vmimport的版本号,因此请保留”Version”:”2012-10-17″不变。
**2. 为角色vmimport创建策略。**
**具体命令:**
`aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document [](https://role-policy.json/)`
其中role-policy.json文件的内容为:
`{`
` "Version":"2012-10-17",`
` "Statement":[`
` {`
` "Effect":"Allow",`
` "Action":[`
` "s3:ListBucket",`
` "s3:GetBucketLocation"`
` ],`
` "Resource":[`
` "arn:aws-cn:s3:::vm.vincentqiu.cn"`
` ]`
` },`
` {`
` "Effect":"Allow",`
` "Action":[`
` "s3:GetObject"`
` ],`
` "Resource":[`
` "arn:aws-cn:s3:::vm.vincentqiu.cn/*"`
` ]`
` },`
` {`
` "Effect":"Allow",`
` "Action":[`
` "ec2:ModifySnapshotAttribute",`
` "ec2:CopySnapshot",`
` "ec2:RegisterImage",`
` "ec2:Describe*"`
` ],`
` "Resource":"*"`
` }`
` ]`
`}`
**特别注意事项:**
(1) 同样地,要求保留role-policy.json文件中的”Version”:”2012-10-17″不变。
(2) 需要特别注意上述role-policy.json文件中红色标注的两行,分别有两个注意事项:第一,如果VM映像所在的S3为中国区内,则需要以“arn:aws-cn:s3”开头标注资源;如果VM映像所在的S3为中国区外的标准AWS区域,则只需要使用一般的“arn:aws:s3”开头标注资源。第二,上述的vm.vincentqiu.cn为本人的VM映像在S3中的bucket名字,用户可根据情况替换成自己的bucket名字。
**3. 为使用IAM身份登录的用户配置权限。**
如果您以 AWS Identity and Access Management (IAM) 用户身份登录,那么您的 IAM 策略中需要以下权限才能导入或导出 VM。
`{`
` "Version": "2012-10-17",`
` "Statement": [`
` {`
` "Effect": "Allow",`
` "Action": [`
` "s3:ListAllMyBuckets"`
` ],`
` "Resource": "*"`
` },`
` {`
` "Effect": "Allow",`
` "Action": [`
` "s3:CreateBucket",`
` "s3:DeleteBucket",`
` "s3:DeleteObject",`
` "s3:GetBucketLocation",`
` "s3:GetObject",`
` "s3:ListBucket",`
` "s3:PutObject"`
` ],`
` "Resource": ["arn:aws:s3:::mys3bucket","arn:aws:s3:::mys3bucket/*"]`
` },`
` {`
` "Effect": "Allow",`
` "Action": [`
` "ec2:CancelConversionTask",`
` "ec2:CancelExportTask",`
` "ec2:CreateImage",`
` "ec2:CreateInstanceExportTask",`
` "ec2:CreateTags",`
` "ec2:DeleteTags",`
` "ec2:DescribeConversionTasks",`
` "ec2:DescribeExportTasks",`
` "ec2:DescribeInstanceAttribute",`
` "ec2:DescribeInstanceStatus",`
` "ec2:DescribeInstances",`
` "ec2:DescribeTags",`
` "ec2:ImportInstance",`
` "ec2:ImportVolume",`
` "ec2:StartInstances",`
` "ec2:StopInstances",`
` "ec2:TerminateInstances",`
` "ec2:ImportImage",`
` "ec2:ImportSnapshot",`
` "ec2:DescribeImportImageTasks",`
` "ec2:DescribeImportSnapshotTasks",`
` "ec2:CancelImportTask"`
` ],`
` "Resource": "*"`
` }`
` ]`
`}`
**4. 创建新的导入映像任务。**
经历了上述角色和账户操作后,我们现在终于可以使用 aws ec2 import-image 创建新的导入映像任务!
**具体命令:**
`aws ec2 import-image --description "Ubuntu 12.04 vmdk" --disk-containers [](https://containers.json/)`
其中containers.json文件的内容为:
`[{`
` "Description": "VM import first CLI task",`
` "Format": "vmdk",`
` "UserBucket": {`
` "S3Bucket": "vm.vincentqiu.cn",`
` "S3Key": "OVA_ubuntu_12.04/Ubuntu12.04-disk1.vmdk"`
` }`
`}]`
如果该VM具有多个显示磁盘,import-image命令也支持具有多个显示磁盘的VM导入Amazon EC2中。在这种情况下,containers.json文件的内容类似于:
`[{`
` "Description": "First CLI task",`
` "Format": "vmdk",`
` "UserBucket": {`
` "S3Bucket": "my-import-bucket",`
` "S3Key": "my-windows-2008-vm-disk1.vmdk"`
` }`
`},`
` {`
` "Description": "Second CLI task",`
` "Format": "vmdk",`
` "UserBucket": {`
` "S3Bucket": "my-import-bucket",`
` "S3Key": "my-windows-2008-vm-disk2.vmdk"`
` }`
`}]`
**特别注意事项:**
(1) 上述命令中的description均为注解部分,用户可以根据自己的需要进行修改。
(2) 上述红色字体中的”Format“的值取决于第三步中导出VM的映像格式。如果导出的VM映像格式为ova,请把”Format“的值改为ova。本次实验使用的是流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式,所以”Format“的值为vmdk。
(3) 上述红色字体中的”S3Bucket“的值指的是VM映像所在S3的bucket名字,而”S3Key“的值指的是VM映像所在bucket中的具体路径名,用户可以根据自身情况进行修改。需要注意的是,设定”S3Key“的值时,请注意S3中文件夹的存在。请按照“文件夹/子文件夹/……/文件名”的格式进行填写。
当执行完该命令后,如果没有错误发生,CLI会返回任务响应。在任务相应中含有一个ImportTaskId的值,我们保存下来,方便下面查询使用。
**5.检查您的导入映像任务的状态**
**具体命令:**
`aws ec2 describe-import-image-tasks --cli-input-json "{ \"ImportTaskIds\": [\"import-ami-fggrs8es\"], \"NextToken\": \"abc\", \"MaxResults\": 10 } "`
**注意事项:**
(1) 上述命令中的红色部分为导入映像任务的id值,用户根据上一步保留的ImportTaskId值自行替换,即可查询该任务的情况。
(2) 当使用上述命令查询任务状态时,根据AWS的处理进度,返回任务响应中的Status依次为“Pending”、“Converting”、“Updating”、“Updated”、“Preparing AMI”等。整个的处理过程持续10+分钟,请用户耐心等待。隔一段时间再次查询后,如果Status为“Completed”,则表示映像转换完成,用户可以在EC2的AMI镜像中找到它。
**五.在 Amazon EC2 中启动实例**
当生成AMI镜像后,我们就能够通过EC2按照正常的方法创建对应的实例。但需要注意的是:您的实例将只有一个 Ethernet 网络接口。**另外**,对于不同的操作系统,import-image命令对其Licence、最低存储、Internet协议、实例类型等方面有不同的限制和要求,具体请查看http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/VMImportPrerequisites.html的《要求和限制》部分。
作者介绍:
邓明轩
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/Deng+Damon.jpg)
亚马逊AWS解决方案架构师;拥有15年IT 领域的工作经验,先后在IBM,RIM,Apple 等企业担任工程师、架构师等职位;目前就职于AWS,担任解决方案架构师一职。喜欢编程,喜欢各种编程语言,尤其喜欢Lisp。喜欢新技术,喜欢各种技术挑战,目前在集中精力学习分布式计算环境下的机器学习算法。
邱越俊
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/%E9%82%B1%E8%B6%8A%E4%BF%8A.jpg)
亚马逊AWS解决方案架构师实习生,擅长Web开发,熟悉使用Java、Javascript、Html5、Mysql数据库,曾在多个互联网公司从事软件平台开发工作,对计算机网络架构、云平台的开发和部署有一定的经验。
原文链接:
https://amazonaws-china.com/cn/blogs/china/ubuntu-ec2/
更多内容推荐
AWS 的运营管理类服务
AWS管理运营类典型服务
2022-06-20
大中华区联合企业捷成集团在 AWS 上使用 F5 防御恶意 Web 攻击
为了确保在当今竞争激烈的商业环境中占据领先地位,集团在 AWS 环境中利用 F5 高级 Web防火墙(F5 Advanced Web Application Firewall, WAF) 来实现快速扩展和增强安全性,同时显著降低了成本
2023-02-27
更多 openEuler 镜像加入 AWS Marketplace!
自2023年7月openEuler 22.03 LTS SP1正式登陆AWS Marketplace后,openEuler社区一直持续于在AWS上提供更多版本。
2023-08-16
StarRocks on AWS 回顾 | Data Everywhere 系列活动深圳站圆满结束
7 月 30 日,StarRocks 解决方案架构师王天宜受邀出席 AWS User Group Data Everywhere 主题活动,分享了 StarRocks 如何对实时数仓进行极速统一分析。
2022-08-10
11. 结构型 - 组合模式 Compose
2023-02-15
助力企业出海!TDengine Cloud 正式入驻 AWS Marketplace
近日,全托管的时序数据云平台 TDengine Cloud 正式入驻 AWS Marketplace(海外区),用户可通过 AWS Marketplace 轻松实现 TDengine Cloud 的订阅与部署。
2023-07-28
AWS DataSync 支持在 AWS、Google Cloud 和 Azure 之间移动数据
亚马逊最近宣布,AWS DataSync现在支持将Google Cloud Storage和Azure Files存储作为存储位置。数据服务的这两个新选项有助于数据在AWS中的移入和移出,但数据传输费用可能仍然是一个限制条件。
24|生产稳定的秘密武器:如何实施蓝绿发布?
在实际的生产环境中,为了提高发布的可靠性,我们通常需要借助发布策略来更加精细地控制流量切换。在几种发布策略中,蓝绿发布是较为简单且容易理解的一种。
2023-02-01
38|GitOps 为什么成为云原生交付的事实标准?
这节课,我们来看一下 GitOps 的历史和发展过程。
2023-03-06
如何获得一场黑客马拉松的胜利?听听 AWS 特约评委怎么说
5月9日,以“码力集结,与众不凡”为主题的FinClip Hackathon 圆满结束!本次开发大赛吸引了来自各行业的2000多名移动开发者汇聚一堂,150位参赛选手同台竞技,共同探索「小程序 」技术的能力边界。
2022-05-30
AWS CodeWhisperer 上手初体验安装与使用
代码生成器最近有点多,为了提高效率最近在我的 VSCode 上先后安装了 Bito、Codeium、Tabnine AI Assistant 等等,还有本文中刚有 AWS 推出的 CodeWhisperer。接下来就来看看这款 AI 代码生成器如何使用吧。
2023-06-06
21|应用定义:如何使用 Helm 定义应用?
这节课,我们还是以示例应用为例子,把它从原始的 Kubernetes Manifest 改造成 Helm 应用。
2023-01-25
AWS Inspector
介绍一个AWS的安全类服务 - Amazon Inspector
2022-07-14
AWS Config
介绍AWS运营管理类服务 - AWS Config
2022-07-15
37|我该从哪些方向了解云原生领域?
这节课,我会结合自己对云原生产品的实践和总结,带你全面了解云原生,让你未来能够更好地进行技术选型。
2023-03-03
开源工具系列 3:Prowler
Prowler 是一个命令行工具,可帮助您进行 AWS 安全评估、审计、强化和事件响应。
2023-02-06
39|GitOps 最佳实践,ArgoCD 凭什么脱颖而出?
ArgoCD 能在众多 CD 工具中脱颖而出,除了 GitOps 大背景的推动以外,其自身也具备非常多优秀的特性。
2023-03-08
AWS CEO Adam Selipsky 演讲 Keynote @ re:Levent2022
Join Adam Selipsky, CEO of Amazon Web Services, as he looks at the ways that forward-thinking builders are transforming industries and even future, powered by AWS. He highlights innovations in data, infrastructure, security, and more that
2022-12-05
在 Jetbrains 的 ide 里面使用 Amazon Q 帮助开发
使用 Amazon CodeWhisperer 作为替代 GitHub Copilot 的可能性。
AWS Trusted Advisor
介绍运营管理类服务AWS Trusted Advisor。
2022-07-14
推荐阅读
AWS Cloudshell 现在可以访问 Docker Engine
加餐|尝鲜 Gateway API:更强大、更灵活、面向未来的 Ingress
2023-11-20
10- 分布式文件系统简介
2023-09-28
24|提示语工程(六):超越智能,让你的 AI 系统成为全知超人
2023-10-13
AWS 云服务器 EC2 实例实现 ByConity 快速部署
2023-11-20
AWS 上关于云计算,大数据,人工智能的介绍
2023-08-29
亚马逊云科技 CEO 将离职:“云的未来是光明的”
电子书
大厂实战PPT下载
换一换 韩冬振 | 众安金融 高级架构师
韦青 | 微软(中国)公司 首席技术官
高鹏 | 京东 技术与数据智能部架构师
评论