為儲存空間值區設定物件生命週期政策

本頁面說明如何設定 Google Distributed Cloud (GDC) 實體隔離儲存空間 bucket 的物件生命週期政策。

事前準備

Storage bucket 是特定專案範圍內的資源。專案就像容器,可將 bucket 分組,並透過 Management API 伺服器管理。您必須先建立新專案,或選取具備足夠權限的現有專案,才能執行這個頁面的作業。

必要的 IAM 角色

請與 IAM 專案管理員聯絡,要求在專案命名空間中取得下列角色:

  • Bucket 專案管理員 (project-bucket-admin):建立、更新及刪除儲存空間 bucket。
  • Bucket 物件專案檢視者 (project-bucket-object-viewer):查看及檢查儲存空間 bucket 和物件的詳細資料。

詳情請參閱「授予 bucket 存取權」。

準備環境

如要對管理 API 伺服器或全域 API 伺服器執行指令,請按照下列步驟操作:

  1. 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
  2. 如果是雙可用區 bucket,請按照下列步驟操作:

設定 bucket 的物件生命週期政策

您可以使用物件生命週期政策,自動管理 bucket 中的物件。這有助於在資料生命週期內更有效率地儲存資料。生命週期設定是一組規則,可根據特定比對條件,讓一組物件到期。

建立 bucket 時,可以選擇是否要設定物件生命週期政策。建立 bucket 後,您可以套用新的生命週期政策、更新現有政策或移除現有政策。

如果 bucket 未啟用版本管理功能,到期代表系統會以非同步方式永久移除物件。

如果 bucket 啟用版本管理功能,且目前的物件版本不是刪除標記,到期後,目前的版本會變成非現行版本,並新增刪除標記。

如要設定及修改物件生命週期政策,請更新 Bucket.spec.bucketPolicy.lifecyclePolicy 欄位。

CLI

以下是幾個 bucket 資源範例,分別設定了不同的物件生命週期政策:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire all objects after 365 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 365
        id: expire-all-after-365-days
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-logs-dir-after-30-days
        status: Enabled
        filter:
          prefixFilter: "logs/"
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-tagged-objects-after-30-days
        status: Enabled
        filter:
          tagFilters:
          - key: environment
            value: dev
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - noncurrentExpiration:
          noncurrentDays: 90
        id: expire-noncurrent-after-90-days
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects on a specific date"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          date: "2027-01-01T00:00:00Z"
        id: expire-on-specific-date
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with multiple lifecycle rules and advanced filters"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      # Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
      - expiration:
          days: 7
        id: expire-ready-tmp-objects
        status: Enabled
        filter:
          prefixFilter: "tmp/"
          tagFilters:
          - key: status
            value: ready
      # Rule 2: Expire all objects in 'logs/' directory after 90 days
      - expiration:
          days: 90
        id: expire-logs-after-90-days
        status: Enabled
        filter:
          prefixFilter: "logs/"

生命週期政策的任何更新,都會套用至現有物件和更新後上傳的物件。

如果 bucket 也設定了物件鎖定功能,物件在保留天數結束前就不會到期。