ストレージ バケットのオブジェクト ライフサイクル ポリシーを設定する

このページでは、Google Distributed Cloud(GDC)エアギャップ ストレージ バケットのオブジェクト ライフサイクル ポリシーを設定する方法について説明します。

始める前に

ストレージ バケットは、特定の プロジェクト をスコープとするリソースです。プロジェクトはコンテナとして機能し、バケットをグループ化して Management API サーバーで管理できるようにします。このページの手順を行うには、十分な権限を持つ新しいプロジェクトを作成するか、既存のプロジェクトを選択する必要があります。

必要な IAM のロール

IAM プロジェクト管理者に連絡して、プロジェクト名前空間で次のロールをリクエストしてください。

  • プロジェクト バケット管理者 (project-bucket-admin): ストレージ バケットの作成、更新、削除。
  • プロジェクト バケット オブジェクト閲覧者 (project-bucket-object-viewer): ストレージ バケットとオブジェクトの詳細の表示と確認。

詳細については、バケットへのアクセス権を付与するをご覧ください。

環境を準備する

Management API サーバーまたはグローバル API サーバーに対してコマンドを実行するには、次の操作を行います。

  1. ログインして生成します。ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、
  2. デュアルゾーン バケットの場合は、次の操作を行います。

バケットにオブジェクト ライフサイクル ポリシーを設定する

オブジェクト ライフサイクル ポリシーを使用すると、バケット内のオブジェクトを自動的に管理できます。これにより、ライフサイクル全体でデータをより効率的に保存できます。ライフサイクル構成は、特定の照合条件に基づいてオブジェクトのグループを期限切れにするルールのリストです。

オブジェクト ライフサイクル ポリシーの有無にかかわらず、バケットを作成できます。また、バケットの作成後に、新しいライフサイクル ポリシーを適用したり、既存のライフサイクル ポリシーを更新または削除したりすることもできます。

バージョニングされていないバケットの場合、期限切れとは、オブジェクトを非同期で完全に削除することを意味します。

バージョニングされたバケットの場合、現在のオブジェクト バージョンが削除マーカーでない場合、期限切れになると現在のバージョンが非現行になり、現在のバージョンに削除マーカーが追加されます。

オブジェクト ライフサイクル ポリシーを設定して変更するには、Bucket.spec.bucketPolicy.lifecyclePolicy フィールドを更新します。

CLI

以下に、異なるオブジェクト ライフサイクル ポリシーが構成されたバケットリソースの例をいくつか示します。

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/"

ライフサイクル ポリシーの更新は、既存のオブジェクトと更新後にアップロードされたオブジェクトに適用されます。

バケットにオブジェクト ロックも構成されている場合、保持期間が終了する前にオブジェクトが期限切れにならないように保護されます。