Bucket-übergreifende Replikation verwenden

Auf dieser Seite finden Sie eine Übersicht über die Bucket-übergreifende Replikation und eine Anleitung zur Verwendung der Funktion.

Bucket-übergreifende Replikation – Übersicht

In einigen Fällen kann es sinnvoll sein, Daten aus einem Cloud Storage-Bucket in einen anderen zu kopieren. Bei der Bucket-übergreifenden Replikation werden neue und aktualisierte Objekte asynchron aus einem Quell-Bucket in einen Ziel-Bucket kopiert.

Die Buckets-übergreifende Replikation unterscheidet sich von der Standard- und der Turbo-Replikation dadurch, dass Ihre Daten in zwei Buckets vorhanden sind, die jeweils eigene Konfigurationen wie Speicherort, Verschlüsselung, Zugriff und Speicherklasse haben. So bietet es nicht nur Datenwiederherstellung und -verfügbarkeit, sondern eignet sich auch für:

  • Datenhoheit: Daten in geografisch entfernten Regionen aufbewahren.
  • Separate Entwicklungs- und Produktionsversionen verwalten: Erstellen Sie separate Buckets und Namespaces, damit sich die Entwicklung nicht auf Ihre Produktionsarbeitslast auswirkt.
  • Daten freigeben: Daten in einem Bucket replizieren, der einem Anbieter oder Partner gehört.
  • Datenaggregation: Daten aus verschiedenen Buckets in einem einzigen Bucket zusammenführen, um Analysearbeitslasten auszuführen.
  • Kosten, Sicherheit und Compliance verwalten: Sie können Ihre Daten mit unterschiedlichen Eigentumsrechten, Speicherklassen und Aufbewahrungsfristen verwalten.

Bei der Bucket-übergreifenden Replikation werden Objekte mit dem Storage Transfer Service repliziert und Pub/Sub wird verwendet, um über Änderungen an den Quell- und Ziel-Buckets benachrichtigt zu werden. Die Bucket-übergreifende Replikation kann für neue und vorhandene Buckets aktiviert werden. Die meisten Objekte können innerhalb weniger Minuten repliziert werden, bei Objekten mit mehr als einem GiB kann es jedoch mehrere Stunden dauern.

Hinweise

Führen Sie zuerst die folgenden Schritte aus.

Storage Transfer Service API aktivieren

Aktivieren Sie die Storage Transfer Service API, falls noch nicht geschehen.

Erforderliche Rollen abrufen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Storage Transfer User (roles/storagetransfer.user) für den Bucket oder das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Bucket-übergreifende Replikation benötigen.

Diese vordefinierte Rolle enthält die Berechtigungen, die für die Bucket-übergreifende Replikation erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind für die Verwendung der Bucket-übergreifenden Replikation erforderlich:

  • storagetransfer.jobs.create
  • storagetransfer.jobs.delete
  • storagetransfer.jobs.get
  • storagetransfer.jobs.list
  • storagetransfer.jobs.run
  • storagetransfer.jobs.update

Eine Anleitung zum Zuweisen von Rollen für Buckets finden Sie unter IAM mit Buckets verwenden. Eine Anleitung zum Zuweisen von Rollen für Projekte finden Sie unter Zugriff auf Projekte verwalten.

Erforderliche Rollen gewähren

Bei der Bucket-übergreifenden Replikation werden mit Pub/Sub Benachrichtigungen zu Änderungen an Ihrem Quell-Bucket empfangen und mit dem Storage Transfer Service werden Objekte aus Ihrem Quell-Bucket in Ihrem Ziel-Bucket repliziert. Wenn Sie die Bucket-übergreifende Replikation verwenden möchten, müssen Sie dem Dienst-Agent, der vom Storage Transfer Service zum Replizieren von Daten verwendet wird, und dem Dienst-Agent, der von Pub/Sub zum Schreiben von Benachrichtigungen verwendet wird, die erforderlichen Berechtigungen erteilen.

Dem Storage Transfer Service-Dienst-Agent die erforderlichen Rollen zuweisen

Storage Transfer Service verwendet einen von Google verwalteten Dienst-Agent, um Daten zu replizieren. Die E-Mail-Adresse dieses Dienst-Agents folgt dem Benennungsformat project-PROJECT_NUMBER@storage-transfer-service.. Sie können die E-Mail-Adresse des Storage Transfer Service-Dienst-Agents mithilfe der Storage Transfer Service googleServiceAccounts.get API abrufen.

Der Storage Transfer Service-Dienst-Agent benötigt die folgenden Berechtigungen, um Ihre Objekte zu replizieren und Pub/Sub-Benachrichtigungen für Ihren Quell-Bucket einzurichten:

Erforderliche Berechtigungen

  • storage.buckets.get für den Quell- und Ziel-Bucket
  • storage.buckets.update für den Quell-Bucket
  • storage.objects.list für den Quell-Bucket
  • storage.objects.get für den Quell-Bucket
  • storage.objects.rewrite für den Ziel-Bucket
  • pubsub.topics.create für das Projekt

Diese Berechtigungen können über die Rolle „Pub/Sub-Bearbeiter“ (roles/pubsub.editor) und die Rolle „Storage-Administrator“ (roles/storage.admin) gewährt werden. Wenn Sie eine weniger umfassende Rolle als die Rolle „Storage-Administrator“ benötigen, können Sie auch eine benutzerdefinierte Rolle verwenden.

Cloud Storage-Dienst-Agent die erforderlichen Rollen zuweisen

In Cloud Storage werden Pub/Sub-Benachrichtigungen über einen von Google verwalteten Dienst-Agent verwaltet. Die E-Mail-Adresse dieses Dienst-Agents hat das Benennungsformat service-PROJECT_NUMBER@gs-project-accounts..

Der Cloud Storage-Dienst-Agent benötigt die folgenden Berechtigungen, um Pub/Sub einzurichten und Nachrichten in einem Thema zu veröffentlichen:

Erforderliche Berechtigungen

  • pubsub.topics.publish des Pub/Sub-Themas
  • pubsub.subscriptions.consume des Pub/Sub-Themas
  • pubsub.subscriptions.create für das Projekt

Diese Berechtigung kann über die Rolle „Pub/Sub-Publisher“ (roles/pubsub.publisher) erteilt werden.

Replikationsjob erstellen

Console

Eine Anleitung zum Erstellen eines Replikationsjobs mit der Google Cloud Console finden Sie unter Replikationsjob mit der Google Cloud Console erstellen.

Befehlszeile

Mit der Google Cloud CLI können Sie einen Replikationsjob für vorhandene Bucket erstellen.

Verwenden Sie zum Erstellen eines Replikationsjobs den Befehl gcloud alpha transfer jobs create mit dem Flag --replication:

gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication

Ersetzen Sie:

  • SOURCE_BUCKET_NAME durch den Namen des Quell-Buckets, das Sie replizieren möchten. Beispiel: my-source-bucket.

  • DESTINATION_BUCKET_NAME durch den Namen des Ziel-Buckets. Beispiel: my-destination-bucket.

REST APIs

JSON API

Wenn Sie die JSON API verwenden, können Sie einen Replikationsjob für vorhandene Buckets erstellen.

  1. Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Erstellen Sie eine JSON-Datei mit einem TransferJob-Objekt mit einer initialisierten ReplicationSpec-Ressource:

    TransferJob {
     "name": "TRANSFER_JOB_NAME",
     ...
     ReplicationSpec: {
       "gcsDataSource": {
         "bucketName": "SOURCE_BUCKET_NAME"
       },
       "gcsDataSink" {
         "bucketName": "DESTINATION_BUCKET_NAME"
       },
       "objectConditions": {
       },
       "transferOptions": {
         "overwriteWhen": "OVERWRITE_OPTION"
       }
     }
     ...
    }

    Ersetzen Sie:

    • TRANSFER_JOB_NAME durch den Namen, den Sie dem Replikationsjob zuweisen möchten. Informationen zu den Benennungsanforderungen finden Sie in der transferJobs-Referenzdokumentation.

    • SOURCE_BUCKET_NAME durch den Namen des Quell-Buckets, der die Objekte enthält, die Sie replizieren möchten. Beispiel: example-source-bucket

    • DESTINATION_BUCKET_NAME durch den Namen des Ziel-Buckets, in dem Ihre Objekte repliziert werden. Beispiel: example-destination-bucket

    • OVERWRITE_OPTION mit einer Option, wie vorhandene Objekte im Zielbucket im Rahmen eines Replikationsjobs überschrieben werden können. Dies kann passieren, wenn das Zielobjekt und das Quellobjekt denselben Namen haben. Der Wert muss einer der folgenden sein:

      • ALWAYS: Objekte im Ziel-Bucket immer überschreiben

      • DIFFERENT: Objekte im Ziel-Bucket nur überschreiben, wenn sich die Daten des Zielobjekts von den Daten des Quellobjekts unterscheiden

      • NEVER: Objekte im Ziel-Bucket niemals überschreiben

  3. Verwenden Sie cURL, um die Storage Transfer Service REST API mit einer transferJobs.create-Anfrage aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

    Dabei gilt:

    • JSON_FILE_NAME ist der Name der JSON-Datei, die Sie in Schritt 2 erstellt haben.

Den Status des Replikationsjobs können Sie in Cloud Logging in den Logs des Storage Transfer Service prüfen.

Replikationsjobs auflisten

Console

Eine Anleitung zum Auflisten von Replikationsjobs in der Google Cloud Console finden Sie unter Replikationsjobs mit der Google Cloud Console auflisten.

Befehlszeile

Führen Sie den Befehl gcloud alpha transfer jobs list mit dem Flag --job-type aus.

gcloud alpha transfer jobs list --job-type=replication

REST APIs

JSON API

  1. Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Verwenden Sie cURL, um die Storage Transfer Service REST API mit einer transferJobs.list-Anfrage aufzurufen:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs"

Replikationsjob ansehen

Console

Eine Anleitung zum Aufrufen eines Replikationsjobs in der Google Cloud Console finden Sie unter Replikationsjob mit der Google Cloud Console ansehen.

Befehlszeile

Führen Sie den Befehl gcloud alpha transfer jobs describe aus:

gcloud alpha transfer jobs describe JOB_NAME

Ersetzen Sie:

  • JOB_NAME mit der eindeutigen ID des Replikationsjobs. Beispiel: 1234567890. Die ID Ihres Übertragungsjobs finden Sie, indem Sie Ihre Replikationsjobs auflisten.

REST APIs

JSON API

  1. Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Verwenden Sie cURL, um die Storage Transfer Service REST API mit einer transferJobs.get-Anfrage aufzurufen:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ersetzen Sie:

Replikationsjob aktualisieren

Sie können die folgenden Felder eines Replikationsjobs aktualisieren:

  • Die Beschreibung des Replikationsjobs

  • Die Konfiguration für die Ausführung eines Replikationsjobs

  • Konfiguration der in Pub/Sub veröffentlichten Benachrichtigungen

  • Logging-Verhalten für Replikationsjob-Vorgänge

  • Der Status des Replikationsjobs (aktiviert, deaktiviert oder gelöscht)

Console

Eine Anleitung zum Aktualisieren eines Replikationsjobs in der Google Cloud Console finden Sie unter Replikationsjob mit der Google Cloud Console aktualisieren.

Befehlszeile

Verwenden Sie den Befehl gcloud alpha transfer jobs update mit den Flags, die die Eigenschaften des Replikationsjobs steuern, die Sie aktualisieren möchten. Eine Liste der möglichen Flags finden Sie in der gcloud alpha transfer jobs update-Dokumentation.

Wenn Sie beispielsweise das Überschreibungsverhalten von Objekten für den Replikationsjob aktualisieren möchten, führen Sie den Befehl gcloud alpha transfer jobs update mit dem Flag --overwrite-when aus:

gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION

Ersetzen Sie:

  • JOB_NAME mit der eindeutigen ID des Replikationsjobs. Beispiel: 1234567890. Wenn Sie die ID Ihres Übertragungsjobs ermitteln möchten, listen Sie ihn auf oder rufen Sie ihn auf.

  • OVERWRITE_OPTION mit einer Option, wie vorhandene Objekte im Ziel-Bucket durch einen Replikationsjob überschrieben werden können. Dies kann passieren, wenn das Zielobjekt und das Quellobjekt denselben Namen haben. Der Wert muss einer der folgenden sein:

    • always: Zielobjekte immer überschreiben

    • different: Objekte im Ziel-Bucket werden nur überschrieben, wenn sich die Daten des Zielobjekts von den Daten des Quellobjekts unterscheiden.

    • never: Zielobjekte werden nie überschrieben.

REST APIs

JSON API

  1. Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Erstellen Sie eine JSON-Datei mit der folgenden Struktur, die die Felder des TransferJob-Objekts enthält, das Sie aktualisieren möchten:

    {
     "projectId": string,
     "transferJob": {
       object (TransferJob)
     },
       "updateTransferJobFieldMask": UPDATE_MASK
    }

    Dabei gilt:

    • object (TransferJob) wird durch die Felder des Replikationsjobs ersetzt, den Sie aktualisieren möchten. Weitere Informationen finden Sie in der TransferJob-Ressourcendarstellung.

    • UPDATE_MASK ist eine durch Kommas getrennte Liste der Feldnamen, die Sie aktualisieren möchten. Folgende Werte sind möglich: description, transferSpec, notificationConfig, loggingConfig und status.

    Weitere Informationen zu den Feldnamen, die Sie angeben können, finden Sie im transferJobs.patch-Anfragetext.

  3. Verwenden Sie cURL, um die Storage Transfer Service REST API mit einer transferJobs.patch-Anfrage aufzurufen:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ersetzen Sie:

Replikationsjob löschen

Console

Eine Anleitung zum Löschen eines Replikationsjobs in der Google Cloud Console finden Sie unter Replikationsjob mit der Google Cloud Console löschen.

Befehlszeile

Führen Sie den Befehl gcloud alpha transfer jobs delete aus:

gcloud alpha transfer jobs delete JOB_NAME

Ersetzen Sie:

  • JOB_NAME mit der eindeutigen ID des Replikationsjobs. Beispiel: 1234567890. Die ID Ihres Replikationsjobs finden Sie, indem Sie Ihre Replikationsjobs auflisten.

REST APIs

JSON API

  1. Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header Authorization zu generieren.

  2. Verwenden Sie cURL, um die Storage Transfer Service REST API mit einer transferJobs.delete-Anfrage aufzurufen:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"

    Ersetzen Sie: