View a markdown version of this page

在 Image Builder 配置映像管道工作流 - EC2 Image Builder

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

在 Image Builder 配置映像管道工作流

使用图像工作流程,您可以自定义管道运行的工作流程,以根据需要构建、测试和分发图像。您定义的工作流在 Image Builder 工作流框架的上下文中运行。有关构成工作流框架的各个阶段的更多信息,请参阅管理映像生成器映像的构建、测试和分发工作流程

构建工作流

构建工作流在工作流框架的 Build 阶段运行。只能为管道指定一个构建工作流。或者可以完全跳过构建来配置仅测试管道。

测试工作流

测试工作流在工作流框架的 Test 阶段运行。您可以向管道中添加一个或多个测试工作流程,总共最多十个工作流程,这还包括您的构建和分发工作流程。测试工作流程可以并行运行,也可以一次运行一个,具体取决于您定义测试组的方式。如果只想要构建管道,也可以完全跳过测试。

分发工作流程

分发工作流程在工作流框架Distribution阶段运行。分发工作流程是可选的。如果您未指定,Image Builder 仍会通过运行您附加到管道或映像的分发配置来分发您的 AMI。当您想要使用不同的分发设置覆盖该分发配置,或者想提高分发过程的可见性时,请指定分发工作流程。您可以为管道指定一个分发工作流程。如果您构建容器镜像但未指定分配工作流程,Image Builder 会为您添加 Amazon 托管容器分发工作流程。

定义测试工作流的测试组

您可以在测试组中定义测试工作流程。您可以为您的管道运行多个测试工作流程。总共限制为十个工作流程,其中包括您的生成和分发工作流程。您可以决定是按特定顺序运行测试工作流,还是同时运行尽可能多的测试工作流。其运行方式取决于您如何定义测试组。以下场景演示了几种定义测试工作流的方法。

注意

parallelGrouponFailure设置仅适用于测试工作流程。Image Builder 在生成或分发工作流程中InvalidParameterCombinationException使用拒绝它们。

测试组如何运行

映像生成器在测试组中运行您的测试工作流程。它一次只能运行一个小组。单个组中的测试工作流程同时运行(并行)。Image Builder 最多可同时运行五个测试工作流程;如果一个组有五个以上的测试工作流程,Image Builder 会在每个工作流程完成后启动下一个测试工作流程。不属于群组的测试工作流程会自行运行。

如何定义测试组取决于您使用的是控制台还是 AWS CLI 和 API。选择与您使用的方法相匹配的选项卡。

AWS 管理控制台

在控制台中创建或编辑管道时,可以在映像创建过程的测试工作流程部分定义测试工作流程。要运行测试,请选择选择测试工作流程的选项。要在不进行测试的情况下生成映像,请选择跳过测试工作流程的选项。

控制台将测试工作流程组织成测试组。新的管道从一个测试组开始。要生成测试配置,请执行以下操作:

  • 向群组添加测试工作流程 -将测试工作流程添加到群组,然后从您自己的工作流程(由我拥有)或 AWS 托管工作流程(由亚马逊管理)中选择工作流程。如果工作流程定义了参数,则控制台会显示这些参数,以便您可以输入值。一个小组最多可以容纳五个测试工作流程,这些工作流程同时运行。

  • 添加测试组 -添加另一个测试组以运行另一组测试。您最多可以添加十个测试组。要重命名群组,请选择 “编辑名称” 。群组名称最多可包含 128 个字符,并且可以包含字母、数字、连字符 (-) 和下划线 ()。_

Image Builder 按照测试组在向导中出现的顺序逐一运行测试组。群组中的测试工作流程同时运行。一个组最多可以包含五个测试工作流程。要一次运行一个测试,请将每个测试工作流程放到自己的组中。

注意

您可以添加或移除测试工作流程和组,但无法对其重新排序。在创建测试组之前,请先规划测试组的顺序。

AWS CLI

当您使用 AWS CLI 或映像生成器 API 时,您无需直接定义测试组。相反,您可以为workflows列表中的每个测试工作流程设置该parallelGroup属性。具有相同parallelGroup值的测试工作流程组成一个组并同时运行。没有parallelGroup价值的测试工作流程会自行运行。如果您没有为任何测试工作流程设置parallelGroup值,Image Builder 将逐一运行这些工作流程。

AWS CLI 和 API 不限制组中测试工作流程的数量。唯一的限制是工作流程总数,不能超过十个(包括您的生成和分发工作流程)。控制台将一组限制为五个测试工作流程。

Image Builder 始终首先运行构建工作流程,然后运行测试工作流程,然后运行分发工作流程。无论您如何列出这些订单,此订单均适用。

在测试阶段,Image Builder 按以下方式对测试工作流程进行排序:

  • 它按每个组在workflows列表中首次出现的位置对群组进行排序。它不按parallelGroup值对它们进行排序。

  • 它将没有群组的每个工作流程保留在其列出的位置。

  • 它在一个组中一起运行工作流程,位于该组首次出现的位置。

示例

假设你按此顺序列出了五个测试工作流程,并对其中一些工作流程设置了parallelGroup值:

  • 测试工作流程 A — 不分组

  • 测试工作流程 B —parallelGroup: tests-1

  • 测试工作流程 C — 无组

  • 测试工作流程 D —parallelGroup: tests-1

  • 测试工作流程 E —parallelGroup: tests-2

映像生成器按以下顺序运行它们:

  1. 单独测试工作流程 A。

  2. 同时测试工作流程 B 和测试工作流程 D。他们共享tests-1群组,该群组首先出现在测试工作流程 B 中

  3. 单独测试工作流程 C。

  4. tests-2组中单独测试工作流程 E。

测试工作流 D 与测试工作流 B 一起运行,因为它们共享一个组,尽管您列出了它们之间的测试工作流程 C。名为的组在之前tests-1运行,tests-2因为该组首先tests-1出现在列表中,分组顺序遵循列表中的顺序,而不是parallelGroup值。

场景 1:一次运行一个测试工作流

要一次运行所有测试工作流程,请为每个测试工作流程配置一个单独的测试组,总共不超过十个工作流程(包括您的生成和分发工作流程)的总和。映像生成器一次只能运行一个测试组。这是确保测试工作流按特定顺序逐一运行的一种方法。

场景 2:同时运行多个测试工作流

如果顺序无关紧要,并且您希望同时运行尽可能多的测试工作流,则可以配置单个测试组,并在其中放入最大数量的测试工作流。Image Builder 可同时启动多达五个测试工作流,并在其他工作流完成后启动其他测试工作流。如果您的目标是尽可能快地运行测试工作流,那么这是一种实现目标的方法。

场景 3:混合搭配

如果是混合场景,其中有些测试工作流可以同时运行,而另一些则应该一次运行一个,那么您可以配置测试组来实现这个目标。如何配置测试组的唯一限制是可以为管道运行的测试工作流的最大数量

通过控制台在 Image Builder 管道中设置工作流参数

构建、测试和分发工作流程的工作流程参数的功能相同。创建或更新管道时,您可以选择要包括的构建、测试和分发工作流程。如果在工作流文档中为所选工作流定义了参数,则 Image Builder 会在参数面板中显示这些参数。对于未定义参数的工作流程,该面板处于隐藏状态。

每个参数都显示工作流文档定义的以下属性:

  • 名称不可编辑)– 参数的名称。

  • 类型不可编辑)- 参数值的数据类型。

  • – 参数的值。您可以编辑参数值以设置管道的参数值。

指定 Image Builder 用于运行工作流操作的 IAM 服务角色

当您将自定义映像工作流程附加到管道或设置日志记录配置时,还必须指定执行角色。这是映像生成器在运行您的工作流程操作时承担的 IAM 角色。该角色必须信任映像生成器服务主体。有关所需权限,请参阅以下工作流服务访问信息。

要运行映像工作流,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 管理控制台

当您在中创建或更新管道时 AWS 管理控制台,“创建映像管道” 向导包含一个工作流步骤,您可以在其中选择管道运行的工作流。要关联自定义图像工作流程,请在该步骤中执行以下操作:

  1. 对于生成工作流程,选择您希望管道运行的生成工作流程。

  2. 对于测试工作流程,添加一个或多个测试工作流程并将其组织成测试组,以控制它们的运行顺序。有关更多信息,请参阅 定义测试工作流的测试组

  3. 对于分发工作流,如果您想覆盖附加的分发配置或提高分发过程的可见性,请选择分发工作流。这是可选的。

  4. 对于执行角色,选择映像生成器为运行您的工作流程操作而代入的 IAM 角色。关联自定义镜像工作流程时需要执行角色。有关更多信息,请参阅 指定 Image Builder 用于运行工作流操作的 IAM 服务角色

  5. 如果您选择的工作流程定义了参数,请在 “参数” 面板中设置其值。有关更多信息,请参阅 通过控制台在 Image Builder 管道中设置工作流参数

有关完整创建映像管道向导的分步演练,请参阅创建和更新 AMI 映像管道

AWS CLI

要在创建管道时关联自定义映像工作流程,请使用create-image-pipeline命令。使用参数指定您的执行角色,并使用该--execution-role参数列出构建、测试和分发工作流程。--workflows以下示例创建了一个具有一个生成工作流程、一个测试工作流和一个分发工作流的管道。

aws imagebuilder create-image-pipeline \ --name example-pipeline \ --image-recipe-arn arn:aws:imagebuilder:us-west-2:111122223333:image-recipe/example/1.0.0 \ --infrastructure-configuration-arn arn:aws:imagebuilder:us-west-2:111122223333:infrastructure-configuration/example \ --execution-role arn:aws:iam::111122223333:role/ImageBuilderWorkflowExecutionRole \ --workflows '[ {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build/1.0.0"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/test/example-test/1.0.0","parallelGroup":"group-1","onFailure":"CONTINUE"}, {"workflowArn":"arn:aws:imagebuilder:us-west-2:111122223333:workflow/distribution/example-distribute/1.0.0"} ]'