本頁面說明如何設定 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 伺服器執行指令,請按照下列步驟操作:
- 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
- 如果是雙可用區 bucket,請按照下列步驟操作:
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
BucketLocationConfig自訂資源。 - 產生全域 API 伺服器的 kubeconfig 檔案。
- 請向基礎架構運作人員 (IO) 確認,已為配對可用區建立
設定 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 也設定了物件鎖定功能,物件在保留天數結束前就不會到期。