在 Amazon ECR 中使用生命週期政策來自動化映像的清除 - Amazon ECR

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

在 Amazon ECR 中使用生命週期政策來自動化映像的清除

Amazon ECR 生命週期政策提供對私有儲存庫中映像的生命週期管理的更多控制。生命週期政策包含一或多個規則,每個規則都會定義 Amazon ECR 的動作。根據生命週期政策中的過期條件,映像會根據 24 小時內的存留期或計數而過期。當 Amazon ECR 根據生命週期政策執行動作時,此動作會擷取為 中的事件 AWS CloudTrail。如需詳細資訊,請參閱使用 記錄 Amazon ECR 動作 AWS CloudTrail

生命週期政策如何運作

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

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

顯示生命週期政策評估和應用程序的圖表。
  1. 建立一或多個測試規則。

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

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

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

  5. 檢閱測試結果,確保標示為過期的映像符合您的預期。

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

  7. 建立生命週期政策後,您可預期映像將在符合到期條件後的 24 小時內過期。

生命週期政策評估規則

生命週期政策評估工具負責剖析生命週期政策的純文字 JSON、評估所有規則,然後根據規則優先順序套用這些規則至儲存庫中的映像。以下詳細說明生命週期政策評估工具的邏輯。如需範例,請參閱 Amazon ECR 中的生命週期政策範例

  • 當儲存庫中有參考成品時,Amazon ECR 生命週期政策會在刪除主體映像的 24 小時內自動清除這些成品。

  • 不論規則優先順序,都會同時評估所有規則。評估所有規則之後,就會根據規則優先順序進行套用。

  • 使用正好一個或零個規則來使映像過期。

  • 不可使用優先順序低的規則使符合優先順序高的規則標記要求的映像過期。

  • 規則絕不可標記以較高優先順序規則標記的映像,但是,優先順序低的規則仍能找出這些映像,就好像它們還沒有過期一樣。

  • 規則組必須包含獨特的標籤前綴組合。

  • 僅允許一個規則選擇未標記的映像。

  • 如果清單檔案清單參考了映像檔,則映像檔無法在沒有先刪除清單檔案清單的情況下過期。

  • 過期一律以 pushed_at_time 排列,且過期順序須為舊映像先、新映像後。

  • 生命週期政策規則可指定 tagPatternListtagPrefixList,但不能同時指定兩者。不過,生命週期策略可包含多項規則,不同規則可同時使用模式和字首清單。如果 tagPatternListtagPrefixList值中的所有標籤都與任何影像的標籤相符,則會成功比對影像。

  • 唯有當 tagStatustagged 時,才能使用 tagPatternListtagPrefixList 參數。

  • 使用 tagPatternList 時,如果映像與萬用字元篩選條件相符,便會成功配對映像。例如,如果prod*套用篩選條件,它會比對名稱開頭為 的影像標籤prod1prod例如 prod、 或 production-team1。同樣地,如果*prod*套用篩選條件,則會比對名稱包含 repo-productionprod的影像標籤prod-team

    重要

    每個字串最多可有 4 個萬用字元 (*),例如 ["*test*1*2*3", "test*1*2*3*"] 是有效字串,但 ["test*1*2*3*4*5*6"] 則為無效。

  • 使用 時tagPrefixList,如果tagPrefixList值中的所有萬用字元篩選條件都與任何影像的標籤相符,則會成功比對影像。

  • 只有在 countTypesinceImagePushed 時才會使用 countUnit 參數。

  • 使用 countType = imageCountMoreThan,映像會根據 pushed_at_time 來自最新至最舊排序,接著所有大於指定計數的映像皆會過期。

  • 使用 countType = sinceImagePushed,所有 pushed_at_time 大於根據 countNumber 之指定天數的映像都會過期。