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

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

使用 Image Builder 管理组件

Image Builder 使用 EC2 Task Orchestrator and Executor (EC2 TOE) 组件管理应用程序来协调复杂的工作流程。基于 YAML 文档构建和测试与 EC2 TOE 应用程序配合使用的组件,这些文档定义了用于自定义或测试映像的脚本。对于 AMI 映像,Image Builder 会在其 Amazon EC2 构建和测试实例上安装 EC2 TOE 组件和组件管理应用程序。对于容器镜像,组件和 EC2 TOE 组件管理应用程序安装在正在运行的容器内。

Image Builder 用于 EC2 TOE 执行所有实例上的活动。在运行 Image Builder 命令或使用 Image Builder 控制台 EC2 TOE 时,无需进行其他设置即可进行交互。

注意

当 Amazon 托管的组件达到其支持的生命周期时,该组件将不再维护。在此情况发生前大约四周,任何正在使用该组件的账户都会收到通知,以及他们账户中受其 Amazon Health Dashboard影响的配方的列表。要了解更多信息 Amazon Health,请参阅Amazon Health 用户指南

构建新映像的工作流程期

用于构建新映像的 Image Builder 工作流程包括以下两个不同的时期。

  1. 构建期(快照前)— 在构建期,您可以对运行您的基础映像的 Amazon EC2 构建实例进行更改,以创建新映像的基准。例如,您的配方可以包含安装应用程序或修改操作系统防火墙设置的组件。

    以下组件阶段在构建期运行:

    • build

    • 验证

    成功完成此阶段后,Image Builder 会创建快照或容器映像,以供测试期和后续时期使用。

  2. 测试阶段(快照后)– 在测试阶段,创建 AMI 的映像与容器映像之间存在一些差异。对于 AMI 工作流,Image Builder 从其创建的快照启动 EC2 实例,作为构建阶段的最后一步。在新实例上运行测试以验证设置并确保该实例按预期运行。对于容器工作流,测试在用于构建的同一实例上运行。

    在测试期,配方中包含的每个组件都将运行以下组件阶段:

    • 测试

    此组件期适用于“构建”和“测试”这两种组件类型。成功完成此时期后,Image Builder 可以根据快照或容器映像创建和分配最终映像。

注意

虽然 EC2 TOE 允许您在组件文档中定义许多阶段,但 Image Builder 对运行哪些阶段以及运行这些阶段有严格的规定。要使组件在构建期运行,组件文档必须至少定义以下阶段之一:buildvalidate。要使组件在测试期运行,组件文档必须定义 test 阶段,而不能定义其他阶段。

由于 Image Builder 独立运行各个时期,因此组件文档中的链接引用不能跨越时期边界。您不能将值从在构建期运行的阶段链接到在测试期运行的阶段。但是,您可以为预期目标定义输入参数,并通过命令行传入值。有关在 Image Builder 配方中设置组件参数的更多信息,请参阅 使用 EC2 Image Builder 管理 EC2 TOE 组件参数

为了帮助对构建或测试实例进行故障排除,请 EC2 TOE 创建一个包含输入文档和日志文件的日志文件夹,以跟踪组件每次运行时发生的情况。如果您在管道配置中配置了 Amazon S3 存储桶,则日志也会写入那里。有关 YAML 文档和日志输出的更多信息,请参阅 在中使用组件文档 EC2 TOE

提示

当需要跟踪多个组件时,标记可以帮助您根据分配给特定组件或版本的标签来识别该组件或版本。有关使用 Image Builder 命令为资源添加标签的更多信息 Amazon CLI,请参阅本指南的标记资源部分。

本节介绍如何使用 Image Builder 控制台或 Amazon CLI中的命令列出、查看、创建和导入组件。

导入组件 (Amazon CLI)

在某些情况下,从预先存在的脚本入手可能更容易一些。对于本文中的情况,您可以使用以下示例。

该示例假定您具有一个名为 import-component.json 的文件(如下所示)。请注意,该文件直接引用了一个名为的 PowerShell 脚本AdminConfig.ps1,该脚本已上传到my-s3-bucket。目前,组件 format 支持 SHELL

{ "name": "MyImportedComponent", "semanticVersion": "1.0.0", "description": "An example of how to import a component", "changeDescription": "First commit message.", "format": "SHELL", "platform": "Windows", "type": "BUILD", "uri": "s3://my-s3-bucket/AdminConfig.ps1", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/60763706-b131-418b-8f85-3420912f020c" }

要导入组件,请运行以下命令。

aws imagebuilder import-component --cli-input-json file://import-component.json

清理资源

为避免意外费用,请务必清理根据本指南中的示例创建的资源和管道。有关删除 Image Builder 中的资源的更多信息,请参阅 删除 EC2 Image Builder 资源