

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

# 在 Amazon ECR 中使用生命週期政策來自動化映像的清除
<a name="LifecyclePolicies"></a>

Amazon ECR 生命週期政策提供對私有儲存庫中映像的生命週期管理的更多控制。生命週期政策包含一或多個規則，每個規則都會定義 Amazon ECR 的動作。根據生命週期政策中的過期條件，可以根據生命週期政策中指定的條件在 24 小時內封存或過期映像。當 Amazon ECR 根據生命週期政策執行動作時，此動作會擷取為 中的事件 AWS CloudTrail。如需詳細資訊，請參閱[使用 記錄 Amazon ECR 動作 AWS CloudTrail](logging-using-cloudtrail.md)。

## 生命週期政策如何運作
<a name="lifecycle-policy-howitworks"></a>

生命週期政策由一或多個規則組成，用以決定儲存庫中的映像過期與否。在考慮使用生命週期政策時，請務必使用生命週期政策預覽來確認生命週期政策到期的映像，然後再將其套用至儲存庫。將生命週期政策套用至儲存庫後，您可預期映像將在符合到期條件後的 24 小時內過期。當 Amazon ECR 依據生命週期政策執行動作時，在 AWS CloudTrail中會將此動作視為事件。如需詳細資訊，請參閱[使用 記錄 Amazon ECR 動作 AWS CloudTrail](logging-using-cloudtrail.md)。

以下圖表顯示生命週期政策工作流程。

![顯示生命週期政策評估和應用程序的圖表。](http://docs.aws.amazon.com/zh_tw/AmazonECR/latest/userguide/images/lifecycle-policy.png)


1. 建立一或多個測試規則。

1. 儲存測試規則並執行預覽。

1. 生命週期政策評估工具會檢視所有規則，並標記每個規則會影響的映像。

1. 然後，生命週期政策評估器會根據規則優先順序套用規則，並顯示儲存庫中哪些映像設定為過期或封存。規則優先順序數字越低表示優先順序越高。例如，優先順序為 1 的規則優先於優先順序為 2 的規則。

1. 檢閱測試結果，確保標記為過期或封存的映像符合您預期。

1. 套用測試規則作為儲存庫的生命週期政策。

1. 建立生命週期政策後，您應該預期映像會在符合過期條件後的 24 小時內過期或封存。

### 生命週期政策評估規則
<a name="lp_evaluation_rules"></a>

生命週期政策評估工具負責剖析生命週期政策的純文字 JSON、評估所有規則，然後根據規則優先順序套用這些規則至儲存庫中的映像。以下詳細說明生命週期政策評估工具的邏輯。如需範例，請參閱 [Amazon ECR 中的生命週期政策範例](lifecycle_policy_examples.md)。
+ 當儲存庫中有參考成品時，Amazon ECR 生命週期政策會在刪除或封存主體映像的 24 小時內自動過期或封存這些成品。
+ 不論規則優先順序，都會同時評估所有規則。評估所有規則之後，就會根據規則優先順序進行套用。
+ 映像已過期或僅由一或零個規則封存。
+ 符合規則標記需求的映像，無法由優先順序較低的規則過期或封存。
+ 規則永遠無法標記由較高優先順序規則標記的影像，但仍可以將其識別為尚未過期或封存。
+ 選取特定儲存類別的所有規則集必須包含一組唯一的字首。
+ 只允許選取一個特定儲存類別的規則來選取未標記的影像。
+ 如果資訊清單清單參考影像，則必須先刪除或封存資訊清單清單，才能過期或封存該影像。
+ 過期一律由 `pushed_at_time`或 排序，`transitioned_at_time`並一律在較新的映像之前過期。如果影像已封存，然後在過去的任何時間點還原，`last_activated_at`則會使用影像的 而非 `pushed_at_time`。
+ 生命週期政策規則可指定 `tagPatternList` 或 `tagPrefixList`，但不能同時指定兩者。不過，生命週期策略可包含多項規則，不同規則可同時使用模式和字首清單。如果 `tagPatternList`或 `tagPrefixList`值中的所有標籤都與任何影像的標籤相符，則會成功比對影像。
+ 唯有當 `tagStatus` 是 `tagged` 時，才能使用 `tagPatternList` 或 `tagPrefixList` 參數。
+ 使用 `tagPatternList` 時，如果映像與萬用字元篩選條件相符，便會成功配對映像。例如，如果`prod*`套用篩選條件，它會比對名稱開頭為 的影像標籤`prod1`，`prod`例如 `prod`、 或 `production-team1`。同樣地，如果`*prod*`套用篩選條件，則會比對名稱包含 `repo-production`或 `prod`的影像標籤`prod-team`。
**重要**  
每個字串最多可有 4 個萬用字元 (`*`)，例如 `["*test*1*2*3", "test*1*2*3*"]` 是有效字串，但 `["test*1*2*3*4*5*6"]` 則為無效。
+ 使用 時`tagPrefixList`，如果`tagPrefixList`值中的所有******萬用字元篩選條件都符合任何影像的標籤，則映像會成功比對。
+ `countUnit` 參數僅在 `countType`為 `sinceImagePushed`、 `sinceImagePulled`或 時使用`sinceImageTransitioned`。
+ 使用 時`countType = imageCountMoreThan`，影像會根據 來從最小到最舊排序，`pushed_at_time`然後所有大於指定計數的影像都會過期或封存。
+ 使用 `countType = sinceImagePushed`時，其 `pushed_at_time` 早於根據 指定天數的所有映像`countNumber`都會過期或封存。
+ 使用 `countType = sinceImagePulled`時，`countNumber`會封存其 `last_recorded_pulltime` 早於根據 指定天數的所有映像。如果從未提取影像，`pushed_at_time`則會使用影像的 而非 `last_recorded_pulltime`。如果影像已封存，然後在過去的任何時間點還原，但自影像還原以來從未提取，`last_activated_at`則會使用影像的 ，而非 `last_recorded_pulltime`。
+ 使用 `countType = sinceImageTransitioned`時，所有`last_archived_at`早於 所指定天數的封存映像`countNumber`都會過期。
+ 過期一律由 排序，`pushed_at_time`並在較新的映像之前一律過期。