更改存储分区的默认存储类别

本页面介绍如何更改存储分区的默认存储类别。将对象上传到存储分区时,如果您没有指定对象的存储类别,则系统会为该对象分配存储分区的默认存储类别。如需查看存储分区的概览,请参阅关键术语。如需详细了解存储类别,请参阅存储类别

要更改现有存储分区的默认存储类别,请按如下所述操作:

控制台

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 在存储分区列表中,找到要修改的存储分区,然后点击其存储分区溢出 (Bucket overflow) 菜单 ()。

  3. 点击修改默认存储类别

  4. 在重叠式窗口中,为您的存储分区选择所需的新默认存储类别。

  5. 点击保存

gsutil

使用 gsutil defstorageclass set 命令:

gsutil defstorageclass set [STORAGE_CLASS] gs://[BUCKET_NAME]

其中:

  • [STORAGE_CLASS] 是您想要用于存储分区的新存储类别,例如 nearline
  • [BUCKET_NAME] 是相关存储分区的名称,例如 my-bucket

响应类似如下示例:

Setting default storage class to "[STORAGE_CLASS]" for bucket gs://[BUCKET_NAME]

代码示例

C++

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

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

  if (!original) throw std::runtime_error(original.status().message());
  gcs::BucketMetadata desired = *original;
  desired.set_storage_class(storage_class);

  StatusOr<gcs::BucketMetadata> patched =
      client.PatchBucket(bucket_name, *original, desired);

  if (!patched) throw std::runtime_error(patched.status().message());
  std::cout << "Storage class for bucket " << patched->name()
            << " has been patched to " << patched->storage_class() << "."
            << "\nFull metadata: " << *patched << "\n";
}

Java

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

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;

public class ChangeDefaultStorageClass {
  public static void changeDefaultStorageClass(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";

    // See the StorageClass documentation for other valid storage classes:
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html
    StorageClass storageClass = StorageClass.COLDLINE;

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

    System.out.println(
        "Default storage class for bucket "
            + bucketName
            + " has been set to "
            + bucket.getStorageClass());
  }
}

REST API

JSON API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .json 文件:

    {
      "storageClass": "[STORAGE_CLASS]"
    }

    其中 [STORAGE_CLASS] 是您想要用于存储分区的新存储类别,例如 nearline

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

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

    其中:

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

XML API

  1. OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
  2. 创建一个包含以下信息的 .xml 文件:

    <StorageClass>[STORAGE_CLASS]</StorageClass>

    其中 [STORAGE_CLASS] 是您想要用于存储分区的新存储类别的名称,例如 nearline

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

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

    其中:

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

后续步骤