Como alterar classes de armazenamento de objetos

Nesta página, você aprenderá a alterar a classe de armazenamento de objetos em um bucket por meio da substituição. Para saber como alterar as classes de armazenamento de objetos sem substituí-los, consulte o recurso Gerenciamento do ciclo de vida de objetos.

Console

As classes de armazenamento de objetos individuais não podem ser definidas no Console. Em vez disso, use o gsutil.

gsutil

Use a sinalização -s em um comando rewrite. Exemplo:

gsutil rewrite -s [STORAGE_CLASS] gs://[PATH_TO_OBJECT]

Em que:

  • [STORAGE_CLASS] é a nova classe de armazenamento do objeto. Por exemplo, nearline.
  • [PATH_TO_OBJECT] é o nome do objeto da classe que você quer alterar. Por exemplo, pets/dog.png.

Amostras de código

C++

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

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string object_name,
   std::string 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::runtime_error(object_metadata.status().message());
  }

  std::cout << "Changed storage class of object " << object_metadata->name()
            << " in bucket " << object_metadata->bucket() << " to "
            << object_metadata->storage_class() << "\n";
}

Java

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

import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;

public class ChangeObjectStorageClass {
  public static void changeObjectStorageClass(
      String projectId, String bucketName, String objectName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    BlobId blobId = BlobId.of(bucketName, objectName);

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

    // You can't change an object's storage class directly, the only way is to rewrite the object
    // with the
    // desired storage class
    Storage.CopyRequest request =
        Storage.CopyRequest.newBuilder()
            .setSource(blobId)
            .setTarget(BlobInfo.newBuilder(blobId).setStorageClass(storageClass).build())
            .build();
    Blob updatedBlob = storage.copy(request).getResult();

    System.out.println(
        "Object "
            + objectName
            + " in bucket "
            + bucketName
            + " had its storage class set to "
            + updatedBlob.getStorageClass().name());
  }
}

APIs REST

API JSON

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json com as informações a seguir:

    {
      "storageClass": "[STORAGE_CLASS]"
    }

    Em que:

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

    curl -X POST --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]/o/[OBJECT_NAME]/rewriteTo/b/[BUCKET_NAME]/o/[OBJECT_NAME]"

    Em que:

    • [JSON_FILE_NAME] é o nome do arquivo JSON que você criou na Etapa 2.
    • [OAUTH2_TOKEN] é o token de acesso gerado na Etapa 1.
    • [BUCKET_NAME] é o nome do bucket que contém o objeto original. Por exemplo, my-bucket.
    • [OBJECT_NAME] é o nome do objeto. Por exemplo, pets/dog.png.

API XML

  1. Receba um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API XML com uma solicitação PUT Objeto:

    curl -X PUT --data-binary @[OBJECT] \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: [OBJECT_CONTENT_TYPE]" \
      -H "x-goog-storage-class: [STORAGE_CLASS]" \
      "https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]"

    Em que:

    • [OBJECT] é o caminho local para o objeto da classe de armazenamento que você quer alterar. É necessário fazer novamente o upload do objeto ao alterar a classe de armazenamento com a API XML. Por exemplo, Desktop/dog.png.
    • [OAUTH2_TOKEN] é o token de acesso gerado na Etapa 1.
    • [OBJECT_CONTENT_TYPE] é o tipo de conteúdo do objeto. Por exemplo, image/png.
    • [STORAGE_CLASS] é a nova classe de armazenamento do objeto. Por exemplo, nearline.
    • [BUCKET_NAME] é o nome do bucket que contém o objeto que você quer substituir. Por exemplo, my-bucket.
    • [OBJECT_NAME] é o nome do intervalo que você quer substituir. Por exemplo, pets/dog.png.

A seguir