Utilizzo del controllo delle versioni degli oggetti

Panoramica Utilizzo

Questa pagina descrive come attivare, disattivare e controllare lo stato del controllo delle versioni degli oggetti in un bucket. Consulta Utilizzo di oggetti con controllo delle versioni per scoprire come elencare, ripristinare ed eliminare gli oggetti conservati dal controllo delle versioni degli oggetti.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per impostare e gestire il controllo delle versioni degli oggetti in un bucket, chiedi all'amministratore di concederti il ruolo IAM Amministratore archiviazione (roles/storage.admin) nel bucket o nel progetto che contiene il bucket. Questo ruolo predefinito contiene le autorizzazioni necessarie per impostare e gestire il controllo delle versioni degli oggetti per un bucket. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Questa autorizzazione è necessaria solo se prevedi di utilizzare la consoleGoogle Cloud per eseguire le istruzioni riportate in questa pagina.

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati.

Per informazioni sulla concessione dei ruoli sui bucket, consulta Impostare e gestire le policy IAM sui bucket. Per informazioni sulla concessione dei ruoli nei progetti, consulta Gestisci l'accesso ai progetti.

Imposta il controllo delle versioni degli oggetti su un bucket

Per attivare o disattivare il controllo delle versioni degli oggetti, devi impostare la funzionalità su un bucket. Una volta abilitato il controllo delle versioni degli oggetti, ogni volta che una versione live di un oggetto viene sostituita o eliminata, questa versione diventa una versione non corrente.

Console

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket per cui vuoi attivare o disattivare il controllo delle versioni degli oggetti.

  3. Seleziona la scheda Protezione nella parte superiore della pagina.

    Lo stato attuale del controllo delle versioni degli oggetti si trova nella sezione Controllo delle versioni degli oggetti.

  4. Nella sezione Controllo delle versioni degli oggetti, fai clic sullo stato attuale per apportare modifiche.

    Viene visualizzata la finestra di dialogo Controllo delle versioni degli oggetti.

    1. Se attivi il controllo delle versioni degli oggetti e vuoi ridurre al minimo i costi di archiviazione, seleziona la casella di controllo Aggiungi regole del ciclo di vita consigliate per gestire i costi delle versioni.
  5. Fai clic su Conferma.

Riga di comando

Utilizza il comando gcloud storage buckets update con il flag appropriato:

gcloud storage buckets update gs://BUCKET_NAME FLAG

Dove:

  • BUCKET_NAME è il nome del bucket pertinente. Ad esempio, my-bucket.

  • FLAG è --versioning per attivare il controllo delle versioni degli oggetti o --no-versioning per disattivarlo.

Se l'operazione ha esito positivo, la risposta è simile al seguente esempio:

Updating gs://my-bucket/...
  Completed 1  

Librerie client

C++

Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage C++.

Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.

Il seguente esempio abilita il controllo delle versioni degli oggetti su un bucket:

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

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetVersioning(
          gcs::BucketVersioning{true}),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  if (patched->versioning().has_value()) {
    std::cout << "Object versioning for bucket " << bucket_name << " is "
              << (patched->versioning()->enabled ? "enabled" : "disabled")
              << "\n";
  } else {
    std::cout << "Object versioning for bucket " << bucket_name
              << " is disabled.\n";
  }
}

Il seguente esempio disabilita il controllo delle versioni degli oggetti in un bucket:

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

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetVersioning(
          gcs::BucketVersioning{false}),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  auto versioning =
      patched->versioning().value_or(gcs::BucketVersioning{false});
  std::cout << "Object versioning for bucket " << bucket_name << " is "
            << (versioning.enabled ? "enabled" : "disabled") << "\n";
}