

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

# EC2 Image Builder 的工作原理
<a name="how-image-builder-works"></a>

当您使用 EC2 Image Builder 控制台创建自定义图像管道时，系统会指导您完成以下步骤。

1. **指定管道详细信息**-输入有关您管道的信息，例如名称、描述、标签和运行自动构建的计划。您也可以选择手动构建。

1. **选择配方**-在构建 AMI 或构建容器映像之间进行选择。对于这两种类型的输出映像，您可以输入配方的名称和版本，选择基础映像，然后选择要添加的组件以进行构建和测试。您也可以选择自动版本控制，以确保您的基础映像始终使用最新的可用操作系统 (OS) 版本。容器配方还定义了 Dockerfiles 以及输出 Docker 容器映像的目标 Amazon ECR 存储库。
**注意**  
组件是映像配方或容器配方所消耗的构建基块。例如，安装软件包、安全强化步骤和测试。选定的基本映像和组件组成了镜像配方。

1. **定义基础架构配置** — Image Builder 在您的账户中启动 EC2 实例，以自定义图像并运行验证测试。基础设施配置设置为在构建 AWS 账户 过程中将在您的中运行的实例指定基础设施详细信息。

1. **定义分配设置**-在构建完成并通过所有测试后，选择要将映像分配到的 AWS 区域。管道会自动将您的映像分配到它运行构建的区域，并且您可以为其他区域添加映像分配。

您根据自定义基础映像构建的映像位于您的 AWS 账户。您可以输入生成计划，以便配置镜像管道以生成更新和修补的映像版本。在生成完成后，您可以通过 [Amazon Simple Notification Service (SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 接收通知。除了生成最终映像外，Image Builder 控制台向导还会生成一个可用于现有版本控制系统和持续 integration/continuous 部署 (CI/CD) 管道的配方，以实现可重复的自动化。您可以共享和创建新的配方版本。

**Topics**
+ [AMI 元素](#ami-image-elements)
+ [组件管理](#ibhow-component-management)
+ [创建的资源](#image-builder-resources)
+ [分配](#image-builder-distribution)
+ [共享资源](#ibhow-sharing)
+ [合规](#ibhow-compliance)

## AMI 元素
<a name="ami-image-elements"></a>

Amazon 系统映像 (AMI) 是一种预配置的虚拟机 (VM) 映像，其中包含用于部署 EC2 实例的操作系统和软件。

AMI 包括以下元素：
+ 虚拟机根卷的模板。当您启动 Amazon EC2 虚拟机时，根设备卷包含用于启动实例的映像。在使用实例存储时，根设备是通过 Amazon S3 中的模板创建的实例存储卷。有关更多信息，请参阅 [Amazon EC2 根设备音量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html)。
+ 在使用时，根设备是通过 EBS [快照创建的 EBS 卷](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html)。
+ 启动权限决定了 AWS 账户 可以通过 AMI 启动 VMs 的权限。
+ [块储存设备映射](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html)数据，用于指定在启动后附加到实例的卷。
+ 每个区域、每个账户的唯一[资源标识符](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resource-ids.html)。
+ [元数据](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)负载（例如标签）和属性（例如区域、操作系统、架构、根设备类型、提供程序、启动权限、根设备存储以及签名状态）。
+ Windows 映像的 AMI 签名，用于防止未经授权的篡改。有关更多信息，请参阅[实例身份文档](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-identity-documents.html)。

## 组件管理
<a name="ibhow-component-management"></a>

EC2 Image Builder 使用组件管理应用程序 AWS Task Orchestrator and Executor (AWSTOE)，它可以帮助您协调复杂的工作流程、修改系统配置以及使用基于 YAML 的脚本组件测试系统。由于它 AWSTOE 是一个独立的应用程序，因此不需要任何其他设置。它可以在任何云基础设施和本地运行。要开始 AWSTOE 将其用作独立应用程序，请参阅[手动设置以开发自定义组件 AWSTOE](toe-get-started.md)。

Image Builder 用于 AWSTOE 执行所有实例上的活动。其中包括在拍摄快照之前构建和验证映像，以及在创建最终映像之前测试快照以确保其按预期运行。有关 Image Builder AWSTOE 如何使用管理其组件的更多信息，请参阅[使用组件自定义 Image Builder 映像](manage-components.md)。有关创建组件与 AWSTOE的详细信息，请参阅 [Image Builder 如何使用 AWS Task Orchestrator and Executor 应用程序管理组件](toe-component-manager.md)。

### 映像测试
<a name="ibhow-testing"></a>

在创建最终映像之前，您可以使用 AWSTOE 测试组件来验证映像，并确保其按预期运行。

通常，每个测试组件由一个 YAML 文档构成，此文档包含测试脚本、测试二进制文件和测试元数据。测试脚本包含用于启动测试二进制文件的编排命令，可以使用操作系统支持的任何语言编写该测试二进制文件。退出状态代码指示测试结果。测试元数据描述测试及其行为（例如，名称、描述、测试二进制文件路径以及预期的持续时间）。

## 创建的资源
<a name="image-builder-resources"></a>

创建管道时，除非满足以下条件，否则不会创建 Image Builder 外部的资源：
+ 通过管道计划创建映像时
+ 当您从 Image Builder 控制台的**操作**菜单中选择**运行管道**时
+ 当你从 API 或者 AWS CLI:**StartImagePipelineExecution**或运行以下任一命令时 **CreateImage**

以下资源是在映像构建过程中创建的：

**AMI 镜像管道**
+ EC2 实例（*临时*）
+  EC2 实例上的 System `EnhancedImageMetadata` s Manager 库存关联（如果已启用，则通过 Systems Manager 状态管理器）
+ 亚马逊 EC2 AMI
+ 与亚马逊 AMI 相关的亚马逊 EBS 快照 EC2 

**容器映像管道**
+ 在 EC2 实例上运行的 Docker 容器（*临时*）
+  EC2 实例上的 Systems Manager 库存关联（通过 System `EnhancedImageMetadata` s Manager 状态管理器）已启用）
+ Docker 容器映像
+ Dockerfile

创建映像后，所有临时资源都将被删除。

## 分配
<a name="image-builder-distribution"></a>

EC2 Image Builder 可以将映像分发 AMIs 或容器到任何 AWS 区域。映像将被复制到您在用于生成镜像的账户中指定的每个区域。

对于 AMI 输出映像，您可以定义 AMI 启动权限以控制 AWS 账户 哪些允许使用已创建的 AMI 启动 EC2 实例。例如，您可以将镜像设置为私有、公有或与特定账户共享。如果您既将 AMI 分发到其他区域，又为其他账户定义启动权限，则启动权限将传播到分发 AMI 的所有区域。 AMIs 

您还可以使用您的 AWS Organizations 账户对成员账户实施限制，使其只能在获得批准且合规的情况下启动实例 AMIs。有关更多信息，请参阅[在组织 AWS 账户 中管理](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html)。

要使用 Image Builder 控制台更新您的分配设置，请按照 [通过控制台创建新的映像配方版本](create-image-recipes.md#create-image-recipe-version-console) 或 [使用控制台创建新的容器配方版本](create-container-recipes.md#create-container-recipe-version) 的步骤操作。

## 共享资源
<a name="ibhow-sharing"></a>

要与其他账户或其内部共享组件、配方或图像 AWS Organizations，请参阅[与共享 Image Builder 资源 AWS RAM](manage-shared-resources.md)。

## 合规
<a name="ibhow-compliance"></a>

对于互联网安全中心 (CIS) 基准测试，I EC2 mage Builder 使用 Amazon Inspector 对风险敞口、漏洞以及与最佳实践和合规标准的偏差进行评估。例如，Image Builder 会评估非预期的网络可访问性、未修补的网络连接 CVEs、公共互联网连接和远程根登录激活。Amazon Inspector 作为测试组件提供，您可以选择将其添加到您的映像配方中。有关 Amazon Inspector 的更多信息，请参阅*[亚马逊 Inspector](https://docs.aws.amazon.com/inspector/v1/userguide/inspector_introduction.html) 用户指南*。有关更多信息，请参阅 [Center for Internet Security (CIS) Benchmarks](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_cis.html)。

Image Builder 提供 STIG 强化组件，可帮助您更有效地构建符合基准 STIG 标准的兼容映像。这些 STIG 组件扫描错误的配置并运行修复脚本。使用符合 STIG 要求的组件不会收取额外的费用。有关通过 Image Builder 提供的 STIG 组件的完整列表，请参阅 [Image Builder 的 Amazon 托管 STIG 固化组件](ib-stig.md)。