設定清理政策

本文說明如何建立及管理清除政策。

必要的角色

如要取得套用或移除清除政策所需的權限,請要求管理員授予您存放區專案的 Artifact Registry 管理員 (roles/artifactregistry.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備套用或移除清除政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要套用或移除清除政策,您必須具備下列權限:

  • artifactregistry.repositories.update
  • 如要刪除符合資源清理政策條件的構件: artifactregistry.versions.delete

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

Artifact Registry 服務代理的預設角色包含 artifactregistry.versions.delete 權限,這是刪除符合清除政策條件的映像檔時的必要權限。

建立政策檔案

政策檔案是 JSON 檔案,用於定義刪除和保留政策。您可以建立及編輯 JSON 檔案來建立政策檔案,然後使用 Google Cloud CLI 套用政策,或使用 Google Cloud 控制台。刪除政策會指定刪除構件的條件。保留政策會指定保留構件的條件,或要保留的最新版本數量。您無法在同一項保留政策中使用條件和最新版本。

建立刪除政策

刪除政策可讓您指定刪除構件的最低或最高年齡,以及其他篩選條件,將政策限制為特定構件。

如有任何原因導致您不想刪除特定構件,請建立條件式保留政策或最新版本保留政策,以及刪除政策。如果構件同時符合刪除政策和保留政策的條件,系統會保留該構件。

主控台

您可以為新存放區或現有存放區建立刪除政策。

如要為現有存放區新增刪除政策,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「資源清理政策」部分中,選取「模擬測試」,先測試新政策,再決定是否要刪除任何構件。如要進一步瞭解如何查看測試結果,請參閱「模擬執行」。

    確認政策運作正常後,請再次編輯存放區設定,然後選取「刪除構件」,套用清理政策並刪除所選構件。

  4. 按一下「新增資源清理政策」,然後新增下列項目:

    • 「名稱」:為資源清理政策命名。您套用至存放區的政策群組中,名稱不得重複。
    • 政策類型:選取「條件式刪除」
    • 標記狀態:指出政策應檢查已標記或未標記的構件。將映像檔推送至存放區或從存放區提取映像檔時,系統會為構件加上標記。如要進一步瞭解 Docker 標記,請參閱容器概念

      • 任何標記狀態:忽略標記狀態,並套用至已標記和未標記的構件。
      • 已標記:僅適用於已標記的構件。
      • 未加上標記:僅適用於未加上標記的構件。

      不支援標記的格式會視為 untagged。 如果存放區已啟用不可變更的標記,就無法刪除已加上標記的構件。

      如要進一步瞭解適用於清除政策的標記狀態,請參閱標記狀態參考資料

  5. 以下是定義刪除政策的選用方式:

    • 標記前置字元:以半形逗號分隔的標記前置字元清單。舉例來說,前置字串 teststaging 會比對標記為 testenvstaging-1.5 的圖片。如要使用代碼前置字元,tagState 必須設為 TAGGED
    • 版本前置字串:是以逗號分隔的構件版本前置字串清單。舉例來說,v1v2 會比對 v1.5v2.0alphav10.2 版本。
    • 套件前置字串:構件名稱前置字串清單。如要輸入多個前置字串,請在各個前置字串之間按下 Enter,。 舉例來說,red, blue 會建立 redblue 兩個前置字串,並比對構件名稱 red-teamredisbluebird
    • 早於:是指構件版本在存放區中建立後經過的最短時間,以時間長度表示。例如 30d 是 30 天。如要指定秒、分、時或天數,請分別附加 smhd
    • 新於:是構件版本在存放區中建立後經過的最長時間,以時間長度表示。例如 30d 是 30 天。
  6. 如要新增更多資源清理政策,請按一下「加入資源清理政策」

  7. 按一下「更新」

    系統會將清理政策套用至存放區。按一下「顯示更多」,即可在「存放區詳細資料」部分查看清除政策。

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

刪除政策必須包含名稱、動作和至少一個條件。

name
在刪除政策程式碼片段中,DELETE_POLICY_NAME 是政策名稱。您套用至存放區的政策群組中,名稱不得重複。
action
如果是刪除政策,值為 {"type": "Delete"}
condition
指定下列一或多項條件:
  • tagStateTAG_STATUS 表示政策應檢查已標記或未標記的構件。將映像檔推送至存放區或從存放區提取映像檔時,系統會為構件加上標記。支援的值如下:

    • tagged:僅適用於已標記的構件。
    • untagged:僅適用於未加上標記的構件。
    • any:忽略標記狀態,適用於已標記和未標記的構件。

    不支援標記的格式會視為 untagged。如果存放區已啟用不可變更的標記,就無法刪除已標記的構件。

    如要進一步瞭解 Docker 標記,請參閱「容器概念」。

  • tagPrefixesTAG_PREFIXES 是以半形逗號分隔的標記前置字串清單。舉例來說,"test", "staging" 會比對標記為 "testenv""staging-1.5" 的圖片。如要使用代碼前置字元,tagState 必須設為 TAGGED

  • versionNamePrefixesVERSION_PREFIXES 是以逗號分隔的構件版本前置字串清單。舉例來說,"v1", "v2" 會比對 "v1.5""v2.0alpha""v10.2" 版本。

  • packageNamePrefixesPACKAGE_PREFIXES 是以逗號分隔的構件名稱前置字元清單。舉例來說,"red", "blue" 會比對構件名稱 "red-team""redis""bluebird"

  • olderThanOLDER_THAN_DURATION 是指從在存放區中建立構件版本起算的最短時間,以時間長度表示。例如 30d 是 30 天。如要指定秒、分、時或天數,請分別附加 smhd

  • newerThanNEWER_THAN_DURATION 是指在存放區中建立構件版本後經過的最長時間,以時間長度表示。例如 30d 是 30 天。

Artifact Registry 會使用定期執行的背景工作,模擬測試及實際執行清除政策。變更會在約一天內生效。

建立有條件保留政策

有條件保留政策會指定保留構件的條件。保留政策會與刪除政策搭配使用,保留根據刪除政策規格應刪除,但您想保留的構件。如果構件同時符合刪除政策和保留政策的條件,系統會保留該構件。

主控台

您可以為新的或現有的存放區建立保留政策。

如要為現有存放區新增保留政策:

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「資源清理政策」部分中,選取「模擬測試」,先測試新政策,再決定是否要刪除任何構件。您必須設定至少一項刪除政策,才能查看保留政策的結果。如要進一步瞭解如何查看測試結果,請參閱模擬執行

    確認政策運作正常後,請再次編輯存放區設定,然後選取「刪除構件」,套用清理政策並刪除所選構件。

  4. 按一下「新增資源清理政策」,然後新增下列項目:

    • 「名稱」:為資源清理政策命名。您套用至存放區的政策群組中,名稱不得重複。
    • 政策類型:選取「有條件保留」
    • 標記狀態:指出政策應檢查已標記或未標記的構件。將映像檔推送至存放區或從存放區提取映像檔時,系統會為構件加上標記。如要進一步瞭解 Docker 標記,請參閱容器概念

      • 任何標記狀態:忽略標記狀態,並套用至已標記和未標記的構件。
      • 已標記:僅適用於已標記的構件。
      • 未加上標記:僅適用於未加上標記的構件。

      不支援標記的格式會視為 untagged。 如果存放區已啟用不可變更的標記,就無法刪除已加上標記的構件。如要進一步瞭解適用於清除政策的標記狀態,請參閱標記狀態參考資料

  5. 以下是定義保留政策的選用方式:

    • 標記前置字元:以半形逗號分隔的標記前置字元清單。舉例來說,前置字串 teststaging 會比對標記為 testenvstaging-1.5 的圖片。如要使用代碼前置字元,tagState 必須設為 TAGGED
    • 版本前置字串:是以逗號分隔的構件版本前置字串清單。舉例來說,v1v2 會比對 v1.5v2.0alphav10.2 版本。
    • 套件前置字元:以半形逗號分隔的構件名稱前置字元清單。 舉例來說,red, blue 會比對構件名稱 red-teamredisbluebird
    • 早於:是指構件版本在存放區中建立後經過的最短時間,以時間長度表示。例如 30d 是 30 天。如要指定秒、分、時或天數,請分別附加 smhd
    • 新於:是構件版本在存放區中建立後經過的最長時間,以時間長度表示。例如 30d 是 30 天。
  6. 如要新增更多資源清理政策,請按一下「加入資源清理政策」

  7. 按一下「更新」

    系統會將清理政策套用至存放區。

JSON

格式與刪除政策類似。如果是保留政策,action 的值為 {"type": "Keep"}

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

更改下列內容:

  • KEEP_POLICY_NAME 替換為資源清理政策的名稱。您套用至存放區的政策群組中,名稱不得重複。
  • TAG_STATUS 標記狀態,指出政策應檢查已標記或未標記的構件。將映像檔推送至存放區或從存放區提取映像檔時,系統會為構件加上標記。如要進一步瞭解 Docker 標記,請參閱「容器概念」。

    選項如下:

    • tagged:僅適用於已標記的構件。
    • untagged:僅適用於未加上標記的構件。
    • any:適用於所有版本

    不支援標記的格式會視為 untagged。 如果存放區已啟用不可變更的標記,就無法刪除已加上標記的構件。如要進一步瞭解適用於清除政策的標記狀態,請參閱標記狀態參考資料

  • TAG_PREFIXES,並以逗號分隔標記前置字串。舉例來說,前置字串 teststaging 會比對標記為 testenvstaging-1.5 的圖片。如要使用代碼前置字元,tagState 必須設為 TAGGED

  • VERSION_PREFIXES,並以半形逗號分隔構件版本前置字元清單。舉例來說,v1, v2 會比對 v1.5v2.0alphav10.2 版本。

  • PACKAGE_PREFIXES,並以半形逗號分隔構件名稱前置字元。舉例來說,red, blue 會比對構件名稱 red-teamredisbluebird

  • OLDER_THAN_DURATION,並指定時間長度,表示從在存放區中建立構件版本以來經過的最短時間。例如 30d 是 30 天。如要指定秒、分、時或天數,請分別附加 smhd
  • NEWER_THAN_DURATION,並以時間長度為單位,指定在存放區中建立構件版本後的最長時間。例如 30d 是 30 天。

Artifact Registry 會使用定期執行的背景工作,模擬測試及實際執行清除政策。變更會在約一天內生效。

建立保留最新版本的政策

您可以建立保留政策,保留特定數量的版本。您無法在同一個保留政策中,同時使用「有條件保留」和「保留最新版本」條件。

保留政策會與刪除政策搭配運作,保留根據刪除政策規格應刪除,但您想保留的構件。如果構件符合刪除政策和保留政策的條件,系統會保留該構件。

主控台

您可以為新的或現有的存放區建立「保留最新版本」政策。

如要將「保留最新版本」政策新增至現有存放區,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「資源清理政策」部分中,選取「模擬測試」,先測試新政策,再決定是否要刪除任何構件。您必須設定至少一項刪除政策,才能查看保留政策的結果。如要進一步瞭解如何查看測試結果,請參閱模擬執行

    確認政策運作正常後,請再次編輯存放區設定,然後選取「刪除構件」,套用清理政策並刪除所選構件。

  4. 按一下「新增資源清理政策」,然後新增下列項目:

    • 「名稱」:為資源清理政策命名。您套用至存放區的政策群組中,名稱不得重複。
    • 政策類型:選取「保留最新版本」
  5. 在「Keep count」(保留計數) 欄位中,輸入要保留在存放區中的構件版本數量。

  6. 選用:選取「套件前置字元」,指定要套用保留政策的套件前置字元。舉例來說,red, blue 會比對構件名稱 red-teamredisbluebird

  7. 如要新增更多資源清理政策,請按一下「加入資源清理政策」

  8. 按一下「更新」

    系統會將清理政策套用至存放區。按一下「顯示更多」,即可在「存放區詳細資料」部分查看清除政策。

JSON

格式與刪除政策類似。如果是保留政策,action 的值為 {"type": "Keep"}

保留特定版本數量的保留政策會包含 mostRecentVersions 區段,而非 condition 區段。

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

更改下列內容:

  • KEEP_POLICY_NAME,並為保留政策命名。這個名稱在您套用至存放區的政策群組中不得重複。
  • PACKAGE_PREFIXES,並視需要提供要套用保留政策的套件前置字串。舉例來說,red, blue 會比對構件名稱 red-teamredisbluebird
  • MINIMUM_NUMBER,其中包含要在存放區中保留的構件版本數量。

如要將保留政策套用至存放區中的所有套件,請省略 packageNamePrefixes 條件。系統會保留存放區中每個套件指定數量的近期版本。

Artifact Registry 會使用定期執行的背景工作,模擬測試及實際執行清除政策。變更會在約一天內生效。

範例政策檔案

以下政策檔案範例有一個刪除政策和兩個保留政策。

  • 如果構件開頭為 alphav0delete-prerelease 政策會在上傳 30 天後移除構件版本。
  • keep-tagged-release 政策會保留以 release 前置字串標記的構件,這些構件的檔案名稱開頭為 webappmobile
  • keep-minimum-versions 政策會保留檔案名稱開頭為 webappmobilesandbox 的構件,最多保留五個最新版本。
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

透過模擬測試政策

如要測試清理政策,您可以在控制台中將清理政策設為模擬測試,或執行 gcloud artifacts set-cleanup-policies 指令並搭配使用 --dry-run 標記。

如要分析清除政策的影響,可以查看 Artifact Registry 資料存取稽核記錄。如要接收清理政策的資料存取稽核記錄,您必須明確啟用 Artifact Registry 服務的資料寫入類型資料存取稽核記錄。如要啟用資料存取稽核記錄,請參閱「啟用稽核記錄」一文。

主控台

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「資源清理政策」部分中,選取「模擬測試」

  4. 按一下「新增清除政策」,然後設定「有條件刪除」、「有條件保留」或「保留最新版本」政策的選項。

  5. 按一下「更新」

如果刪除政策導致 BatchDeleteVersions 動作,參數 validateOnly 會評估為 "true"

Artifact Registry 會使用定期執行的背景工作,模擬測試及實際執行清除政策。變更會在約一天內生效。

請等待至少一天,再查詢模擬測試的稽核記錄。

如要查詢清理政策模擬測試的稽核記錄,請執行下列指令:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

輸出結果會與下列內容相似:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud

如要使用清理政策進行試運轉,請執行下列指令:

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

更改下列內容:

  • REPOSITORY 替換為存放區的名稱。
  • PROJECT_ID 替換為專案的 ID。 Google Cloud
  • LOCATION 是存放區的區域或多區域位置

如果刪除政策導致 BatchDeleteVersions 動作,參數 validateOnly 會評估為 "true"

Artifact Registry 會使用定期執行的背景工作,模擬測試及實際執行清除政策。變更會在約一天內生效。

請等待至少一天,再查詢模擬測試的稽核記錄。

如要查詢清理政策模擬測試的稽核記錄,請執行下列指令:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

輸出結果會與下列內容相似:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

對存放區套用政策

如要使用本機 JSON 檔案中定義的清除政策,請使用 gcloud CLI 將政策套用至要由 Artifact Registry 自動刪除構件版本的存放區。

如要在控制台中套用設為「模擬測試」的資源清理政策,請將政策設為「刪除構件」

您只能對標準存放區套用清理政策。您無法對下列項目套用清除政策:

  • Google Cloud 專案。

主控台

如要套用資源清理政策,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「清除政策」部分,選取「刪除構件」

    Artifact Registry 會定期執行背景工作,根據政策刪除及保留構件。變更應會在一天內生效。

gcloud

如要套用清除政策,請在包含清除政策檔案的目錄中執行下列指令。

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

更改下列內容:

  • REPOSITORY 替換為存放區的名稱。
  • PROJECT_ID 替換為專案的 ID。 Google Cloud
  • LOCATION 是存放區的區域或多區域位置
  • POLICY_FILE 是包含清除政策的檔案名稱。

--no-dry-run 旗標會停用存放區的試執行功能。

舉例來說,下列指令會將 policy.json 中的政策套用至專案 my-projectus-west1 地區的存放區 my-repo

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-west1 \
    --policy=policy.json

Artifact Registry 會使用定期執行的背景工作,刪除及保留符合政策的構件。變更應會在一天內生效。

更新政策

主控台

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「清除政策」部分,按一下要設定或修改的政策名稱。

  4. 編輯資源清理政策,然後按一下「更新」

    系統會將清理政策套用至存放區。

gcloud

如要更新現有政策,請編輯政策檔案中的設定,然後再次執行下列指令套用政策

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

更改下列內容:

  • REPOSITORY 替換為存放區的名稱。
  • PROJECT_ID 替換為專案的 ID。 Google Cloud
  • LOCATION 是存放區的區域或多區域位置
  • POLICY_FILE 是包含清除政策的檔案名稱。

--no-dry-run 旗標會停用存放區的試執行功能。

列出存放區資源清理政策

您可以查看與存放區相關聯的資源清理政策。

主控台

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中,選取要查看的存放區。

  3. 在「存放區詳細資料」部分,按一下「顯示更多」

    系統會顯示清除政策名稱。

  4. 如要查看或編輯存放區的清理政策詳細資料,請按一下「編輯存放區」

    現有的資源清理政策詳細資料會列在「資源清理政策」專區。

gcloud

執行下列指令:

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

更改下列內容:

  • REPOSITORY 替換為存放區的名稱。
  • PROJECT_ID 替換為專案的 ID。 Google Cloud
  • LOCATION 是存放區的區域或多區域位置

從存放區移除政策

如果不想再讓 Artifact Registry 自動刪除構件版本,請從存放區移除清理政策。

主控台

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 在存放區清單中選取存放區,然後按一下「編輯存放區」

  3. 在「清除政策」部分,將游標懸停在要刪除的政策名稱上。

  4. 按一下「刪除」圖示。

  5. 按一下「更新」

    已刪除清理政策。

gcloud

執行下列指令:

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

更改下列內容:

  • REPOSITORY 是存放區的名稱。
  • PROJECT_ID是 Google Cloud 專案的 ID。
  • LOCATION 是存放區的區域或多區域位置
  • POLICY_NAMES 是以半形逗號分隔的政策名稱清單,列出要移除的政策。

舉例來說,下列指令會從專案 my-project 中,位於 us-west1 地區的存放區 my-repo 移除名為 delete-test 的政策:

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-west1

資源清理政策的稽核記錄項目

如要在 Cloud Logging 中查看清除政策記錄項目,請啟用 DATA_WRITE 記錄功能。

在存放區中設定資源清理政策時,這項作業會記錄為存放區更新 (UpdateRepository 作業)。

Artifact Registry 刪除構件版本時,會在 Cloud Logging 資料存取記錄中記錄該事件。記錄項目顯示 Artifact Registry 服務帳戶執行了刪除作業。Artifact Registry 服務帳戶 ID 的格式為 service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com