Utilizza il controllo delle versioni degli oggetti

Panoramica Utilizzo

In questa pagina viene descritto come attivare, disattivare e controllare lo stato dell'oggetto Controllo delle versioni su un bucket. Per ulteriori informazioni, consulta Utilizzo degli oggetti con controllo delle versioni per 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 su un bucket, chiedi all'amministratore di concederti il ruolo Amministratore Storage (roles/storage.admin) ruolo IAM nel bucket o nel progetto che contiene il bucket. Questo ruolo predefinito contiene le autorizzazioni necessaria per impostare e gestire il controllo delle versioni degli oggetti per un bucket. Per vedere l'esatto 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 nella console Google Cloud per eseguire le istruzioni in questa pagina.

Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati.

Per informazioni sulla concessione dei ruoli nei bucket, consulta Utilizzare IAM con i bucket. Per informazioni sulla concessione sui progetti, consulta Gestire l'accesso ai progetti.

Imposta il controllo delle versioni degli oggetti su un bucket

Console

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

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che vuoi per abilitare o disabilitare 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.

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

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

    1. Abilita il controllo delle versioni degli oggetti e vuoi ridurre al minimo lo spazio di archiviazione costi, seleziona Aggiungi regole del ciclo di vita consigliate la casella di controllo dei costi della versione.
  5. Fai clic su Conferma.

Riga di comando

Utilizza il comando gcloud storage buckets update con flag appropriato:

gcloud storage buckets update gs://BUCKET_NAME FLAG

Dove:

  • BUCKET_NAME è il nome del di sincronizzare la directory di una VM con un bucket. Ad esempio, my-bucket.

  • FLAG è --versioning per abilitare l'oggetto Controllo delle versioni o --no-versioning per disattivarla.

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

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

Librerie client

C++

Per ulteriori informazioni, consulta API Cloud Storage C++ documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

L'esempio seguente 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";
  }
}

L'esempio seguente 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";
}

C#

Per ulteriori informazioni, consulta API Cloud Storage C# documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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


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

public class BucketEnableVersioningSample
{
	public Bucket BucketEnableVersioning(string bucketName = "your-bucket-name")
	{
		var storage = StorageClient.Create();
		var bucket = storage.GetBucket(bucketName);

		if (bucket.Versioning == null)
		{
			bucket.Versioning = new Bucket.VersioningData();
		}
		bucket.Versioning.Enabled = true;

		bucket = storage.UpdateBucket(bucket);
		Console.WriteLine($"Versioning is now enabled for bucket {bucketName}.");
		return bucket;
	}
}

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


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

public class BucketDisableVersioningSample
{
	public Bucket BucketDisableVersioning(string bucketName = "your-bucket-name")
	{
		var storage = StorageClient.Create();
		var bucket = storage.GetBucket(bucketName);

		if (bucket.Versioning?.Enabled != true)
		{
			Console.WriteLine($"Versioning already disabled for bucket {bucketName}.");
		}
		else
		{
        	    bucket.Versioning.Enabled = false;

		    bucket = storage.UpdateBucket(bucket);
                    Console.WriteLine($"Versioning is now disabled for bucket {bucketName}.");
                }
		return bucket;
	}
}

Go

Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

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

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

// enableVersioning enables object versioning on a bucket.
func enableVersioning(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)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		VersioningEnabled: true,
	}
	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Versioning was enabled for %v\n", bucketName)
	return nil
}

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

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

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

// disableVersioning disables object versioning on a bucket.
func disableVersioning(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)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		VersioningEnabled: false,
	}
	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err)
	}
	fmt.Fprintf(w, "Versioning was disabled for %v\n", bucketName)
	return nil
}

Java

Per ulteriori informazioni, consulta API Cloud Storage Java documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class EnableBucketVersioning {
  public static void enableBucketVersioning(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";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);
    bucket.toBuilder().setVersioningEnabled(true).build().update();

    System.out.println("Versioning is now enabled for bucket " + bucketName);
  }
}

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

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class DisableBucketVersioning {
  public static void disableBucketVersioning(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";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);
    bucket.toBuilder().setVersioningEnabled(false).build().update();

    System.out.println("Versioning is now disabled for bucket " + bucketName);
  }
}

Node.js

Per ulteriori informazioni, consulta API Cloud Storage Node.js documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

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

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

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

async function enableBucketVersioning() {
  await storage.bucket(bucketName).setMetadata({
    versioning: {
      enabled: true,
    },
  });

  console.log(`Versioning is enabled for bucket ${bucketName}`);
}

enableBucketVersioning().catch(console.error);

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

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

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

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

async function disableBucketVersioning() {
  await storage.bucket(bucketName).setMetadata({
    versioning: {
      enabled: false,
    },
  });

  console.log(`Versioning is disabled for bucket ${bucketName}`);
}

disableBucketVersioning().catch(console.error);

PHP

Per ulteriori informazioni, consulta API Cloud Storage PHP documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

use Google\Cloud\Storage\StorageClient;

/**
 * Enable versioning on the specified bucket.
 *
 * @param string $bucketName The name of your Cloud Storage bucket.
 *        (e.g. 'my-bucket')
 */
function enable_versioning(string $bucketName): void
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'versioning' => [
            'enabled' => true,
        ]
    ]);

    printf('Versioning is now enabled for bucket %s', $bucketName);
}

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

use Google\Cloud\Storage\StorageClient;

/**
 * Disable versioning of the given bucket.
 *
 * @param string $bucketName The name of your Cloud Storage bucket.
 *        (e.g. 'my-bucket')
 */
function disable_versioning(string $bucketName): void
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'versioning' => [
            'enabled' => false,
        ]
    ]);

    printf('Versioning is now disabled for bucket %s', $bucketName);
}

Python

Per ulteriori informazioni, consulta API Cloud Storage Python documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

from google.cloud import storage


def enable_versioning(bucket_name):
    """Enable versioning for this bucket."""
    # bucket_name = "my-bucket"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    bucket.versioning_enabled = True
    bucket.patch()

    print(f"Versioning was enabled for bucket {bucket.name}")
    return bucket

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

from google.cloud import storage


def disable_versioning(bucket_name):
    """Disable versioning for this bucket."""
    # bucket_name = "my-bucket"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    bucket.versioning_enabled = False
    bucket.patch()

    print(f"Versioning was disabled for bucket {bucket}")
    return bucket

Ruby

Per ulteriori informazioni, consulta API Cloud Storage Ruby documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

def enable_versioning 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.versioning = true

  puts "Versioning was enabled for bucket #{bucket_name}"
end

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

def disable_versioning 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.versioning = false

  puts "Versioning was disabled for bucket #{bucket_name}"
end

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, per generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando il metodo OAuth 2.0 Playground e includilo nell'intestazione Authorization.

  2. Crea un file JSON contenente le seguenti informazioni:

    {
      "versioning": {
        "enabled": STATE
      }
    }

    Dove STATE è true o false.

  3. Utilizza cURL per chiamare l'API JSON con un Richiesta 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=versioning"

    Dove:

    • JSON_FILE_NAME è il percorso del file JSON creato nel passaggio 2.
    • BUCKET_NAME è il nome del di sincronizzare la directory di una VM con un bucket. Ad esempio, my-bucket.

API XML

  1. Avere gcloud CLI installato e inizializzato, per generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando il metodo OAuth 2.0 Playground e includilo nell'intestazione Authorization.

  2. Crea un file XML che contenga le seguenti informazioni:

    <VersioningConfiguration>
      <Status>STATE</Status>
    </VersioningConfiguration>

    Dove STATE è Enabled o Suspended.

  3. Utilizza cURL per chiamare l'API XML, con un Richiesta PUT bucket e versioning parametro di stringa di query:

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

    Dove:

    • XML_FILE_NAME è il percorso del file XML creato nel passaggio 2.
    • BUCKET_NAME è il nome del di sincronizzare la directory di una VM con un bucket. Ad esempio, my-bucket.

Una volta abilitato il controllo delle versioni degli oggetti, ogni volta che viene sostituita una versione attiva dell'oggetto o eliminata, questa versione diventa una versione non corrente.

Verificare se il controllo delle versioni degli oggetti è abilitato

Per verificare se il controllo delle versioni degli oggetti è abilitato su un bucket:

Console

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

    Vai a Bucket

  2. Nell'elenco dei bucket, lo stato del controllo delle versioni degli oggetti di ogni bucket è presente nella colonna Protection.

Se questa opzione è abilitata, viene visualizzato il testo Controllo delle versioni degli oggetti.

Riga di comando

Utilizza il comando gcloud storage buckets describe con Flag --format:

gcloud storage buckets describe gs://BUCKET_NAME --format="default(versioning)"

Dove BUCKET_NAME è il nome del bucket di cui vuoi visualizzare lo stato. Ad esempio, my-bucket.

Se l'operazione ha esito positivo e il controllo delle versioni degli oggetti è abilitato, la risposta viene visualizzata simile all'esempio seguente:

versioning:
  enabled: true

In caso di esito positivo e il controllo delle versioni degli oggetti non è abilitato, la risposta viene visualizzata simile all'esempio seguente:

null

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, per generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando il metodo OAuth 2.0 Playground e includilo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con un Richiesta GET bucket:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=versioning"

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

Se l'operazione ha esito positivo e il controllo delle versioni degli oggetti è abilitato, la risposta viene visualizzata simile all'esempio seguente:

{
  "versioning": {
    "enabled": true
  }
}

In caso di esito positivo e il controllo delle versioni degli oggetti non è abilitato, la risposta viene visualizzata simile all'esempio seguente:

{}

API XML

  1. Avere gcloud CLI installato e inizializzato, per generare un token di accesso per l'intestazione Authorization.

    In alternativa, puoi creare un token di accesso utilizzando il metodo OAuth 2.0 Playground e includilo nell'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API XML, con un Richiesta GET bucket e versioning parametro di stringa di query:

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/BUCKET_NAME?versioning"

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

Se l'operazione ha esito positivo e il controllo delle versioni degli oggetti è abilitato, la risposta viene visualizzata simile all'esempio seguente:

<VersioningConfiguration>
  <Status>Enabled</Status>
</VersioningConfiguration>

In caso di esito positivo e il controllo delle versioni degli oggetti non è abilitato, la risposta viene visualizzata simile all'esempio seguente:

<VersioningConfiguration/>

Passaggi successivi