Objektversionsverwaltung verwenden

Übersicht Nutzung

Auf dieser Seite wird beschrieben, wie Sie den Status der Objektversionsverwaltung für einen Bucket aktivieren, deaktivieren und prüfen. Weitere Informationen zum Auflisten, Wiederherstellen und Löschen von Objekten, die von der Objektversionsverwaltung beibehalten werden, finden Sie unter Versionierte Objekte verwenden.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Storage-Administrator“ (roles/storage.admin) für den Bucket oder das Projekt mit dem Bucket zuzuweisen, damit Sie die Berechtigungen zum Festlegen und Verwalten von Objektversionen für einen Bucket erhalten. Diese vordefinierte Rolle enthält alle erforderlichen Berechtigungen zum Festlegen und Verwalten von Objektversionen für einen Bucket. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen im Detail anzuzeigen:

Erforderliche Berechtigungen

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Diese Berechtigung ist nur erforderlich, wenn Sie dieCloud de Confiance Console zum Ausführen der Schritte auf dieser Seite verwenden möchten.

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen erhalten.

Informationen zum Zuweisen von Rollen für Buckets finden Sie unter IAM-Richtlinien für Buckets festlegen und verwalten. Informationen zum Zuweisen von Rollen für Projekte finden Sie unter Zugriff auf Projekte verwalten.

Objektversionsverwaltung für einen Bucket festlegen

Console

  1. Wechseln Sie in der Cloud de Confiance Console unter „Cloud Storage“ zur Seite Buckets.

    Zur Seite "Buckets"

  2. Klicken Sie in der Bucket-Liste auf den Namen des Buckets, für den Sie die Objektversionsverwaltung aktivieren oder deaktivieren möchten.

  3. Wählen Sie oben auf der Seite den Tab Schutz aus.

    Den aktuellen Status der Objektversionsverwaltung finden Sie im Abschnitt Objektversionsverwaltung.

  4. Klicken Sie im Abschnitt Objektversionsverwaltung auf den aktuellen Status, um ihn zu ändern.

    Das Dialogfeld Objektversionsverwaltung wird angezeigt.

    1. Wenn Sie die Objektversionsverwaltung aktivieren und Speicherkosten reduzieren möchten, klicken Sie auf das Kästchen Empfohlene Lebenszyklusregeln zum Verwalten der Versionskosten hinzufügen.
  5. Klicken Sie auf Bestätigen.

Befehlszeile

Führen Sie den Befehl gcloud storage buckets update mit dem geeigneten Flag aus.

gcloud storage buckets update gs://BUCKET_NAME FLAG

Dabei gilt:

  • BUCKET_NAME ist der Name des entsprechenden Buckets. Beispiel: my-bucket.

  • FLAG ist entweder --versioning, um die Objektversionsverwaltung zu aktivieren, oder --no-versioning, um sie zu deaktivieren.

Wenn der Vorgang erfolgreich war, sieht die Antwort in etwa so aus:

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

Clientbibliotheken

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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";
  }
}

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:


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

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:


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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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
}

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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);
  }
}

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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);
}

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket aktiviert:

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

Im folgenden Beispiel wird die Objektversionsverwaltung für einen Bucket deaktiviert:

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

REST APIs

JSON API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine JSON-Datei, die folgende Informationen enthält:

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

    Dabei ist STATE entweder true oder false.

  3. Verwenden Sie cURL, um die JSON API mit einer PATCH-Bucket-Anfrage aufzurufen:

    curl -X PATCH --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME?fields=versioning"

    Dabei gilt:

    • JSON_FILE_NAME ist der Pfad zur JSON-Datei, die Sie in Schritt 2 erstellt haben.
    • BUCKET_NAME ist der Name des entsprechenden Buckets. Beispiel: my-bucket.

XML API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Erstellen Sie eine XML-Datei mit den folgenden Informationen:

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

    Dabei ist STATE entweder Enabled oder Suspended.

  3. Verwenden Sie cURL, um die XML API mit einer PUT-Bucket-Anfrage und einem versioning-Abfragestringparameter aufzurufen:

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

    Dabei gilt:

    • XML_FILE_NAME ist der Pfad zur XML-Datei, die Sie in Schritt 2 erstellt haben.
    • BUCKET_NAME ist der Name des entsprechenden Buckets. Beispiel: my-bucket.

Wenn die Objektversionsverwaltung aktiviert ist, wird beim Ersetzen oder Löschen einer Live-Objektversion die ersetzte oder gelöschte Version zu einer nicht aktuellen Version.

Prüfen, ob die Objektversionsverwaltung aktiviert ist

So prüfen Sie, ob die Objektversionsverwaltung für einen Bucket aktiviert ist:

Console

  1. Wechseln Sie in der Cloud de Confiance Console unter „Cloud Storage“ zur Seite Buckets.

    Zur Seite "Buckets"

  2. In der Bucket-Liste finden Sie den Status der Objektversionsverwaltung in der Spalte Schutz.

Wenn diese Option aktiviert ist, wird der Text Objektversionsverwaltung angezeigt.

Befehlszeile

Verwenden Sie den Befehl gcloud storage buckets describe mit dem Flag --format:

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

Dabei ist BUCKET_NAME der Name des Buckets, dessen Status Sie aufrufen möchten. Beispiel: my-bucket.

Wenn der Befehl erfolgreich ausgeführt wurde und die Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

versioning:
  enabled: true

Wenn der Befehl erfolgreich ausgeführt wurde und keine Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

null

REST APIs

JSON API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Verwenden Sie cURL, um die JSON API mit einer GET-Bucket-Anfrage aufzurufen:

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

    Dabei ist BUCKET_NAME der Name des jeweiligen Buckets. Beispiel: my-bucket.

Wenn der Befehl erfolgreich ausgeführt wurde und die Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

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

Wenn der Befehl erfolgreich ausgeführt wurde und keine Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

{}

XML API

  1. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

  2. Verwenden Sie cURL, um die XML API mit einer GET-Bucket-Anfrage und einem versioning-Abfragestringparameter aufzurufen:

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

    Dabei ist BUCKET_NAME der Name des jeweiligen Buckets. Beispiel: my-bucket.

Wenn der Befehl erfolgreich ausgeführt wurde und die Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

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

Wenn der Befehl erfolgreich ausgeführt wurde und keine Objektversionsverwaltung aktiviert ist, sieht die Antwort in etwa so aus:

<VersioningConfiguration/>

Nächste Schritte