Mengubah kelas penyimpanan objek

Halaman ini menjelaskan cara mengubah kelas penyimpanan objek dalam bucket dengan menulis ulang objek tersebut.

  • Untuk mempelajari cara mengubah kelas penyimpanan objek tanpa menulis ulang objek, lihat fitur Object Lifecycle Management.
  • Untuk mempelajari cara Cloud Storage dapat mengelola kelas penyimpanan objek Anda secara otomatis, lihat fitur Autoclass.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengubah kelas penyimpanan objek dengan menulis ulang objek, minta administrator untuk memberi Anda peran Storage Object User (roles/storage.objectUser) di bucket.

Peran ini berisi izin yang diperlukan untuk mengubah kelas penyimpanan objek. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • storage.objects.create
  • storage.objects.delete
  • storage.objects.get
  • storage.objects.list

Anda mungkin juga bisa mendapatkan izin ini dengan peran standar atau peran khusus lainnya.

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

Mengubah kelas penyimpanan objek

Selesaikan langkah-langkah berikut untuk mengubah kelas penyimpanan objek:

Konsol

Kelas penyimpanan objek individual tidak dapat ditetapkan melalui the Google Cloud konsol. Sebagai gantinya, gunakan Google Cloud CLI.

Command line

Gunakan perintah gcloud storage objects update dengan flag --storage-class. Contoh:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --storage-class=STORAGE_CLASS

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang berisi objek yang kelasnya ingin Anda ubah. Contoh, my-bucket.
  • OBJECT_NAME adalah nama objek yang kelasnya ingin Anda ubah. Contoh, pets/dog.png.
  • STORAGE_CLASS adalah kelas penyimpanan baru untuk objek Anda. Contoh, nearline.

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& object_name, std::string const& storage_class) {
  StatusOr<gcs::ObjectMetadata> object_metadata =
      client.RewriteObjectBlocking(
          bucket_name, object_name, bucket_name, object_name,
          gcs::WithObjectMetadata(
              gcs::ObjectMetadata().set_storage_class(storage_class)));
  if (!object_metadata) throw std::move(object_metadata).status();

  std::cout << "Changed storage class of object " << object_metadata->name()
            << " in bucket " << object_metadata->bucket() << " to "
            << object_metadata->storage_class() << "\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.Cloud.Storage.V1;
using System;

public class ChangeFileStorageClassSample
{
    public Google.Apis.Storage.v1.Data.Object ChangeFileStorageClass(
        string bucketName = "your-bucket-name",
        string objectName = "your-object-name",
        string storageClass = StorageClasses.Standard)
    {
        var storage = StorageClient.Create();

        // Changing storage class requires a rewrite operation, which can only be done
        // by the underlying service
        var obj = new Google.Apis.Storage.v1.Data.Object { StorageClass = storageClass };
        storage.Service.Objects.Rewrite(obj, bucketName, objectName, bucketName, objectName).Execute();

        var file = storage.GetObject(bucketName, objectName);
        Console.WriteLine($"Object {objectName} in bucket {bucketName} had" +
            $" its storage class set to {storageClass}.");

        return file;
    }
}

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"
)

// changeObjectStorageClass changes the storage class of a single object.
func changeObjectStorageClass(w io.Writer, bucket, object string) error {
	// bucket := "bucket-name"
	// object := "object-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()

	o := client.Bucket(bucket).Object(object)

	// Optional: set a generation-match precondition to avoid potential race
	// conditions and data corruptions. The request to copy is aborted if the
	// object's generation number does not match your precondition.
	attrs, err := o.Attrs(ctx)
	if err != nil {
		return fmt.Errorf("object.Attrs: %w", err)
	}
	o = o.If(storage.Conditions{GenerationMatch: attrs.