管理对象生命周期

转到概念

本页面介绍了如何启用对象生命周期管理并提供了生命周期政策的示例。

在存储分区上设置生命周期管理

启用生命周期管理

如需为存储分区启用生命周期管理,请执行以下操作

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 在存储分区列表中,找到要启用此功能的存储分区,然后在生命周期列中点击

    随即将显示生命周期规则页面。

  3. 点击添加规则

  4. 在出现的页面中,指定一个配置。

    1. 选择执行操作的条件。

    2. 点击继续

    3. 选择对象满足条件时要执行的操作。

    4. 点击继续

    5. 点击保存

请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。

gsutil

  1. 使用您要应用的生命周期配置规则创建一个 .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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用您要应用的生命周期配置规则创建一个 .json 文件(请参阅示例)。

  3. 使用 cURL,通过 PATCH Bucket 请求调用 JSON API

    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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用您要应用的生命周期配置规则创建一个 .xml 文件(请参阅示例)。

  3. 使用 cURL,通过 PUT Bucket 请求调用 XML API

    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

停用生命周期管理

如需为存储分区停用生命周期管理,请执行以下操作

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 在存储分区列表中,找到要停用此功能的存储分区,然后在生命周期列中点击已启用

    随即将显示生命周期规则页面。

  3. 点击全部删除

  4. 在出现的确认窗口中,点击删除

请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。

gsutil

  1. 创建具有空生命周期配置的 .json 文件:

    {}
  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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建具有空生命周期配置的 .json 文件:

    {}
  3. 使用 cURL,通过 PATCH Bucket 请求调用 JSON API

    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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建具有空生命周期配置的 .xml 文件:

    <LifecycleConfiguration/>
  3. 使用 cURL,通过 PUT Bucket 请求调用 XML API

    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

检查生命周期配置

如需检查对存储分区设置的生命周期配置,请执行以下操作

控制台

  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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 GET Bucket 请求调用 JSON API

    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 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 使用 cURL,通过 GET Bucket 请求调用 XML API

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

    其中:

    • [OAUTH2_TOKEN] 是您在第 1 步中生成的访问令牌。
    • [BUCKET_NAME] 是相关存储分区的名称,例如 my-bucket

对象生命周期配置示例

以下示例显示了特定的生命周期配置,该配置可在满足通用条件时删除对象和更改对象的存储类别。如需查看关于生命周期配置的详细讨论(包括可用的操作和条件的列表),请参阅对象生命周期管理

删除对象

以下生命周期配置定义了两个规则:

  1. 删除存在时间超过 30 天的当前对象版本。请注意,除非使用对象版本控制,否则所有对象都会被视为活跃对象。
  2. 删除存在时间超过 10 天的非当前对象版本。请注意,只有在您已使用或以前使用过对象版本控制的存储分区中才满足此规则。

控制台

以下规则会删除存在时间超过 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 的生命周期配置格式

更改对象的存储类别

以下生命周期配置定义了两个规则:

  1. 如果对象的存在时间超过 365 天(一年)且其当前存储类别为 Standard 存储空间、Multi-Regional 存储空间或 Durable Reduced Availability (DRA) 存储空间,则将该对象的存储类别更改为 Nearline 存储空间。
  2. 如果对象的存在时间超过 1095 天(三年)且其当前存储类别为 Nearline 存储空间,则将该对象的存储类别更改为 Coldline 存储空间。

控制台

以下规则会在创建对象后的 365 天内将对象存储类别更改为 Nearline:

在 365 天后将对象的存储类别设置为 Nearline。

以下规则会在创建对象后的 1095 天内将对象存储类别更改为 Coldline:

在 1095 天后将对象的存储类别设置为 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 的生命周期配置格式

后续步骤