使用对象版本控制

概览 用法

本页面介绍如何对存储桶启用、停用对象版本控制和检查其状态。请参阅使用具有版本控制的对象,了解如何列出、恢复和删除对象版本控制保留的对象。

所需的角色

如需获得在存储桶上设置和管理对象版本控制所需的权限,请让管理员向您授予存储桶或包含存储桶的项目的 Storage Admin (roles/storage.admin) IAM 角色。此预定义角色可提供设置和管理存储桶的对象版本控制所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • 仅当您计划使用Google Cloud 控制台执行本页面上的说明时,才需要此权限。

您也可以使用自定义角色来获取这些权限。

如需了解如何授予存储桶的角色,请参阅设置和管理存储桶的 IAM 政策。如需了解如何授予项目的角色,请参阅管理对项目的访问权限

在存储桶上设置对象版本控制

您可以通过在存储桶上设置相应功能来启用或停用对象版本控制。 启用对象版本控制后,每次替换或删除有效对象版本时,该版本都将成为非当前版本

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 在存储桶列表中,点击要启用或停用对象版本控制的存储桶的名称。

  3. 选择页面顶部附近的保护标签页。

    您可以在对象版本控制部分找到对象版本控制的当前状态。

  4. 对象版本控制部分,点击当前状态以进行更改。

    此时会显示对象版本控制对话框。

    1. 如果您要启用对象版本控制,并且希望最大限度地降低存储费用,请选中添加建议的生命周期规则以管理版本费用复选框。
  5. 点击确认

命令行

使用带有相应标志的 gcloud storage buckets update 命令:

gcloud storage buckets update gs://BUCKET_NAME FLAG

其中:

  • BUCKET_NAME 是相关存储桶的名称,例如 my-bucket

  • FLAG 可以为 --versioning 以启用对象版本控制,或者为 --no-versioning 以停用对象版本控制。

如果成功,响应类似于以下示例:

Updating gs://my-bucket/...
  Completed 1  

客户端库

C++

如需了解详情,请参阅 Cloud Storage C++ API 参考文档

如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证

以下示例会在存储桶上启用对象版本控制:

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);
  if (!original) throw std::move(original).status();

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetVersioning(
          gcs::BucketVersioning{true}),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  if (patched->versioning().has_value()) {
    std::cout << "Object versioning for bucket " << bucket_name << " is "
              << (patched->versioning()->enabled ? "enabled" : "disabled")
              << "\n";
  } else {
    std::cout << "Object versioning for bucket " << bucket_name
              << " is disabled.\n";
  }
}

以下示例会在存储桶上停用对象版本控制:

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);
  if (!original