

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Image Builder 导入和导出虚拟机映像
<a name="vm-import-export"></a>

当您从虚拟化环境中导出虚拟机时，该过程会创建一个或多个磁盘容器文件，这些文件充当虚拟机环境、设置和数据的快照。您可以使用这些文件导入 VM，并将其用作映像配方的基础映像。要导出，您可以创建虚拟机磁盘文件作为自定义映像版本的输出，然后分发这些文件。

对于 VM 磁盘容器，Image Builder 支持以下文件格式：
+ 开放虚拟化归档 (OVA)
+ 虚拟机磁盘 (VMDK)
+ 虚拟硬盘 (VHD/VHDX)
+ Raw

导入时使用磁盘来创建 Amazon Machine Image (AMI) 和 Image Builder 映像资源，这两者都可以用作自定义映像配方的基础映像。VM 磁盘必须存储在 S3 存储桶中才能导入。另外，也可以现有 EBS 快照中导入。

在 Image Builder 控制台中，您可以直接导入映像，然后在配方中使用输出映像或 AMI，也可以在创建配方或配方版本时指定导入参数。有关作为映像配方的一部分进行导入的更多信息，请参阅 [虚拟机导入配置](create-image-recipes.md#import-vm-recipe-console-config)。

## 将 VM 导入 Image Builder
<a name="vmie-import"></a>

Image Builder 与 Amazon EC2 VM Import/Export API 集成，使导入过程能够在后台异步运行。Image Builder 会引用虚拟机导入中的任务 ID 来跟踪其进度，并创建一个 Image Builder 映像资源作为输出。这允许您在虚拟机导入完成之前在配方中引用 Image Builder 映像资源。

------
#### [ Console ]

要使用 Image Builder 控制台导入虚拟机，请执行以下步骤：

1. 打开 EC2 Image Builder 控制台，网址为[https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)。

1. 从导航窗格中，选择**映像**。

1. 要打开导入对话框，请选择**导入图像**。

1. 输入以下**一般**信息：
   + 为您的图片指定一个唯一的**名称**。
   + 指定基本映像的**版本**。采用以下格式：`major.minor.patch`。

1. 选择导入类型：**虚拟机导入**。

1. 在**导入映像**页面上提供以下每个部分的详细信息。完成操作后，选择**导入映像**。

**基本映像操作系统**

1. 选择与您的虚拟机操作系统平台匹配的**映像操作系统 (OS)** 选项。

1. 从列表中选择与您的虚拟机版本相匹配的**操作系统版本**。

**虚拟机导入配置**

1. 当您从虚拟化环境中导出虚拟机时，该过程会创建一个或多个磁盘容器文件。这些文件充当虚拟机环境、设置和数据的快照。您可以使用这些文件导入虚拟机作为映像配方的基本映像。有关 VMs在 Image Builder 中导入的更多信息，请参阅[导入和导出 VM 映像](#vm-import-export)。

   要指定导入源的位置，请执行以下步骤：

    

**导入源**  
在**磁盘容器 1 **部分中指定要导入的第一个虚拟机映像磁盘容器或快照的来源。

   1. **来源** — 可以是 S3 存储桶，也可以是 EBS 快照。

   1. **选择磁盘的 S3 位置** – 输入 Amazon S3 中存储磁盘映像的位置。要浏览位置，请选择**浏览 S3**。

   1. 要添加磁盘容器，请选择**添加磁盘容器**。

    

1. 

**IAM 角色**  
要将 IAM 角色与您的虚拟机导入配置相关联，请从 **IAM 角色**下拉列表中选择该角色，或者选择**创建新角色**来创建一个新角色。如果您创建了新角色，IAM 角色控制台页面将在单独的标签页中打开。

    

1. 

**高级设置 – *可选***

   以下设置可选：使用这些设置，您可以为导入创建的基本映像配置加密、许可、标签等。

**基本映像架构**  
要指定虚拟机导入源的架构，请从**架构**列表中选择一个值。

**加密**  
如果您的虚拟机磁盘映像已加密，则必须提供用于导入过程的密钥。要为导入指定 KMS 密钥，请从**加密（KMS 密钥）**列表中选择一个值。该列表包含您的账户在当前区域中有权访问的 KMS 密钥。

**许可证管理**  
导入虚拟机时，导入过程会自动检测虚拟机操作系统并将相应的许可证应用于基本映像。根据您的操作系统平台，许可证类型如下：
   + **包含许可证** — 适用于您的平台的相应 AWS 许可证将应用于您的基本映像。
   + **自带许可（BYOL）** - 保留源自虚拟机的许可证（如果适用）。

   要将使用创建的许可证配置附加 AWS License Manager 到您的基础映像，请从**许可证配置名称**列表中进行选择。有关 License Manager 的更多信息，[请参阅使用 AWS License Manager]()
**注意**  
许可证配置包含基于您的企业协议条款的许可规则。
Linux 仅支持 BYOL 许可证。

**标签（基本映像）**  
标签使用键值对为您的 Image Builder 资源分配可搜索的文本。要为导入的基本映像指定标签，请使用**键**和**值**框输入键值对。

   要添加标签，请选择 **Add tag**（添加标签）。要删除标签，请选择 **Remove tag**（删除标签）。

------
#### [ AWS CLI ]

要将虚拟机从磁盘导入 AMI 并创建可以立即引用的 Image Builder 映像资源，请在 AWS CLI中执行以下操作：

1. 使用中的 Amazon EC2 虚拟机 Import/Export **import-image**命令启动虚拟机导入 AWS CLI。记下命令响应中返回的任务 ID。下一步中您将需要使用该值。有关更多信息，请参阅《虚拟机* Import/Export 用户指南》中的 “使用虚拟机导入/导出” 将虚拟机*[作为映像导](https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html)入。

    

1. 

**创建 CLI 输入 JSON 文件**

   为了简化中使用的 Image Builder **import-vm-image** 命令 AWS CLI，我们创建了一个 JSON 文件，其中包含我们要传递到命令中的所有导入配置。
**注意**  
JSON 文件中数据值的命名约定遵循为 Image Builder API 操作请求参数指定的模式。要查看 API 操作请求参数，请参阅 I *EC2 mage Builder API 参考*中的[ImportVmImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_ImportVmImage.html)操作。  
要将数据值作为命令行参数提供，请参阅*AWS CLI 命令参考*中指定的参数名。将 Image Builder **import-vm-image** 命令作为选项。

   以下是我们在此示例中指定的参数的摘要：
   + **名称**（字符串，必填）— 要从导入中作为输出而创建的 Image Builder 映像资源的名称。
   + **semanticVersion**（字符串，必填）— 输出映像的语义版本，按以下格式指定版本，每个位置都有数值表示特定版本：<major>.<minor>.<patch>。例如 `1.0.0`。要了解有关 Image Builder 资源的语义版本控制的更多信息，请参阅 [Image Builder 中的语义版本控制](ibhow-semantic-versioning.md)。
   + **描述**（字符串）— 映像配方的描述。
   + **平台**（字符串，必填）— 导入的 VM 的操作系统平台。
   + **vmImportTaskID**（字符串，必填）— Amazon EC2 虚拟机导入过程中的 `ImportTaskId` (AWS CLI)。Image Builder 会监控导入过程，以提取其创建的 AMI，并构建可立即用于配方的 Image Builder 映像资源。
   + **标签**（字符串映射）— 标签是附加到导入资源的键值对。最多允许 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",
       "tags": {
       	"Usage": "VMIE"
       }
   }
   ```

1. 

**导入映像**

   使用您创建的文件作为输入并运行 **[import-vm-image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/import-vm-image.html)** 命令：

   ```
   aws imagebuilder import-vm-image --cli-input-json file://import-vm-image.json
   ```
**注意**  
JSON 文件路径开头必须包含 `file://` 符号。
JSON 文件的路径应遵循运行命令的基本操作系统的相应约定。例如，Windows 使用反斜杠 (\$1) 引用目录路径，而 Linux 和 macOS 使用正斜杠 (/)。

------

## 从您的映像版本中分发虚拟机磁盘 AWS CLI
<a name="vmie-export"></a>

在常规映像构建过程中，您可以使用 AWS CLI中的 Image Builder 分配配置，设置将支持的 VM 磁盘格式文件分配到目标区域的 S3 存储桶。有关更多信息，请参阅 [示例：为来自的输出 VM 磁盘创建分发设置 AWS CLI](cr-upd-ami-distribution-settings.md#cli-create-vm-dist-config)。