

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 生命週期政策執行的運作方式
<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-executions](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-execution-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. **資源選擇** – 映像建置器會識別符合政策範圍的所有映像資源，由配方篩選條件 （包括版本模式） 或標籤篩選條件定義。

1. **主動建置檢查** – Image Builder 會略過正在進行建置的映像 （建置、測試或分佈狀態），並在下次執行時對其進行評估。

1. **規則評估** – Image Builder 會依優先順序評估規則：棄用、停用，然後刪除。每次執行時，每個映像只會套用一個動作。如果映像符合棄用規則，映像建置器會在相同執行期間略過該映像的停用和刪除規則。

   評估因規則類型而異：  
對於棄用和停用規則  

   1. AGE 篩選條件檢查 （如果已設定） – 映像建置器會檢查映像是否早於指定的閾值。

   1. 影像層級標籤排除檢查 (`exclusionRules.tagMap`) – 影像建置器會略過具有排除標籤的影像。  
對於刪除規則  

   1. AGE 或 COUNT 篩選條件檢查 – 對於 AGE，映像建置器會檢查映像是否早於閾值。對於 COUNT，Image Builder 會檢查是否已達到保留計數。

   1. 失敗或取消的檢查 – 處於失敗或取消狀態的影像符合刪除資格，且不會耗用保留槽。

   1. 保留檢查 – 如果您已設定`retainAtLeast`值 (AGE 篩選條件） 或計數值 (COUNT 篩選條件），則最新影像會先填滿保留位置。填補保留插槽的影像會保留，無需進一步評估。

   1. 影像層級標籤排除檢查 (`exclusionRules.tagMap`) – 對於通過保留檢查的影像 （否則會刪除的影像），影像建置器會檢查排除標籤。如果存在，映像建置器會略過映像。
Image Builder 會在標籤排除前評估保留。無論排除標籤為何，保留時段內的映像都會受到保護。標籤排除僅適用於超過保留限制的影像。
標籤排除的影像不會耗用保留插槽，也不會影響其他影像的保留計數。

1. **AMI 層級排除檢查** – 在確定合格映像之後，Image Builder 會根據 AMIs 層級排除規則 () 評估其輸出 AMI`exclusionRules.amis`。這些規則包括區域排除、公有 AMI 排除、AMI 標籤排除、共用帳戶排除和上次啟動排除。Image Builder 會報告符合任何排除標準的輸出 AMI`SKIPPED`，如同指出相符條件的原因。

**注意**  
後續執行會在符合條件時，將停用或刪除規則套用至先前已棄用的資源。

## 保留如何適用於刪除規則
<a name="lifecycle-execution-retention"></a>

保留篩選條件 (AGE 和 COUNT) 會根據映像建置器映像資源進行評估，而不是直接輸出 AMIs或容器。Image Builder 會為每個配方版本保留最新的映像，並標記較舊的映像以供刪除。

如需詳細的保留計算邏輯，包括以存留期和以計數為基礎的篩選行為，請參閱 [如何計算保留](image-lifecycle-rules.md#image-lifecycle-rules-retention)。

## 手動管理資源狀態
<a name="lifecycle-execution-manual"></a>

您可以使用 [start-resource-state-update](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/start-resource-state-update.html) 命令觸發特定映像建置版本的立即生命週期狀態變更，而無需等待下一次排定的執行。

支援的轉換：
+ **棄用** – 將影像標記為棄用。
+ **停用** – 防止映像啟動新的執行個體。
+ **刪除** – 刪除映像及其相關聯的資源 （您必須至少指定一個相關聯的資源類型）。
+ **可用** – 將已棄用或已停用的映像傳回可用狀態。

每個手動狀態變更都會建立個別的生命週期執行。使用 [list-lifecycle-executions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-executions.html) 命令進行追蹤。

## 取消執行
<a name="lifecycle-execution-cancel"></a>

使用 cancel[cancel-lifecycle-execution](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/cancel-lifecycle-execution.html)命令或 Image Builder 主控台取消進行中或待定執行。

當您取消執行時：
+ 執行會在完成目前的資源動作`CANCELLING`時轉換為 。
+ 目前動作完成後，執行會轉換為 `CANCELLED`。
+ Image Builder 不會復原已處理的資源。例如，在取消保留已棄用之前已棄用的影像。
+ Image Builder 會略過未處理的資源。

## 生命週期政策如何處理外部修改的資源
<a name="lifecycle-execution-externally-modified"></a>

您或其他 AWS 服務可以在 Image Builder 生命週期政策之外修改帳戶中的資源。外部修改的範例：
+ 透過 Amazon EC2 主控台取消註冊 AMI
+ 使用 Amazon EC2 API 的 AMI 棄用
+ 從 Amazon ECR 儲存庫刪除容器映像
+ 使用映像建置器 API 刪除映像建置器映像資源

如果資源已刪除或已經處於所需狀態，Image Builder 會將動作報告為 `SUCCESS`。透過其他方式清理資源時，政策不會失敗。

**注意**  
`SKIPPED` 狀態不同。映像建置器`SKIPPED`只會在資源存在時回報，但排除規則會阻止 動作。

## 監控執行結果
<a name="lifecycle-execution-monitoring"></a>

在兩個層級監控生命週期執行結果：

執行層級  
檢視政策的所有執行，包括狀態、開始時間和結束時間。  
+ **主控台** – 開啟生命週期政策詳細資訊頁面，然後選擇 **RunLog** 標籤。如需詳細資訊，請參閱[RunLog 標籤](view-lifecycle-policy.md#view-lifecycle-policy-console-runlog-tab)。
+ **AWS CLI** – 使用生命週期政策 ARN 執行 [list-lifecycle-executions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-executions.html)。

資源層級  
在 執行中檢視每個資源的結果。  
+ **主控台** – 在 **RunLog** 索引標籤中，選擇執行 ID 以檢視已處理的資源。
+ **AWS CLI** – 使用執行 ID 執行 [list-lifecycle-execution-resources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-lifecycle-execution-resources.html)。
每個資源項目包括：  
+ 資源 ARN
+ 採取的動作 （或嘗試的動作）
+ 資源狀態 (`SUCCESS`、 `FAILED`或 `SKIPPED`)
+ 結果的原因 （對於略過或失敗的資源特別有用）