オブジェクトのライフサイクル管理

コンセプトに移動

このページでは、オブジェクトのライフサイクル管理を有効にする方法を説明します。また、ライフサイクル ポリシーの例も示します。

バケットにライフサイクル管理を設定する

ライフサイクル管理を有効にする

バケットでライフサイクル管理を有効にするには:

Console

  1. Google Cloud Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザを開く
  2. バケットリストで、有効にするバケットを見つけ、[ライフサイクル] 列で [なし] をクリックします。

    ライフサイクル ルールのページが表示されます。

  3. [ルールを追加] をクリックします。

  4. 表示されるページで、構成を指定します。

    1. 操作が行われる条件を選択します。

    2. [続行] をクリックします。

    3. オブジェクトが条件を満たす場合に行う操作を選択します。

    4. [続行] をクリックします。

    5. [保存] をクリックします。

Cloud Storage ブラウザで失敗したオペレーションに関する詳細なエラー情報を確認する方法については、トラブルシューティングをご覧ください。

gsutil

  1. 適用するライフサイクル構成ルールを含む .json ファイルを作成します。サンプルの .json ファイルについては、構成例をご覧ください。

  2. lifecycle set コマンドを使用して、構成を適用します。

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

    ここで

    • [LIFECYCLE_CONFIG_FILE] は、手順 1 で作成したファイルの名前です。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

コードサンプル

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  gcs::BucketLifecycle bucket_lifecycle_rules = gcs::BucketLifecycle{
      {gcs::LifecycleRule(gcs::LifecycleRule::ConditionConjunction(
                              gcs::LifecycleRule::MaxAge(30),
                              gcs::LifecycleRule::IsLive(true)),
                          gcs::LifecycleRule::Delete())}};

  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetLifecycle(bucket_lifecycle_rules));

  if (!updated_metadata) {
    throw std::runtime_error(updated_metadata.status().message());
  }

  if (!updated_metadata->has_lifecycle() ||
      updated_metadata->lifecycle().rule.empty()) {
    std::cout << "Bucket lifecycle management is not enabled for bucket "
              << updated_metadata->name() << ".\n";
    return;
  }
  std::cout << "Successfully enabled bucket lifecycle management for bucket "
            << updated_metadata->name() << ".\n";
  std::cout << "The bucket lifecycle rules are";
  for (auto const& kv : updated_metadata->lifecycle().rule) {
    std::cout << "\n " << kv.condition() << ", " << kv.action();
  }
  std::cout << "\n";
}

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo.LifecycleRule;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.common.collect.ImmutableList;

public class EnableLifecycleManagement {
  public static void enableLifecycleManagement(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);

    // See the LifecycleRule documentation for additional info on what you can do with lifecycle
    // management rules. This one deletes objects that are over 100 days old.
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/BucketInfo.LifecycleRule.html
    bucket
        .toBuilder()
        .setLifecycleRules(
            ImmutableList.of(
                new LifecycleRule(
                    LifecycleRule.LifecycleAction.newDeleteAction(),
                    LifecycleRule.LifecycleCondition.newBuilder().setAge(100).build())))
        .build()
        .update();

    System.out.println("Lifecycle management was enabled and configured for bucket " + bucketName);
  }
}

REST API

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. 適用するライフサイクル構成ルールを含む .json ファイルを作成します。サンプルの .json ファイルについては、構成例をご覧ください。

  3. cURL を使用して JSON API を呼び出し、PATCH Bucket リクエストを行います。

    curl -X PATCH --data-binary @[LIFECYCLE_CONFIG_FILE].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

    ここで

    • [LIFECYCLE_CONFIG_FILE] は、手順 2 で作成したファイルの名前です。
    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

XML API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. 適用するライフサイクル構成ルールを含む .xml ファイルを作成します。サンプルの .xml ファイルについては、構成例をご覧ください。

  3. cURL を使用して XML API を呼び出し、PUT Bucket リクエストを行います。

    curl -X PUT --data-binary @[XML_FILE].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

    ここで

    • [XML_FILE] は、手順 2 で作成したファイルの名前です。
    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

ライフサイクル管理を無効にする

バケットのライフサイクル管理を無効にするには:

Console

  1. Google Cloud Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザを開く
  2. バケットリストで、無効にするバケットを見つけ、[ライフサイクル] 列の [有効] をクリックします。

    ライフサイクル ルールのページが表示されます。

  3. [すべて削除] をクリックします。

  4. 表示される確認ウィンドウで、[削除] をクリックします。

Cloud Storage ブラウザで失敗したオペレーションに関する詳細なエラー情報を確認する方法については、トラブルシューティングをご覧ください。

gsutil

  1. ライフサイクルの構成を空にした .json ファイルを作成します。

    {
      "lifecycle": {
        "rule": []
      }
    }
  2. lifecycle set コマンドを使用します。

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

    ここで

    • [LIFECYCLE_CONFIG_FILE] は、手順 1 で作成したファイルの名前です。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

REST API

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. ライフサイクルの構成を空にした .json ファイルを作成します。

    {
      "lifecycle": {
        "rule": []
      }
    }
  3. cURL を使用して JSON API を呼び出し、PATCH Bucket リクエストを行います。

    curl -X PATCH --data-binary @[LIFECYCLE_CONFIG_FILE].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

    ここで

    • [LIFECYCLE_CONFIG_FILE] は、手順 2 で作成したファイルの名前です。
    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

XML API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. ライフサイクルの構成を空にした .xml ファイルを作成します。

    <LifecycleConfiguration/>
  3. cURL を使用して XML API を呼び出し、PUT Bucket リクエストを行います。

    curl -X PUT --data-binary @[XML_FILE].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

    ここで

    • [XML_FILE] は、手順 2 で作成したファイルの名前です。
    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

ライフサイクル構成を確認する

バケットに設定したライフサイクル構成を確認するには:

Console

  1. Google Cloud Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザを開く
  2. バケットリストの [ライフサイクル] 列に、各バケットのライフサイクル ステータスが表示されます。

    このステータスをクリックして、ルールを追加、表示、編集、および削除できます。

Cloud Storage ブラウザで失敗したオペレーションに関する詳細なエラー情報を確認する方法については、トラブルシューティングをご覧ください。

gsutil

  1. lifecycle get コマンドを使用します。

    gsutil lifecycle get gs://[BUCKET_NAME]

    [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

REST API

JSON API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. cURL を使用して JSON API を呼び出し、GET Bucket リクエストを行います。

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

    ここで

    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

XML API

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するようにプレイグラウンドを構成します。
  2. cURL を使用して XML API を呼び出し、GET Bucket リクエストを行います。

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

    ここで

    • [OAUTH2_TOKEN] は、手順 1 で生成したアクセス トークンです。
    • [BUCKET_NAME] は、該当するバケットの名前です。例: my-bucket

オブジェクトのライフサイクルの構成例

次の例は、一般的なライフサイクル条件が満たされたときにライフサイクル アクションを行う特定のライフサイクル構成を示しています。

オブジェクトを削除する

次のライフサイクル構成では、2 つのルールが定義されています。

  1. 30 日以上経過したオブジェクトのライブ バージョンを削除します。オブジェクトのバージョニングを使用しない限り、すべてのオブジェクトがライブだとみなされます。
  2. 10 日以上経過したオブジェクトの非現行バージョンを削除します。このルールは、オブジェクトのバージョニングを使用している(または、以前使用した)バケットにのみ適用されます。

Console

次のルールは、30 日以上経過しているオブジェクトのライブ バージョンを削除します。

30 日以上経過したライブ オブジェクトを削除する

次のルールは、10 日以上経過しているオブジェクトの非現行バージョンを削除します。

10 日以上経過した非現行オブジェクトを削除する

gsutil

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

ライフサイクル構成ファイルの一般的な形式については、JSON のバケット リソース表現をご覧ください。

REST API

JSON API

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

ライフサイクル構成ファイルの一般的な形式については、JSON のバケット リソース表現をご覧ください。

XML API

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>true</IsLive>
            <Age>30</Age>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>false</IsLive>
            <Age>10</Age>
        </Condition>
    </Rule>
</LifecycleConfiguration>

ライフサイクル構成ファイルの一般的な形式については、XML のライフサイクル構成形式をご覧ください。

オブジェクトのストレージ クラスを変更する

次のライフサイクル構成では、2 つのルールが定義されています。

  1. オブジェクトの経過時間が 365 日(1 年)を超えていて、かつ、現在のストレージ クラスが Standard Storage、Multi-Regional Storage、Durable Reduced Availability(DRA)Storage のいずれかの場合、オブジェクトのストレージ クラスを Nearline Storage に変更する。
  2. オブジェクトの経過期間が 1,095 日(3 年)を超えていて、かつ、現在のストレージ クラスが Nearline Storage の場合、オブジェクトのストレージ クラスを Coldline Storage に変更する。

Console

次のルールは、オブジェクトの作成から 365 日後にオブジェクトを Nearline に移動します。

365 日後にオブジェクトを Nearline に移動する

次のルールは、オブジェクトの作成から 1,095 日後にオブジェクトを Coldline に移動します。

1,095 日後にオブジェクトを Coldline に移動する

gsutil

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

ライフサイクル構成ファイルの一般的な形式については、JSON のバケット リソース表現をご覧ください。

REST API

JSON API

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

ライフサイクル構成ファイルの一般的な形式については、JSON のバケット リソース表現をご覧ください。

XML API

次のライフサイクル構成をバケットに適用するには、ライフサイクル管理を有効にします

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <SetStorageClass>NEARLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>365</Age>
            <MatchesStorageClass>MULTI_REGIONAL</MatchesStorageClass>
            <MatchesStorageClass>STANDARD</MatchesStorageClass>
            <MatchesStorageClass>DURABLE_REDUCED_AVAILABILITY</MatchesStorageClass>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <SetStorageClass>COLDLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>1095</Age>
            <MatchesStorageClass>NEARLINE</MatchesStorageClass>
        </Condition>
    </Rule>
</LifecycleConfiguration>

ライフサイクル構成ファイルの一般的な形式については、XML のライフサイクル構成形式をご覧ください。

次のステップ