View a markdown version of this page

生命周期策略的执行工作原理 - EC2 Image Builder

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

生命周期策略的执行工作原理

Image Builder 会定期运行已启用的生命周期策略。每次运行都是一次执行。在执行期间,Image Builder 会根据策略规则评估您的图像资源并执行指定的生命周期操作。

执行时间表

Image Builder 每天运行一次已启用的生命周期策略。

  • Image Builder 管理确切的执行时间。您无法对其进行配置。

  • 每个策略一次只能运行一次执行。正在执行或待处理的执行仍在继续,而不是开始新的执行。

  • 禁用的策略不会运行,禁用策略会阻止任何待执行的处理新资源。

执行状态

使用控制台中的 RunLog 选项卡或 list-lifecycle-exections 命令监控生命 AWS CLI 周期执行进度。每次执行都会报告以下状态之一:

IN_PROGRESS

Image Builder 正在积极评估资源并执行生命周期操作。

PENDING

处理已暂停。它将在下次计划运行期间恢复。

SUCCESS

Image Builder 成功处理了所有适用的资源。

FAILED

一个或多个资源操作遇到错误。使用 list-lifecycle-execycle-exection-resources 命令确定哪些资源出现故障以及失败原因

CANCELLING

Image Builder 收到了取消申请,正在完成当前的处理步骤。

CANCELLED

处决已取消。Image Builder 不会回滚取消之前处理的资源。

如何评估资源

Image Builder 使用以下步骤从最新到最旧(按创建日期)评估图像资源:

  1. 资源选择 — Image Builder 可识别与策略范围相匹配的所有图像资源,这些资源由配方筛选器(包括版本模式)或标签过滤器定义。

  2. 主动生成检查 — Image Builder 会跳过正在构建(构建、测试或分发状态)的图像,并在下次运行时对其进行评估。

  3. 规则评估 — Image Builder 按优先顺序评估规则:弃用、禁用、删除。每次执行只有一个操作适用于每张图像。如果图像符合弃用规则,Image Builder 将在同一次运行期间跳过该图像的禁用和删除规则。

    评估因规则类型而异:

    对于弃用和禁用规则
    1. 年龄过滤器检查(如果已配置)— Image Builder 会检查图像是否超过指定的阈值。

    2. Image-level 标签排除检查 (exclusionRules.tagMap)-Image Builder 会跳过带有排除标签的图像。

    对于删除规则
    1. 年龄或计数过滤器检查-对于年龄,Image Builder 会检查图像是否超过阈值。对于 COUNT,Image Builder 会检查是否已达到保留计数。

    2. 检查失败或已取消-处于 “失败” 或 “已取消” 状态的图像符合删除条件,并且不会占用保留时段。

    3. 保留检查-如果您配置了retainAtLeast值(年龄过滤器)或计数值(COUNT 过滤器),则最新的图像会首先填充保留空白。填充保留槽的图像无需进一步评估即可保留。

    4. Image-level 标签排除检查 (exclusionRules.tagMap)-对于通过保留检查的图像(原本会被删除的图像),Image Builder 会检查排除标签。如果存在,Image Builder 会跳过该图像。

    重要

    Image Builder 先评估留存率,然后再排除标签。无论排除标签如何,保留期内的图像都将受到保护。标签排除仅适用于超过保留期限的图片。

    不包含标签的图像不会占用保留时段,也不会影响其他图像的保留计数。

  4. AMI-level 排除检查 — 确定符合条件的图像后,Image Builder 会根据AMI-level 排除规则评估其输出 AMI()exclusionRules.amis。这些规则包括区域排除、公共 AMI 排除、AMI 标签排除、共享账户排除和上次启动的排除。Image Builder 报告符合任何排除标准的输出 AMI,SKIPPED并附上表示匹配条件的原因。

注意

如果先前已弃用的资源符合标准,则后续执行会将禁用或删除规则应用于这些资源。

删除规则的保留工作原理

保留过滤器(年龄和计数)会根据 Image Builder 图像资源进行评估,而不是直接输出 AMI 或容器。Image Builder 会保留每个配方版本的最新图像,并标记较旧的图像以供删除。

有关留存率计算的详细逻辑,包括基于年龄和基于计数的筛选行为,请参阅。如何计算留存率

手动管理资源状态

您可以使用 start-r esource-state-update 命令触发特定映像构建版本的即时生命周期状态更改,而无需等待下一次计划运行。

支持的过渡:

  • 弃用-将图片标记为已弃用。

  • 禁用-阻止映像启动新实例。

  • 删除-删除图像及其关联资源(必须至少指定一种关联的资源类型)。

  • 可用-将已弃用或禁用的图像恢复到可用状态。

每次手动状态更改都会创建单独的生命周期执行。使用 list-lifecycle-exec tions 命令对其进行跟踪。

取消处决

使用取消生命周期执行命令或 Image Builder 控制台取消正在进行或待处理的执行。

当你取消执行时:

  • 在完成当前资源操作CANCELLING时,执行会过渡到。

  • 当前操作完成后,执行将转换为CANCELLED

  • Image Builder 不会回滚已经处理过的资源。例如,取消之前已弃用的图片仍不推荐使用。

  • Image Builder 会跳过未处理的资源。

生命周期策略如何处理外部修改的资源

您或其他 AWS 服务可以在 Image Builder 生命周期策略之外修改您账户中的资源。外部修改示例:

  • 通过亚马逊 EC2 控制台注销 AMI

  • 使用亚马逊 EC2 API 弃用 AMI

  • 从 Amazon ECR 存储库中删除容器镜像

  • 使用 Image Builder API 删除 Image Builder 图像资源

如果资源已被删除或已处于所需状态,Image Builder 会将该操作报告为SUCCESS。当通过其他方式清理资源时,该策略不会失败。

注意

SKIPPED状态是不同的。Image Builder SKIPPED 仅在资源存在但排除规则阻止该操作时才会报告。

监控执行结果

在两个级别监控生命周期执行结果:

执行级别

查看策略的所有执行情况,包括状态、开始时间和结束时间。

资源等级

查看执行中每种资源的结果。

  • 控制台-在RunLog选项卡中,选择执行 ID 以查看已处理的资源。

  • AWS CLI— 使用执行 ID 运行列表生命周期执行资源。

每个资源条目包括:

  • 资源 ARN

  • 已采取(或已尝试)的操作

  • 资源状态(SUCCESSFAILED、或SKIPPED

  • 结果的原因(对于跳过或失败的资源特别有用)