

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

# 生命周期策略的执行工作原理
<a name="lifecycle-policy-execution"></a>

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

**Topics**
+ [执行时间表](#lifecycle-execution-schedule)
+ [执行状态](#lifecycle-execution-statuses)
+ [如何评估资源](#lifecycle-execution-resource-evaluation)
+ [删除规则的保留工作原理](#lifecycle-execution-retention)
+ [手动管理资源状态](#lifecycle-execution-manual)
+ [取消处决](#lifecycle-execution-cancel)
+ [生命周期策略如何处理外部修改的资源](#lifecycle-execution-externally-modified)
+ [监控执行结果](#lifecycle-execution-monitoring)

## 执行时间表
<a name="lifecycle-execution-schedule"></a>

Image Builder 每天运行一次已启用的生命周期策略。
+ Image Builder 管理确切的执行时间。您无法对其进行配置。
+ 每个策略一次只能运行一次执行。正在执行或待处理的执行仍在继续，而不是开始新的执行。
+ 禁用的策略不会运行，禁用策略会阻止任何待执行的处理新资源。

## 执行状态
<a name="lifecycle-execution-statuses"></a>

使用控制台中的 RunLog 选项卡或 [list-lifecycle-exections 命令监控生命](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-executions.html) AWS CLI 周期执行进度。每次执行都会报告以下状态之一：

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

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

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

`FAILED`  
一个或多个资源操作遇到错误。使用 [list-lifecycle-execycle-exection-resources 命令确定哪些资源出现故障以及失](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-execution-resources.html)败原因

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

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

## 如何评估资源
<a name="lifecycle-execution-resource-evaluation"></a>

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

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

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

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

   评估因规则类型而异：  
对于弃用和禁用规则  

   1. 年龄过滤器检查（如果已配置）— Image Builder 会检查图像是否超过指定的阈值。

   1. Image-level 标签排除检查 (`exclusionRules.tagMap`)-Image Builder 会跳过带有排除标签的图像。  
对于删除规则  

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

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

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

   1. Image-level 标签排除检查 (`exclusionRules.tagMap`)-对于通过保留检查的图像（原本会被删除的图像），Image Builder 会检查排除标签。如果存在，Image Builder 会跳过该图像。
Image Builder 先评估留存率，然后再排除标签。无论排除标签如何，保留期内的图像都将受到保护。标签排除仅适用于超过保留期限的图片。
不包含标签的图像不会占用保留时段，也不会影响其他图像的保留计数。

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

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

## 删除规则的保留工作原理
<a name="lifecycle-execution-retention"></a>

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

有关留存率计算的详细逻辑，包括基于年龄和基于计数的筛选行为，请参阅。[如何计算留存率](image-lifecycle-rules.md#image-lifecycle-rules-retention)

## 手动管理资源状态
<a name="lifecycle-execution-manual"></a>

您可以使用 start-r [esource-state-update 命令触发特定映像构建版本的即时生命周期状态](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/start-resource-state-update.html)更改，而无需等待下一次计划运行。

支持的过渡：
+ **弃用**-将图片标记为已弃用。
+ **禁用**-阻止映像启动新实例。
+ **删除**-删除图像及其关联资源（必须至少指定一种关联的资源类型）。
+ **可用**-将已弃用或禁用的图像恢复到可用状态。

每次手动状态更改都会创建单独的生命周期执行。使用 [list-lifecycle-exec](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-executions.html) tions 命令对其进行跟踪。

## 取消处决
<a name="lifecycle-execution-cancel"></a>

使用取消[生命周期执行命令或 Image Builder 控制台取消](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/cancel-lifecycle-execution.html)正在进行或待处理的执行。

当你取消执行时：
+ 在完成当前资源操作`CANCELLING`时，执行会过渡到。
+ 当前操作完成后，执行将转换为`CANCELLED`。
+ Image Builder 不会回滚已经处理过的资源。例如，取消之前已弃用的图片仍不推荐使用。
+ Image Builder 会跳过未处理的资源。

## 生命周期策略如何处理外部修改的资源
<a name="lifecycle-execution-externally-modified"></a>

您或其他 AWS 服务可以在 Image Builder 生命周期策略之外修改您账户中的资源。外部修改示例：
+ 通过亚马逊 EC2 控制台注销 AMI
+ 使用亚马逊 EC2 API 弃用 AMI
+ 从 Amazon ECR 存储库中删除容器镜像
+ 使用 Image Builder API 删除 Image Builder 图像资源

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

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

## 监控执行结果
<a name="lifecycle-execution-monitoring"></a>

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

执行级别  
查看策略的所有执行情况，包括状态、开始时间和结束时间。  
+ **控制台**-打开生命周期策略详细信息页面并选择**RunLog**选项卡。有关更多信息，请参阅 [RunLog 选项卡](view-lifecycle-policy.md#view-lifecycle-policy-console-runlog-tab)。
+ **AWS CLI**— 使用[生命周期策略 ARN 运行列表生命周期执行。](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-executions.html)

资源等级  
查看执行中每种资源的结果。  
+ **控制台**-在**RunLog**选项卡中，选择执行 ID 以查看已处理的资源。
+ **AWS CLI**— 使用执行 [ID 运行列表生命周期](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-execution-resources.html)执行资源。
每个资源条目包括：  
+ 资源 ARN
+ 已采取（或已尝试）的操作
+ 资源状态（`SUCCESS``FAILED`、或`SKIPPED`）
+ 结果的原因（对于跳过或失败的资源特别有用）