EC2 Image Builder 的工作方式 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

EC2 Image Builder 的工作方式

在使用 EC2 Image Builder 管道控制台向导创建定制映像时,向导将指导您完成以下步骤。

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

  2. 选择配方-在构建 AMI 或构建容器映像之间进行选择。对于这两种类型的输出映像,您可以输入配方的名称和版本,选择基础映像,然后选择要添加的组件以进行构建和测试。您也可以选择自动版本控制,以确保您的基础映像始终使用最新的可用操作系统 (OS) 版本。容器配方还定义了 Dockerfiles 以及输出 Docker 容器映像的目标 Amazon ECR 存储库。

    注意

    组件是映像配方或容器配方所消耗的构建基块。例如,安装软件包、安全强化步骤和测试。选定的基本映像和组件组成了镜像配方。

  3. 定义基础设施配置-Image Builder 在您的账户中启动 EC2 实例,以自定义映像和运行验证测试。基础设施配置设置为在构建 Amazon Web Services 账户 过程中将在您的中运行的实例指定基础设施详细信息。

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

您根据自定义基础映像构建的映像位于您的 Amazon Web Services 账户。您可以输入生成计划,以便配置镜像管道以生成更新和修补的映像版本。在生成完成后,您可以通过 Amazon Simple Notification Service (SNS) 接收通知。除了生成最终镜像以外,Image Builder 控制台向导还会生成一个配方,可以将其与现有版本控制系统和持续集成/持续部署 (CI/CD) 管道一起使用以实现可重复的自动化。您可以共享和创建新的配方版本。

AMI 元素

它是预配置的 Machine Image (AMI),其中包含用于部署 EC2 实例的操作系统和软件

AMI 包括以下元素:

  • 虚拟机根卷的模板。在启动 Amazon EC2 虚拟机时,根设备卷包含用于引导实例的镜像。在使用实例存储时,根设备是通过 Amazon S3 中的模板创建的实例存储卷。有关更多信息,请参阅 Amazon EC2 根设备卷

  • 在使用时,根设备是通过 EBS 快照创建的 EBS 卷

  • 启动权限决定了 Amazon Web Services 账户 可以使用 AMI 启动虚拟机的权限。

  • 块储存设备映射数据,用于指定在启动后附加到实例的卷。

  • 每个区域、每个账户的唯一资源标识符

  • 元数据负载(例如标签)和属性(例如区域、操作系统、架构、根设备类型、提供程序、启动权限、根设备存储以及签名状态)。

  • Windows 映像的 AMI 签名,用于防止未经授权的篡改。有关更多信息,请参阅实例身份文档

默认限额

要查看 Image Builder 的默认配额,请参阅 Image Builder 终端节点和配额

Amazon 区域和终端节点

要查看 Image Builder 的服务终端节点,请参阅 Image Builder 终端节点和配额

组件管理

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

Image Builder 用于 EC2 TOE 执行所有实例上的活动。其中包括在拍摄快照之前构建和验证映像,以及在创建最终映像之前测试快照以确保其按预期运行。有关 Image Builder EC2 TOE 如何使用管理其组件的更多信息,请参阅使用 Image Builder 管理组件。有关创建组件与 EC2 TOE的详细信息,请参阅 EC2 Task Orchestrator and Executor 组件管理器

映像测试

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

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

创建的资源

创建管道时,除非满足以下条件,否则不会创建 Image Builder 外部的资源:

  • 通过管道计划创建映像时

  • 当您从 Image Builder 控制台的操作菜单中选择运行管道

  • 当你从 API 或者 Amazon CLI:StartImagePipelineExecution或运行以下任一命令时 CreateImage

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

AMI 镜像管道
  • EC2 实例(临时性

  • EC2 实例上的 Systems Manager Inventory 关联(如果 EnhancedImageMetadata 已启用,则通过 Systems Manager State Manager)

  • Amazon EC2 AMI

  • 与 Amazon EC2 AMI 关联的 Amazon EBS 快照

容器映像管道
  • 在 EC2 实例上运行的 Docker 容器(临时性

  • EC2 实例上的 Systems Manager Inventory 关联(如果 EnhancedImageMetadata 已启用,则通过 Systems Manager State Manager)

  • Docker 容器映像

  • Dockerfile

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

分配

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

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

要使用 Image Builder 控制台更新您的分配设置,请按照 创建新的映像配方版本(控制台)使用控制台创建新的容器配方版本 的步骤操作。

共享资源

要与其他账户或在其他账户内共享组件、配方或图像 Amazon Organizations,请参阅共享 EC2 Image Builder 资源

合规

对于 CIS,EC2 Image Builder 使用 Amazon Inspector 评估泄露、漏洞以及不符合最佳实践和合规性标准的情况。例如,Image Builder 会评估意外网络可访问性、未修补的 CVE、公共互联网连接和远程根登录激活。Amazon Inspector 作为测试组件提供,您可以选择将其添加到您的映像配方中。。为了进行强化,EC2 Image Builder 使用 STIG 进行验证。有关通过 Image Builder 提供的 STIG 组件的完整列表,请参阅 Amazon 托管 EC2 Image Builder 的 STIG 强化组件