本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生命周期管理规则如何适用于 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 会按以下顺序评估每种资源:
-
弃用规则
-
禁用规则
-
删除规则
重要
每次执行只能对每个资源执行一个操作。如果某个资源与弃用规则相匹配,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:
-
区域排除-检查 AMI 是否位于排除区域。
-
公共 AMI 排除-检查 AMI 是否为公用且已启用
isPublic排除。 -
标签排除-检查 AMI 是否有与排除标签映射相匹配的标签。
-
共享账户排除-检查 AMI 是否与排除中列出的账户共享。
-
上次启动的排除项 — 检查 AMI 是否在排除的时间窗口内启动。
在执行资源详细信息中,跳过的 AMI 会显示一个SKIPPED状态,其原因表明匹配了哪个排除条件。
标签作为资源选择器与排除规则
标签在生命周期策略中有两个不同的用途。每种标签机制都在特定的资源级别上运行:
-
Image Build er image — 用于跟踪构件的 Image Builder 资源(ARN 格式:
arn:aws:imagebuilder:)。通过 Image Builder 管理此资源的标签。region:account:image/name/version -
输出 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 执行以下步骤:
-
资源选择 — Image Builder 会查找所有已标记的 Image Builder 图像资源
Environment: Production。 -
Image-level 排除 — Image Builder 会检查每张选定的 Image Builder 图像中是否有标签
Retain: True。Image Builder 会跳过带有此标签的图像,包括其输出资源。 -
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