View a markdown version of this page

管理映像生成器映像的构建、测试和分发工作流程 - EC2 Image Builder

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

管理映像生成器映像的构建、测试和分发工作流程

映像工作流程定义了 EC2 Image Builder 在映像创建过程的某个阶段运行的步骤顺序。您可以将工作流程作为 YAML 文档创建,并将其创建为版本控制的可重复使用资源。然后,Image Builder 在构建、测试和分发您的图像时运行您的工作流程。

工作流程使您可以直接控制图像创建过程。您可以决定运行哪些步骤、按什么顺序运行、每个步骤失败时执行什么操作,以及 Image Builder 是否回退失败的步骤。您可以从亚马逊管理的工作流程开始,对其进行克隆和自定义,或者从头开始编写自己的工作流程。

映像工作流优势
  • 借助映像工作流,您可以更灵活、更清晰和更好地控制映像创建过程。

  • 您可以在定义工作流文档时添加自定义工作流步骤,也可以选择使用 Image Builder 默认工作流。

  • 您可以排除图像生成器在默认图像工作流程中包含的工作流程步骤。

  • 您可以创建完全跳过构建过程的仅测试工作流。您可以执行同样的操作来创建仅限构建或仅限分发的工作流程。

注意

您无法修改现有工作流,但可以对其进行克隆或创建新版本。

工作流框架:阶段

图像生成器将图像创建过程分为三个阶段。每个阶段都运行匹配类型的工作流程。阶段按固定顺序运行,只有在前一个阶段成功完成后才开始。

下表列出了每个阶段的默认行为。由于您定义了每个工作流程中的步骤,因此可以自定义阶段的功能。

图像生成器工作流程阶段

Order

暂存区

工作流程类型

它能做什么(默认)

1

构建

BUILD

启动构建实例,运行构建组件,并从该实例创建镜像(AMI 或容器镜像)。

2

测试

TEST

从新映像启动测试实例,运行测试组件,并有选择地收集图像扫描结果。

3

分配

DISTRIBUTION

将映像复制到目标区域和账户,修改镜像属性,并应用发布后配置,例如启动模板和许可证配置。

您只能在某些阶段运行工作流程。例如,您可以跳过构建阶段来测试或分发已经存在的图像,或者跳过测试阶段进行不经测试的构建和分发。要跳过生成或测试阶段,请在管道或映像请求中省略该类型的工作流程。

注意

分发工作流程是可选的。如果您省略它,Image Builder 不会跳过分发,它仍会通过运行您附加到管道或映像的分发配置来分发您的 AMI。如果您想使用不同的分发设置覆盖该分发配置,或者想提高分发过程的可见性,请添加分发工作流程。要完全跳过分发,请提供空或空的分发配置。

注意

一个图像管道或图像请求最多可以包括一个构建工作流程和一个分发工作流程。它还可以包括一个或多个测试工作流程。工作流总数不能超过十个。例如,您可以将一个生成工作流程和一个分发工作流程与最多八个测试工作流程配对。

工作流程如何运行

工作流程按照您在 YAML 文档中定义的顺序运行其步骤。每个步骤执行一个操作,例如启动实例或运行组件。

步骤成果

每个步骤都以以下状态之一结束。

工作流程步骤结果

含义

COMPLETED

该步骤成功完成。

SKIPPED

步骤的条件if语句计算结果为false,因此 Image Builder 跳过了该步骤。

FAILED

该步骤未成功完成。

WAITING

WaitForAction步骤已暂停,等待外部操作。

TIMED_OUT

该步骤的运行时间超过了其timeoutSeconds值。

故障处理

每个步骤的onFailure属性控制步骤失败时发生的情况。

  • Abort(默认)— Image Builder 无法执行该步骤,使工作流程失败,并且不再运行其他步骤。如果启用了回滚,则回滚将从失败的步骤开始,然后向后执行之前的步骤。

  • Continue— 映像生成器无法完成该步骤,但会运行其余步骤。不会发生回滚。

回滚

当步骤使用onFailure: AbortrollbackEnabled: true(默认)失败时,Image Builder 会以相反的顺序回滚已完成的步骤,从失败的步骤开始。并非所有操作都可以回滚。没有回滚的操作记录的NO_ROLLBACK状态为。

监控亚马逊的工作流程运行情况 EventBridge

Image Builder 会在您的工作流程运行时发出 Amazon EventBridge 事件,因此您可以对进度和需要注意的步骤做出反应。例如,WaitForAction步骤将详细类型的事件发布EC2 Image Builder Workflow Step Waiting到您的默认事件总线。您可以将此事件路由到 Lambda 函数或 Amazon SNS 主题等目标以推动批准流程。有关映像生成器的工作原理的更多信息 EventBridge,请参阅亚马逊 EventBridge 集成到图像生成器中

要以编程方式跟踪步骤级进度,请使用ListWorkflowExecutionsGetWorkflowExecutionListWorkflowStepExecutions、和 GetWorkflowStepExecution API 操作。

工作流程资源限制

您的工作流程文档和配置必须保持在以下默认限制范围内。

工作流程资源限制

约束

默认限制

注意

每个工作流程文档的步骤

15

步骤按文档顺序运行。

每个工作流程文档的输出

25

输出将值传递到以后的工作流程。

每个工作流程文档的参数

25

呼叫者可以设置的输入。

参数值长度

1,024 个字符

每个参数值。

行内文档大小 (data)

16,000 字节

对于较大的文档,使用uri(亚马逊 S3)选项。

每个图像或管道的工作流程

10

最多 1 次编译和 1 次分发,外加测试工作流程,总计 10 个。

工作流程资源是不可变的。要更改工作流程,请创建新版本或对其进行克隆。Image Builder 保留每个版本,因此您可以跟踪生成每个图像的工作流程。

服务访问

要运行映像工作流,Image Builder 需要获得执行工作流操作的权限。您使用映像生成器代表您承担的执行角色来授予此权限。您可以按如下方式分配执行角色。

重要

我们建议您不要将AWSServiceRoleForImageBuilder服务相关角色作为执行角色传递。相反,创建自定义 IAM 角色并附加EC2ImageBuilderExecutionPolicy AWS 托管策略。此政策授予的权限与映像生成器 AWS 服务 代表您调用所需的权限相同。使用自定义角色可以完全控制映像生成器使用的权限。它还可以使您的服务控制策略 (SCP) 和资源控制策略 (RCP) 在 Image Builder 代表您执行的操作中保持有效。

  • 控制台 -在管道向导步骤 3 定义映像创建过程中,从服务访问面板的 IAM 角色列表中选择您的自定义角色。

  • Image Builder API — 在CreateImage操作请求中,将您的自定义角色指定为executionRole参数值。

要创建自定义执行角色,请参阅《AWS Identity and Access Management 用户指南》中的创建向 AWS 服务委派权限的角色

对图像使用托管工作流程

AWS 创建和维护托管工作流程。当您在图像管道中使用托管工作流程或一次性创建映像时,您可以选择要使用的托管工作流程的亚马逊资源名称 (ARN)。亚马逊提供应用了补丁和其他更新的最新版本。要获取托管工作流程列表列出映像工作流,请参阅 Owner = Amazon(控制台)并进行筛选。

您可以根据构建速度和验证要求选择托管工作流程。以下是托管工作流类型的示例:

标准托管工作流程(默认)

标准托管工作流程包括通过全面的 EC2 状态检查构建、测试和验证映像的全面步骤。

以下是标准的托管工作流程:

  • build-image — 默认 Amazon-managed AMI 构建工作流程。

  • test -image — 默认 Amazon-managed AMI 测试工作流程。

  • build-container — 默认 Amazon-managed 容器构建工作流程。

  • 测试容器 -默认 Amazon-managed 容器测试工作流程。

快速管理的工作流程

快速管理的工作流程仅包括基本步骤,可缩短图像创建时间。

以下是快速管理的工作流程:

  • express-build-image — Express Amazon-managed AMI 构建工作流程,可缩短构建时间。仅等待实例运行状态,而不是完整的 EC2 状态检查,并跳过图像元数据收集。

  • express-build-container — 可缩 Amazon-managed 短构建时间的快速容器构建工作流程。仅等待实例运行状态,而不等待完整的 EC2 状态检查。

  • express-test-image — Express Amazon-managed AMI 测试工作流程,可缩短测试时间。仅等待实例运行状态,而不是完整的 EC2 状态检查,并跳过安全扫描结果收集。