EC2Image Builder 的工作原理 - EC2Image Builder

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

EC2Image Builder 的工作原理

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

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

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

    注意

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

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

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

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

AMI 元素

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

AMI包括以下元素:

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

  • 使用 Amazon EBS 时,根设备是根据EBS快照创建的EBS卷。

  • 启动权限决定了 AWS 账户 可以VMs用启动的AMI。

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

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

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

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

默认限额

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

AWS 区域和终端节点

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

组件管理

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

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

映像测试

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

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

创建的资源

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

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

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

  • 当你从或中运行以下任一命令时 AWS CLI:APIStartImagePipelineExecutionCreateImage

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

AMI图像管道
  • EC2实例(临时

  • EC2实例上的 System EnhancedImageMetadata s Manager 库存关联(如果已启用,则通过 Systems Manager 状态管理器)

  • Amazon EC2 AMI

  • 与亚马逊相关的亚马逊EBS快照 EC2 AMI

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

  • EC2实例上的 Systems Manager 库存关联(通过 System EnhancedImageMetadata s Manager 状态管理器)已启用)

  • Docker 容器映像

  • Dockerfile

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

分配

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

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

您还可以使用您的 AWS Organizations 账户对成员账户实施限制,使其只能在获得批准且合规的情况下启动实例AMIs。有关更多信息,请参阅AWS 账户 在您的组织中管理

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

共享资源

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

合规

对于互联网安全中心 (CIS) 基准,EC2Image Builder 使用 Amazon Inspector 对风险敞口、漏洞以及与最佳实践和合规标准的偏差进行评估。例如,Image Builder 会评估非预期的网络可访问性、未修补的网络连接CVEs、公共互联网连接和远程根登录激活。Amazon Inspector 作为测试组件提供,您可以选择将其添加到您的映像配方中。有关 Amazon Inspector 的更多信息,请参阅亚马逊 Inspector 用户指南。 。有关更多信息,请参阅互联网安全中心 (CIS) 基准

Image Builder 提供了STIG强化组件,可帮助您更有效地构建符合基准STIG标准的兼容映像。这些STIG组件会扫描错误配置并运行修复脚本。使用STIG符合标准的组件不收取任何额外费用。有关通过 Image Builder 提供的STIG组件的完整列表,请参阅亚马逊管理了 Image B STIG uilder 的强化组件