Mengubah kelas penyimpanan default bucket

Halaman ini menunjukkan cara mengubah kelas penyimpanan default untuk bucket. Saat Anda mengupload objek ke bucket, jika Anda tidak menentukan kelas penyimpanan untuk objek, objek tersebut diberi kelas penyimpanan default bucket. Untuk mempelajari selengkapnya kelas penyimpanan, lihat Kelas Penyimpanan.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengubah kelas penyimpanan bucket, minta administrator Anda untuk memberi Anda peran IAM Storage Admin (roles/storage.admin) di bucket.

Peran bawaan ini berisi izin yang diperlukan untuk mengubah kelas penyimpanan bucket. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

  • storage.buckets.get
    • Izin ini hanya diperlukan jika Anda berencana menggunakan Google Cloud konsol untuk menjalankan petunjuk di halaman ini.
  • storage.buckets.list
    • Izin ini hanya diperlukan jika Anda berencana menggunakan Google Cloud konsol untuk menjalankan petunjuk di halaman ini.
  • storage.buckets.update

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus.

Untuk mengetahui petunjuk cara memberikan peran pada bucket, lihat Menetapkan dan mengelola kebijakan IAM pada bucket.

Mengubah kelas penyimpanan default bucket

Konsol

  1. Di Google Cloud konsol, buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang kelas penyimpanannya ingin Anda ubah.

  3. Di halaman Bucket details, klik tab Configuration.

  4. Klik ikon Edit () untuk Default storage class.

  5. Di jendela overlay, pilih kelas penyimpanan default baru yang diinginkan untuk bucket Anda.

  6. Klik Save.

Untuk mempelajari cara mendapatkan informasi error mendetail tentang operasi Cloud Storage yang gagal di Google Cloud konsol, lihat Pemecahan masalah.

Command line

Gunakan perintah gcloud storage buckets update dengan flag --default-storage-class:

gcloud storage buckets update gs://BUCKET_NAME --default-storage-class=STORAGE_CLASS

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang relevan. Misalnya, my-bucket.
  • STORAGE_CLASS adalah kelas penyimpanan baru yang Anda inginkan untuk bucket Anda. Misalnya: nearline

Responsnya akan terlihat seperti contoh berikut:

Setting default storage class to "nearline" for bucket gs://my-bucket

Library klien

C++

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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

  gcs::BucketMetadata desired = *original;
  desired.set_storage_class(storage_class);

  StatusOr<gcs::BucketMetadata> patched =
      client.PatchBucket(bucket_name, *original, desired);
  if (!patched) throw std::move(patched).status();

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

C#

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage C# API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class ChangeDefaultStorageClassSample
{
	public Bucket ChangeDefaultStorageClass(string bucketName = "your-bucket-name", string storageClass = StorageClasses.Standard)
	{
	    var storage = StorageClient.Create();
	    var bucket = storage.GetBucket(bucketName);

	    bucket.StorageClass = storageClass;

	    bucket = storage.UpdateBucket(bucket);
	    Console.WriteLine($"Default storage class for bucket {bucketName} changed to {storageClass}.");
	    return bucket;
	}
}

Go

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage Go API .

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// changeDefaultStorageClass changes the storage class on a bucket.
func changeDefaultStorageClass(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	newStorageClass := "COLDLINE"
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		StorageClass: newStorageClass,
	}
	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Default storage class for bucket %v has been set to %v\n", bucketName, newStorageClass)
	return nil
}

Java

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

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());
  }
}

Node.js

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Node.js Cloud Storage API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// The name of a storage class
// See the StorageClass documentation for other valid storage classes:
// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html
// const storageClass = 'coldline';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

async function changeDefaultStorageClass() {
  await storage.bucket(bucketName).setStorageClass(storageClass);

  console.log(`${bucketName} has been set to ${storageClass}`);
}

changeDefaultStorageClass().catch(console.error);

PHP

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage PHP API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

use Google\Cloud\Storage\StorageClient;

/**
 * Change the default storage class for the given bucket.
 *
 * @param string $bucketName The name of your Cloud Storage bucket.
 *        (e.g. 'my-bucket')
 */
function change_default_storage_class(string $bucketName): void
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $storageClass = 'COLDLINE';

    $bucket->update([
        'storageClass' => $storageClass,
    ]);

    printf(
        'Default storage class for bucket %s has been set to %s',
        $bucketName,
        $storageClass
    );
}

Python

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage Python API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

from google.cloud import storage
from google.cloud.storage import constants


def change_default_storage_class(bucket_name):
    """Change the default storage class of the bucket"""
    # bucket_name = "your-bucket-name"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    bucket.storage_class = constants.COLDLINE_STORAGE_CLASS
    bucket.patch()

    print(f"Default storage class for bucket {bucket_name} has been set to {bucket.storage_class}")
    return bucket

Ruby

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage Ruby API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

def change_default_storage_class bucket_name:
  # The ID of your GCS bucket
  # bucket_name = "your-unique-bucket-name"

  require "google/cloud/storage"

  storage = Google::Cloud::Storage.new
  bucket = storage.bucket bucket_name

  bucket.storage_class = "COLDLINE"

  puts "Default storage class for bucket #{bucket_name} has been set to #{bucket.storage_class}"
end

Rust

use google_cloud_storage::client::StorageControl;
use google_cloud_wkt::FieldMask;

pub async fn sample(client: &StorageControl, bucket_id: &str) -> anyhow::Result<()> {
    let bucket = client
        .get_bucket()
        .set_name(format!("projects/_/buckets/{bucket_id}"))
        .send()
        .await?;
    let metageneration = bucket.metageneration;
    let bucket = client
        .update_bucket()
        .set_bucket(bucket.set_storage_class("NEARLINE"))
        .set_if_metageneration_match(metageneration)
        .set_update_mask(FieldMask::default().set_paths(["storage_class"]))
        .send()
        .await?;
    println!("successfully updated bucket {bucket:?}");
    Ok(())
}

REST API

JSON API

  1. Pastikan gcloud CLI telah diinstal dan diinisialisasi, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi informasi berikut:

    {
      "storageClass": "STORAGE_CLASS"
    }

    Dengan STORAGE_CLASS adalah kelas penyimpanan baru yang Anda inginkan untuk bucket Anda. Misalnya, nearline.

  3. Gunakan cURL untuk memanggil JSON API dengan permintaan Bucket PATCH:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=storageClass"

    Dengan keterangan:

    • JSON_FILE_NAME adalah jalur untuk file JSON yang Anda buat di Langkah 2.
    • BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.

XML API

  1. Pastikan gcloud CLI telah diinstal dan diinisialisasi, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file XML yang berisi informasi berikut:

    <StorageClass>STORAGE_CLASS</StorageClass>

    Dengan STORAGE_CLASS adalah nama kelas penyimpanan baru yang Anda inginkan untuk bucket Anda. Misalnya, nearline.

  3. Gunakan cURL untuk memanggil XML API dengan permintaan Bucket PUT yang dicakup ke ?storageClass:

    curl -X PUT --data-binary @XML_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/BUCKET_NAME?storageClass"

    Dengan keterangan:

    • XML_FILE_NAME adalah jalur untuk file XML yang Anda buat di Langkah 2.
    • BUCKET_NAME adalah nama bucket yang relevan. Contoh, my-bucket.

Langkah berikutnya