本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从亚马逊机器映像(AMI)直接导出 VM
若您希望在虚拟化环境中部署新的标准化实例,基于亚马逊机器映像(AMI)导出 VM 文件将非常有用。您可以将大部分 AMI 导出到 Citrix Xen、Microsoft Hyper-V 或 VMware vSphere。
当您导出映像时,会针对您存储所导出 VM 所用的存储桶按照标准 Amazon S3 费率向您收费。此外,对 Amazon EBS 快照的临时使用也会产生少量费用。有关 Simple Storage Service(Amazon S3)定价的更多信息,请参阅 Amazon Simple Storage Service 定价
先决条件
要从 Amazon EC2 导出 VM,首先必须满足以下先决条件。
-
安装 Amazon CLI。有关更多信息,请参阅 Amazon Command Line Interface 用户指南。
提示
在支持的 Amazon Web Services 区域中,您还可以使用Amazon CloudShell,以实现可从 Amazon Web Services Management Console 直接启动并且已经预先通过身份验证的浏览器式 shell。
-
创建 Amazon S3 存储桶用于存储导出的映像或者选择现有的存储桶。存储桶必须位于您想要导出 VM 的区域。此外,存储桶必须属于您在其中执行导出操作的 Amazon Web Services 账户。有关 S3 存储桶的更多信息,请参阅 Amazon Simple Storage Service 用户指南。
-
创建命名为
vmimport
的 IAM 角色。有关更多信息,请参阅 所需的服务角色。
映像导出的注意事项
导出映像和卷存在以下限制:
-
您必须将映像导出为您的虚拟化环境支持的以下映像格式之一:
-
虚拟硬盘 (VHD),该格式可与 Citrix Xen 和 Microsoft Hyper-V 虚拟化产品兼容。
-
流优化型 ESX 虚拟机磁盘 (VMDK),该格式可与 VMware ESX 和 VMware vSphere 版本 4、5 和 6 相兼容。
-
RAW 格式。
-
-
当您尝试导出实例时,用于启动该实例的基础 AMI 必须存在。如果您已删除 AMI,则导出失败。
-
VM Import/Export 仅支持在将其导出的同一 Amazon Web Services 账户 将 VM 导出到 Amazon S3 存储桶。
-
导出操作不支持混合配置。必须为 BIOS 或 UEFI 启用 GRUB2,但不能同时为两者都启用。
-
您不能导出包含 Amazon 提供的第三方软件的映像。例如,VM Export 无法导出 Windows 或 SQL Server 映像或通过 Amazon Web Services Marketplace 中的映像创建的任何映像。
-
您不能导出在块储存设备映射中包含加密 EBS 快照的映像。
-
您只能导出在块储存设备映射中指定的 EBS 数据卷,而不能导出在实例启动后附加的 EBS 卷。
-
如果您从另一 Amazon 账户共享映像,则不能从 Amazon EC2 导出它。
-
您不能同时为同一 AMI 执行多个导出映像任务。
-
默认在每个区域中,您最多可以同时进行 5 个转换任务。此限制最多可调至 20。
-
不支持卷大小超过 1 TiB 的 VM。
-
您可以将卷导出到未加密的 Amazon S3 存储桶或者导出到使用 SSE-S3 加密的存储桶。不能导出到使用 SSE-KMS 加密的 S3 存储桶。
启动导出映像任务
若要导出映像,请使用 export-image 命令。使用以下 S3 密钥将导出的文件写入指定的 S3 存储桶:前缀 exp ort-ami-id。 格式(例如, my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk)。
aws ec2 export-image --image-id
ami-id
--disk-image-formatVMDK
--s3-export-location S3Bucket=my-export-bucket
,S3Prefix=exports/
监控导出映像任务
要监控图像的导出,请使用以下describe-export-image-tasks命令:
aws ec2 describe-export-image-tasks --export-image-task-ids export-ami-
1234567890abcdef0
以下为响应示例。所示状态为 active
,表明导出任务正在进行。当状态为 completed
时,表示映像可供使用。
{
"ExportImageTasks": [
{
"ExportImageTaskId": "export-ami-1234567890abcdef0"
"Progress": "21",
"S3ExportLocation": {
"S3Bucket": "my-export-bucket",
"S3Prefix": "exports/"
},
"Status": "active",
"StatusMessage": "updating"
}
]
}
取消导出映像任务
如果需要,可以使用以下cancel-export-task命令取消正在导出的图像。
aws ec2 cancel-export-task --export-task-id export-ami-
1234567890abcdef0
如果导出任务完成或正在传输最后一个磁盘映像,则该命令将失败且会返回错误。