EC2 映像生成器 的工作原理 - EC2 映像生成器
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

EC2 映像生成器 的工作原理

在使用 EC2 映像生成器 控制台创建黄金映像时,向导将指导您完成以下步骤。

  1. 选择源映像。 您选择一个源操作系统映像,例如,现有的 AMI。

  2. 创建映像配方。 您添加组件以创建映像管道的映像配方。组件是映像配方使用的构建块,例如,安装软件包、安全强化步骤和测试。选定的操作系统和组件组成了映像配方。组件是按指定顺序安装的,在选择后,无法重新排序。

  3. 输出。镜像生成器 使用选定的输出格式创建操作系统映像。

  4. 分发。 在映像管道中的映像通过测试后,您可以将其分发到选定的 AWS 区域。

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

AMI 组件

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

AMI 包括以下组件:

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

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

  • 启动权限,用于确定可以使用 AMI 启动虚拟机的 AWS 账户。

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

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

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

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

默认配额

要查看 EC2 映像生成器 的默认配额,请参阅 EC2 Image Builder 终端节点和配额

AWS 区域和终端节点

要查看 EC2 映像生成器 的服务终端节点,请参阅 EC2 Image Builder 终端节点和配额

日志

EC2 映像生成器 与 AWS 服务集成可提供监控功能,帮助您排查映像生成过程中的问题。镜像生成器 可以跟踪显示映像生成过程中每个步骤的进度。您可以将映像生成应用程序配置为将日志发送到 CloudWatch 以及您提供的 S3 位置。有关 CloudWatch Logs 的更多信息,请参阅什么是 Amazon CloudWatch Logs?

默认情况下,系统会启用 CloudWatch 日志记录支持。日志会保留在实例上并流式传输到 CloudWatch。在创建 AMI 的过程中,系统会从实例中删除日志。这些日志会流式传输到以下 LogStream:

  • LogGroup:"/aws/imagebuilder/<ImageName>

  • LogStream:<ImageVersion>/<ImageBuildVersion>["x.x.x/x"]

可以通过删除与实例配置文件关联的以下权限,选择不执行 CloudWatch 流式传输。

"Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/imagebuilder/*" } ]

对于高级故障排除,您可以使用 AWS Systems Manager (SSM) Run Command 运行预定义的命令和脚本。有关更多信息,请参阅 EC2 映像生成器 故障排除

组件管理器

镜像生成器 使用组件管理应用程序,以帮助您编排复杂的工作流程,修改系统配置以及测试系统,而无需编写代码。该应用程序使用声明性的文档架构。由于它是一个单独的应用程序,因此,它不需要进行额外的服务器设置。它可以在任何云基础设施和本地运行。

EC2 映像生成器 使用该应用程序执行所有实例上的活动,例如生成、验证和测试。您定义一个文档以描述如何生成、验证和测试映像。EC2 映像生成器 将组件发送到实例,该应用程序执行定义的阶段、步骤和操作以解释组件并将其应用于实例。在完成后,该应用程序向 EC2 映像生成器 发送摘要。如果在管道配置中指定了 S3 存储桶,它还会将详细的执行输出发送到 Amazon S3。然后,EC2 映像生成器 使用 AWS 强化和清理映像的最佳实践。

  • 生成阶段。修改映像。例如,您可以配置映像以安装应用程序或修改操作系统防火墙设置。在创建映像之前,将执行验证阶段以作为生成阶段的一部分。

  • 测试阶段。在创建新的映像后,将对该映像执行测试。

EC2 映像生成器 按如下方式使用组件管理应用程序。

  1. 您定义一个 EC2 映像生成器 组件,它是一个描述如何生成、验证和测试映像的文档。

  2. EC2 映像生成器 将文档和该应用程序复制到实例以分派要执行的工作。

  3. 该应用程序执行文档中定义的阶段、步骤和操作。

有关 镜像生成器 在编排工作流程时使用的组件管理器的更多信息(包括有关文档、支持的操作模块和 STIG 的信息),请参阅 EC2 映像生成器 组件管理器

创建的资源

在创建管道时,不会创建 镜像生成器 外部的资源。只有在通过管道计划、镜像生成器 控制台中的 Run Pipeline (运行管道) 操作、StartImagePipelineExecution API 或 CreateImage API 创建映像时,才会创建 镜像生成器 外部的资源。在映像创建期间,将创建以下资源。

  • Amazon EC2 实例

  • SSM Inventory 关联(通过 SSM State Manager)(如果启用了 EnhancedImageMetadata

  • Amazon EC2 AMI

  • EBS 快照(与 Amazon EC2 AMI 关联)

在创建 AMI 后,将删除 Amazon EBS 快照和 Amazon EC2 AMI 以外的所有资源。