View a markdown version of this page

生命周期管理规则如何适用于 Image Builder 映像资源 - EC2 Image Builder

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

生命周期管理规则如何适用于 Image Builder 映像资源

生命周期规则可让您的图像保持最新状态并降低基础设施成本,例如输出 AMI 的快照存储和容器的 Amazon ECR 存储库存储。

生命周期策略支持以下规则类型:

弃用规则

将 Image Builder 映像资源状态设置为 Deprecated。对于已弃用的映像,Image Builder 管道仍会运行。您可以选择设置关联 AMI 的弃用时间,而不会影响启动新实例。

已弃用的 AMI 不会出现在常规搜索中。例如,Amazon EC2 describe-images 命令从结果中排除已弃用的 AMI。要查找已弃用的 AMI,请直接指定其 AMI ID。

注意

此规则不适用于基于容器的镜像。

禁用规则

将 Image Builder 映像资源状态设置为 Disabled。对于该映像,此操作会阻止 Image Builder 管道运行。您可以选择禁用关联的 AMI 以防止启动新实例。

禁用的 AMI 变为私有且不再启动新实例。以前拥有共享访问权限的账户、组织或组织单位将失去该访问权限。

注意

此规则不适用于基于容器的镜像。

删除规则

按使用期限或数量删除映像资源。您可以定义满足您需求的阈值。当 Image Builder 映像资源超过阈值时,会将其删除。您可以选择注销关联的 AMI 或删除这些 AMI 的快照。您还可以为希望保留超过阈值的资源指定标签。

对于容器映像,此规则会删除 Image Builder 容器映像资源。您也可以从 ECR 存储库中移除容器镜像,以防止启动新的容器。

规则优先级和评估顺序

当策略有多种规则类型时,Image Builder 会按以下顺序评估每种资源:

  1. 弃用规则

  2. 禁用规则

  3. 删除规则

重要

每次执行只能对每个资源执行一个操作。如果某个资源与弃用规则相匹配,Image Builder 会将其弃用,并在同一次运行期间跳过该资源的禁用和删除规则。在随后的执行中,Image Builder 会根据其他规则对资源进行评估,前提是该资源符合其标准。

此优先顺序支持渐进式生命周期策略。例如,您可以将策略配置为在 90 天后弃用图像,120 天后将其禁用,180 天后将其删除。每次执行仅应用优先级最高的匹配操作。

跳过规则评估的图像状态

为了防止重复操作,Image Builder 会跳过某些状态下的图像:

  • 弃用规则 — Image Builder 会跳过已弃用、禁用、失败或取消的图像。

  • 禁用规则 — Image Builder 会跳过已经禁用、失败或取消的图像。

  • 删除规则 — Image Builder 会评估处于任何状态的图像以供删除,但须遵守保留规则和排除条款。

AMI 生命周期排除规则

排除规则保护特定的 AMI 免受生命周期操作的影响。在 AWS 管理控制台、API 或中配置排除规则 AWS CLI。

生命周期策略支持以下排除规则类型:

  • Tag-based 排除-排除带有特定标签(最多 50 个标签)的 Image Builder 图像资源。有关标签在不同资源级别的工作原理的更多信息,请参阅标签作为资源选择器与排除规则

  • 公共 AMI 排除 — 不包括公开共享的 AMI。

  • 上次启动的排除项-排除在指定时间段内启动实例的 AMI。

    注意

    Amazon EC2 报告的上次启动时间会延迟 24 小时。运行排除检查时,可能不会反映过去 24 小时内启动的内容。

  • 地区排除 — 具体 AWS 区域不包括 AMI。

  • 共享账户排除 — 不包括与特定 AWS 账户账户共享的 AMI。

注意

Image Builder 会跳过正在构建(待处理、创建、构建、导入、测试、分发或集成状态)的图像。Image Builder 将在下一次计划运行中评估这些图像。

AMI 排除规则评估顺序

在确定生命周期操作的资格后,EC2 Image Builder 会评估输出 AMI 的 AMI-level 排除规则 (exclusionRules.amis)。这些规则适用于 Amazon EC2 AMI 资源,而不适用于 Image Builder 图像资源。留存计数是分开运行的。排除的 AMI 不会占用保留槽。Image Builder 按顺序检查条件并在第一个匹配时跳过 AMI:

  1. 区域排除-检查 AMI 是否位于排除区域。

  2. 公共 AMI 排除-检查 AMI 是否为公用且已启用isPublic排除。

  3. 标签排除-检查 AMI 是否有与排除标签映射相匹配的标签。

  4. 共享账户排除-检查 AMI 是否与排除中列出的账户共享。

  5. 上次启动的排除项 — 检查 AMI 是否在排除的时间窗口内启动。

在执行资源详细信息中,跳过的 AMI 会显示一个SKIPPED状态,其原因表明匹配了哪个排除条件。

标签作为资源选择器与排除规则

标签在生命周期策略中有两个不同的用途。每种标签机制都在特定的资源级别上运行:

  • Image Build er image — 用于跟踪构件的 Image Builder 资源(ARN 格式:arn:aws:imagebuilder:region:account:image/name/version)。通过 Image Builder 管理此资源的标签。

  • 输出 AMI 或容器映像 — Image Builder 生成的底层 Amazon EC2 AMI 或 Amazon ECR 容器镜像。分别通过 Amazon EC2 或 Amazon ECR 管理这些资源的标签。

标签作为资源选择器(策略范围)

Tag-based 资源选择仅评估 Image Builder 图像资源上的标签,不评估输出 AMI 或容器上的标签。Image Builder 使用这些标签来查找策略适用的资源。

resourceSelection.tagMap字段中配置基于标签的资源选择。每个条目都是一个键值对。该策略会选择与任何指定标签键值对(或逻辑)匹配的 Image Builder 图像。Image Builder 不会评估没有匹配标签的图像。

标签作为排除规则(规则级别的例外)

排除标签的作用方向恰恰相反。Image Builder 根据策略范围选择资源后,它会在采取任何操作之前根据排除规则检查每个资源。在两个级别上配置排除标签,每个级别对不同的资源类型进行操作:

exclusionRules.tagMap

仅评估 Image Builder 图像资源上的标签。检查底层 AMI 或容器上的标签。如果 Image Builder 图像标签与条目匹配(键和值完全匹配),Image Builder 将跳过该图像和所有关联的输出资源。

exclusionRules.amis.tagMap

在相关资源处理过程中,评估输出 AMI(Amazon EC2-level 资源)上的标签。使用此选项可以根据特定输出 AMI 的 Amazon EC2 标签(例如,通过分配设置或直接通过 Amazon EC2 应用的标签)排除这些标签。

重要

选择资源,exclusionRules.tagMap不要评估输出 AMI(亚马逊 EC2 标签)或容器(亚马逊 ECR 标签)上的标签。要排除基于 Amazon EC2 标签的输出 AMI,请使用exclusionRules.amis.tagMap

例标签选择器和排除项协同工作

具有以下设置的策略:

  • 资源选择标签:Environment: Production(在 Image Builder 图像资源上进行评估)

  • Image-level 排除标签 (exclusionRules.tagMap):Retain: True(在 Image Builder 图像资源上进行评估)

  • AMI-level 排除标签 (exclusionRules.amis.tagMap):SharedWith: Partner(根据输出 AMI 进行评估)

Image Builder 执行以下步骤:

  1. 资源选择 — Image Builder 会查找所有已标记的 Image Builder 图像资源Environment: Production

  2. Image-level 排除 — Image Builder 会检查每张选定的 Image Builder 图像中是否有标签Retain: True。Image Builder 会跳过带有此标签的图像,包括其输出资源。

  3. AMI-level 排除 — Image Builder 会检查标签SharedWith: Partner中剩余图像的输出 AMI(亚马逊 EC2 资源)。带有此标签的 AMI 将被跳过。

如何计算留存率

当您为删除规则配置保留设置时,AGE 和 COUNT 过滤器会根据您的 Im age Builder 图像资源进行评估,而不是直接根据输出 AMI 或容器进行评估。

重要

AGE 筛选器使用 Image Builder 图像资源创建日期(构建完成后设置),而不是输出 AMI 或容器的创建日期。COUNT 过滤器按配方版本计算 Image Builder 图像资源,而不是输出 AMI 或容器。

留存率的计算取决于您在策略范围内如何指定配方版本:

特定版本(例如,1.0.0

保留计数适用于使用该配方版本构建的 Image Builder 图像。Image Builder 首先保留最新的图像(按创建日期)。

通配符版本模式(例如,1.x.x

保留计数根据匹配的配方版本独立适用。例如,如果1.x.x保留计数为 5,则会保留 5 张最新的图片1.0.0,保留的 5 张最新图片1.1.0,依此类推。

Tag-based 资源选择

使用基于标签的资源选择(请参阅标签作为资源选择器与排除规则),还可以按配方版本计算留存率。Image Builder 在每个版本中按最新优先排序图片,并按版本组独立应用留存计数。

Age-based 与基于计数的删除过滤器对比

删除规则使用以下两种筛选器类型之一来确定删除资格:

AGE过滤

保留超过指定年龄阈值的 Image Builder 图像(以自图像生成器图像创建之日起的天、周、月或年为单位)。无论年龄大小,您都可以设置retainAtLeast为每个食谱版本保留最少数量的最新图片。

COUNT过滤

保留每个配方版本的最新 N 个 Image Builder 图像。超出指定数量的所有图像都有资格删除。

其他保留行为适用:

  • 失败或取消的 Image Builder 图像不计入保留期限,并且始终符合删除条件。

  • Image Builder 会先处理最新图片,并在评估删除资格之前应用留存计数。

生命周期操作如何影响关联资源

Image Builder 映像的生命周期操作会影响关联的输出 AMI 或容器,具体取决于规则类型和配置:

弃用

将 Image Builder 映像资源状态设置为 Deprecated。您也可以弃用关联的输出 AMI。已弃用的 AMI 不会出现在常规搜索中,但仍可通过 AMI ID 使用。Image Builder 会为每个已弃用的 AMI 添加一个DeprecatedBy: EC2 Image Builder标签。

仅适用于 AMI-based 图像,不适用于容器。

禁用

将 Image Builder 映像资源状态设置为 Disabled。您也可以禁用关联的输出 AMI。禁用的 AMI 变为私有实例,不再启动新实例。

仅适用于 AMI-based 图像,不适用于容器。

删除

删除 Image Builder 图像资源。你也可以删除:

  • 分配给其他 AWS 区域 和账户的输出 AMI

  • 与这些 AMI 关联的快照

  • 分发到 Amazon ECR 存储库的容器

既适用于基于容器的映像 AMI-based ,也适用于基于容器的映像。

注意

Image Builder 在图像级别做出生命周期操作决策。只有将规则配置为包含关联的输出资源(AMI、快照、容器)时,它们才会发生变化。

允许的资源状态转换

生命周期策略和 StartResourceStateUpdate API 在以下状态之间过渡图像资源:

可用 → 已弃用

将可用图片标记为已弃用。该图像仍可通过 AMI ID 使用,但不会出现在常规搜索中。Image Builder 添加了一个用于跟踪的DeprecatedBy: EC2 Image Builder标签。

可用或已弃用 → 已禁用

将 AMI 设为私有并防止启动新实例。如果 AMI 之前已被弃用,Image Builder 会移除已弃用的标签,因为图像已进入更严格的状态。

任何非建筑状态 → 已删除

注销 AMI 或从 ECR 中删除容器镜像。您可以包括要删除的关联快照或底层容器。

已弃用或已禁用 → 可用

StartResourceStateUpdateAPI 会将已弃用或已禁用的图像返回到可用状态。这会撤销弃用,重新启用 AMI,并删除弃用日期和标签。 DeprecatedBy 这种过渡只能通过手动 API 进行,不能通过自动策略执行。

注意

当前正在构建的映像(处于待处理、正在创建、构建、导入、测试、分发或集成状态)不会更改状态。对版本处于活动状态的映像进行手动状态更新失败并显示错误。

查看生命周期策略的规则详细信息

在控制台中,生命周期策略详细信息页面显示规则选项卡了策略的规则详细信息。

在中 AWS CLI,运行 get-lifecycle-policy 命令。响应包括所有已配置的操作(规则)及其设置。