Versionierte Objekte verwenden

Übersicht Einrichtung

Auf dieser Seite wird beschrieben, wie nicht aktuelle Objekte aufgelistet, aufgerufen, wiederhergestellt und gelöscht werden. Dies gilt in der Regel für Buckets mit aktivierter Objektversionsverwaltung. Nicht aktuelle Objekte werden auch als versionierte Objekte bezeichnet.

Hinweis

Führen Sie die folgenden Schritte aus, um mit nicht aktuellen Objekten zu arbeiten.

Objektversionierung aktivieren

Falls noch nicht geschehen, aktivieren Sie die Objektversionsverwaltung für Ihren Bucket.

Erforderliche Rollen abrufen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten nicht aktueller Objekte benötigen. Diese vordefinierte Rolle enthält die Berechtigungen, die zum Verwalten nicht aktueller Objekte erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

  • storage.objects.create
  • storage.objects.delete
  • storage.objects.get
  • storage.objects.list

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

Informationen zum Zuweisen von Rollen für Projekte finden Sie unter Zugriff auf Projekte verwalten.

Je nach Anwendungsfall benötigen Sie möglicherweise zusätzliche Berechtigungen oder alternative Rollen:

  • Wenn Sie die Google Cloud Console zum Ausführen der Aufgaben auf dieser Seite verwenden möchten, benötigen Sie außerdem die Berechtigung storage.buckets.list, die nicht in der Rolle „Storage-Objekt-Nutzer“ (roles/storage.objectUser) enthalten ist. Bitten Sie den Administrator, Ihnen die Rolle „Storage-Administrator“ (roles/storage.admin) für das Projekt zuzuweisen, um diese Berechtigung zu erhalten.

  • Wenn der einheitliche Zugriff auf Bucket-Ebene für Ihren Bucket deaktiviert ist, benötigen Sie in den folgenden Szenarien zusätzliche Berechtigungen:

    • Wenn Sie nicht aktuelle Objekte zusammen mit ihren ACLs zurückgeben möchten, benötigen Sie außerdem die Berechtigung storage.objects.getIamPolicy, die nicht in der Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) enthalten ist. Bitten Sie den Administrator, Ihnen die Rolle „Storage-Objekt-Administrator“ (roles/storage.objectAdmin) für das Projekt zuzuweisen, um diese Berechtigung zu erhalten.

    • Wenn Sie nicht aktuelle Objekte mit ACLs umbenennen oder wiederherstellen möchten, benötigen Sie außerdem die Berechtigung storage.objects.setIamPolicy, die nicht in der Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) enthalten ist. Bitten Sie den Administrator, Ihnen die Rolle „Storage-Objekt-Administrator“ (roles/storage.objectAdmin) für das Projekt zuzuweisen, um diese Berechtigung zu erhalten.

Nicht aktuelle Objektversionen auflisten

So listen Sie sowohl Live- als auch nicht aktuelle Versionen von Objekten mit den zugehörigen generation-Nummern auf:

Console

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

    Buckets aufrufen

  2. Klicken Sie in der Liste der Buckets auf den Namen des Buckets, der das gewünschte Objekt enthält.

    Die Seite Bucket-Details wird geöffnet und der Tab Objekte ist ausgewählt.

  3. Wenn Sie nicht aktuelle Objekte aufrufen möchten, klicken Sie auf das Drop-down-Menü Anzeigen und wählen Sie Aktuelle und nicht aktuelle Objekte aus.

  4. Klicken Sie in der Liste der Objekte auf den Namen des Objekts, dessen Versionen Sie sehen möchten.

    Die Seite Objektdetails wird geöffnet, wobei der Tab Liveobjekt ausgewählt ist.

  5. Klicken Sie auf den Tab Versionsverlauf, um alle Versionen des Objekts aufzurufen.

Befehlszeile

Führen Sie den Befehl gcloud storage ls --all-versions aus:

gcloud storage ls --all-versions gs://BUCKET_NAME

Dabei ist BUCKET_NAME der Name des Buckets, der die Objekte enthält. Beispiel: my-bucket.

Die Antwort sieht in etwa so aus:

gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1
gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2
gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3
...

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.

namespace gcs = ::google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name) {
  for (auto&& object_metadata :
       client.ListObjects(bucket_name, gcs::Versions{true})) {
    if (!object_metadata) throw std::move(object_metadata).status();

    std::cout << "bucket_name=" << object_metadata->bucket()
              << ", object_name=" << object_metadata->name()
              << ", generation=" << object_metadata->generation() << "\n";
  }
}

C#

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

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.


using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;

public class ListFileArchivedGenerationSample
{
	public IEnumerable<Google.Apis.Storage.v1.Data.Object> ListFileArchivedGeneration(string bucketName = "your-bucket-name")
	{
		var storage = StorageClient.Create();

		var storageObjects = storage.ListObjects(bucketName, options: new ListObjectsOptions
		{
			Versions = true
		});

		foreach (var storageObject in storageObjects)
		{
			Console.WriteLine($"Filename: {storageObject.Name}, Generation: {storageObject.Generation}");
		}

		return storageObjects;
	}
}

Go

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

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.

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

	"cloud.google.com/go/storage"
	"google.golang.org/api/iterator"
)

// listFilesAllVersion lists both live and noncurrent versions of objects within specified bucket.
func listFilesAllVersion(w io.Writer, bucket string) error {
	// bucket := "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()