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

Google Distributed Cloud(GDC)エアギャップのオブジェクト ライフサイクル ポリシーを使用すると、ストレージ バケット全体でデータの保持と有効期限を自動化できます。経過日数、接頭辞、タグのルールを定義して、バージョニングされていないオブジェクトを削除したり、手動でクリーンアップせずにバージョンを移行して期限切れにしたりできます。

始める前に

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

必要な IAM のロール

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

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

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

環境を準備する

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

  1. ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
  2. デュアルゾーン バケットの場合は、次の操作を行います。
    • インフラストラクチャ オペレーター(IO)に、ペアゾーンに BucketLocationConfig カスタム リソースが作成されていることを確認します。
    • グローバル API サーバーの kubeconfig ファイルを生成します。

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

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

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

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

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

オブジェクト ライフサイクル ポリシーを設定して変更するには、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/"

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

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