Alterar a classe de armazenamento padrão de um bucket.

Nesta página, mostramos como alterar a classe de armazenamento padrão de um bucket. Ao carregar um objeto para o bucket, o objeto receberá a classe de armazenamento padrão do bucket se você não especificar uma classe de armazenamento para ele. Para saber mais sobre as classes de armazenamento, consulte Classes de armazenamento.

Funções exigidas

Para receber as permissões necessárias para alterar a classe de armazenamento de um bucket, peça ao administrador para conceder a você o papel do IAM de Administrador do Storage (roles/storage.admin) no bucket.

Esse papel predefinido contém as permissões necessárias para alterar a classe de armazenamento de um bucket. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

  • storage.buckets.get
    • Essa permissão só é necessária ao usar o console do Google Cloud para executar as instruções nesta página.
  • storage.buckets.list
    • Essa permissão só é necessária ao usar o console do Google Cloud para executar as instruções nesta página.
  • storage.buckets.update

Talvez você também consiga receber essas permissões com papéis personalizados.

Para instruções sobre como conceder papéis nos buckets, consulte Usar o IAM com buckets.

Alterar a classe de armazenamento padrão de um bucket.

Console

  1. No Console do Google Cloud, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket cuja classe de armazenamento você quer alterar.

  3. Na página Detalhes do bucket, clique na guia Configuração.

  4. Clique no ícone Editar () de Classe de armazenamento padrão.

  5. Na janela de sobreposição, selecione a nova classe de armazenamento padrão que você quer para seu bucket.

  6. Clique em Save.

Para saber como acessar informações detalhadas de erro sobre operações do Cloud Storage com falha no console do Google Cloud, consulte Solução de problemas.

Linha de comando

Use o comando gcloud storage buckets update com a flag --default-storage-class:

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

Em que:

  • BUCKET_NAME é o nome do bucket pertinente. Por exemplo, my-bucket.
  • STORAGE_CLASS é a nova classe de armazenamento escolhida para o bucket. Por exemplo, nearline.

A resposta terá esta aparência:

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

Bibliotecas de cliente

C++

Para mais informações, consulte a documentação de referência da API Cloud Storage C++.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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#

Para mais informações, consulte a documentação de referência da API Cloud Storage C#.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.


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

Para mais informações, consulte a documentação de referência da API Cloud Storage Go.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Para mais informações, consulte a documentação de referência da API Cloud Storage Java.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

/**
 * 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

Para mais informações, consulte a documentação de referência da API Cloud Storage PHP.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Para mais informações, consulte a documentação de referência da API Cloud Storage Python.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby.

Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

APIs REST

API JSON

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Crie um arquivo JSON com as informações a seguir:

    {
      "storageClass": "STORAGE_CLASS"
    }

    Em que STORAGE_CLASS é a nova classe de armazenamento escolhida para o bucket. Por exemplo, nearline.

  3. Use cURL para chamar a API JSON com uma solicitação PATCH bucket:

    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"

    Em que:

    • JSON_FILE_NAME é o caminho para o arquivo JSON criado na Etapa 2.
    • BUCKET_NAME é o nome do bucket pertinente. Por exemplo, my-bucket.

API XML

  1. Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho Authorization.

  2. Crie um arquivo XML que contenha as seguintes informações:

    <StorageClass>STORAGE_CLASS</StorageClass>

    Em que STORAGE_CLASS é o nome da nova classe de armazenamento escolhida para o bucket. Por exemplo, nearline.

  3. Use cURL para chamar a API XML com uma solicitação do bucket PUT com o escopo definido como ?storageClass:

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

    Em que:

    • XML_FILE_NAME é o caminho para o arquivo XML criado na Etapa 2.
    • BUCKET_NAME é o nome do bucket pertinente. Por exemplo, my-bucket.

A seguir