使用 Image Builder 导入和导出虚拟机映像
当您从虚拟化环境中导出 VM 时,该过程会创建一个或多个磁盘容器文件,这些文件充当 VM 环境、设置和数据的快照。您可以使用这些文件导入 VM,并将其用作映像配方的基础映像。
对于 VM 磁盘容器,Image Builder 支持以下文件格式:
-
开放虚拟化归档 (OVA)
-
虚拟机磁盘 (VMDK)
-
虚拟硬盘 (VHD/VHDX)
-
原始
导入时使用磁盘来创建 Amazon Machine Image (AMI) 和 Image Builder 映像资源,这两者都可以用作自定义映像配方的基础映像。VM 磁盘必须存储在 S3 存储桶中才能导入。另外,也可以现有 EBS 快照中导入。
在 Image Builder 控制台中,您可以直接导入映像,然后在配方中使用输出映像或 AMI,也可以在创建配方或配方版本时指定导入参数。有关作为映像配方的一部分进行导入的更多信息,请参阅 虚拟机导入配置。
将 VM 导入 Image Builder
Image Builder 与 Amazon EC2 VM Import/Export API 集成,使导入过程能够在后台异步运行。Image Builder 会引用虚拟机导入中的任务 ID 来跟踪其进度,并创建一个 Image Builder 映像资源作为输出。这允许您在虚拟机导入完成之前在配方中引用 Image Builder 映像资源。
- Console
-
要使用 Image Builder 控制台导入虚拟机,请执行以下步骤:
常规
-
为基本映像指定一个唯一的名称。
-
指定基本映像的版本。采用以下格式:major.minor.patch
。
-
您也可以为基本映像输入可选的描述。
基本映像操作系统
-
选择与您的虚拟机操作系统平台匹配的映像操作系统 (OS) 选项。
-
从列表中选择与您的虚拟机版本相匹配的操作系统版本。
虚拟机导入配置
-
当您从虚拟化环境中导出虚拟机时,该过程会创建一个或多个磁盘容器文件。这些文件充当虚拟机环境、设置和数据的快照。您可以使用这些文件导入虚拟机作为映像配方的基本映像。有关在 Image Builder 中导入虚拟机的更多信息,请参阅 导入和导出 VM 映像。
要指定导入源的位置,请执行以下步骤:
导入源
在磁盘容器 1 部分中指定要导入的第一个虚拟机映像磁盘容器或快照的来源。
-
来源 — 可以是 S3 存储桶,也可以是 EBS 快照。
-
选择磁盘的 S3 位置 – 输入 Amazon S3 中存储磁盘映像的位置。要浏览位置,请选择浏览 S3。
-
要添加磁盘容器,请选择添加磁盘容器。
-
IAM 角色
要将 IAM 角色与您的虚拟机导入配置相关联,请从 IAM 角色下拉列表中选择该角色,或者选择创建新角色来创建一个新角色。如果您创建了新角色,IAM 角色控制台页面将在单独的标签页中打开。
-
高级设置 – 可选
以下设置可选:使用这些设置,您可以为导入创建的基本映像配置加密、许可、标签等。
基本映像架构
要指定虚拟机导入源的架构,请从架构列表中选择一个值。
加密
如果您的虚拟机磁盘映像已加密,则必须提供用于导入过程的密钥。要为导入指定 KMS 密钥,请从加密(KMS 密钥)列表中选择一个值。该列表包含您的账户在当前区域中有权访问的 KMS 密钥。
许可证管理
导入虚拟机时,导入过程会自动检测虚拟机操作系统并将相应的许可证应用于基本映像。根据您的操作系统平台,许可证类型如下:
要将使用 AWS License Manager 创建的许可证配置附加到您的基本映像,请从许可证配置名称列表中进行选择。有关许可证管理器的更多信息,请参阅使用 AWS License Manager 工作。
-
许可证配置包含基于您的企业协议条款的许可规则。
-
Linux 仅支持 BYOL 许可证。
标签(基本映像)
标签使用键值对为您的 Image Builder 资源分配可搜索的文本。要为导入的基本映像指定标签,请使用键和值框输入键值对。
要添加标签,请选择 Add tag(添加标签)。要删除标签,请选择 Remove tag(删除标签)。
- AWS CLI
-
要将虚拟机从磁盘导入 AMI 并创建可以立即引用的 Image Builder 映像资源,请在 AWS CLI 中执行以下操作:
-
使用 AWS CLI 中的 Amazon EC2 VM Import/Export import-image 命令启动 VM 导入。记下命令响应中返回的任务 ID。下一步中您将需要使用该值。有关更多信息,请参阅 VM Import/Export 用户指南 中的使用 VM Import/Export 将虚拟机作为映像导入。
-
创建 CLI 输入 JSON 文件
为了简化 AWS CLI 中使用的 Image Builder import-vm-image 命令,我们创建了一个 JSON 文件,当中包含我们要传递到命令中的所有导入配置。
JSON 文件中数据值的命名惯例遵循为 Image Builder API 操作请求参数指定的模式。要查看 API 命令请求参数,请参阅 EC2 Image Builder API 参考中的 ImportVmImage 命令。
要将数据值作为命令行参数提供,请参阅AWS CLI命令参考中指定的参数名。将 Image Builder import-vm-image 命令作为选项。
以下是我们在此示例中指定的参数的摘要:
-
名称(字符串,必填)— 要从导入中作为输出而创建的 Image Builder 映像资源的名称。
-
semanticVersion(字符串,必填)— 输出映像的语义版本,按以下格式指定版本,每个位置都有数值表示特定版本:<major>.<minor>.<patch>。例如,1.0.0
。要了解有关 Image Builder 资源的语义版本控制的更多信息,请参阅 Image Builder 中的语义版本控制。
-
描述(字符串)— 映像配方的描述。
-
平台(字符串,必填)— 导入的 VM 的操作系统平台。
-
vmImportTaskId(字符串,必填)— Amazon EC2 VM 导入过程中的 ImportTaskId
(AWS CLI)。Image Builder 会监控导入过程,以提取其创建的 AMI,并构建可立即用于配方的 Image Builder 映像资源。
-
clientToken(字符串,必填)— 用于确保请求的幂等性而提供的唯一、区分大小写的标识符。有关更多信息,请参阅 Amazon EC2 API 参考 中的确保幂等性。
-
标签(字符串映射)— 标签是附加到导入资源的键值对。最多允许 50 个键值对。
将文件另存为 import-vm-image.json
,以便在 Image Builder import-vm-image 命令中使用。
{
"name": "example-request",
"semanticVersion": "1.0.0",
"description": "vm-import-test",
"platform": "Linux",
"vmImportTaskId": "import-ami-01ab234567890cd1e",
"clientToken": "asz1231231234cs3z",
"tags": {
"Usage": "VMIE"
}
}
-
导入映像
使用您创建的文件作为输入并运行 import-vm-image 命令:
aws imagebuilder import-vm-image --cli-input-json file://import-vm-image.json
通过 AWS CLI 从您的映像构建中分配 VM 磁盘
在常规映像构建过程中,您可以使用 AWS CLI 中的 Image Builder 分配配置,设置将支持的 VM 磁盘格式文件分配到目标区域的 S3 存储桶。有关更多信息,请参阅 通过 AWS CLI 为输出 VM 磁盘创建分配设置。