Bucket-übergreifende Replikation verwenden

Auf dieser Seite finden Sie eine Übersicht über die bucketübergreifende Replikation und eine Anleitung zur Verwendung des Features.

Übersicht über die Bucket-übergreifende Replikation

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.

Beschränkungen

  • Die Bucket-übergreifende Replikation wird für Buckets mit hierarchischen Namespaces nicht unterstützt.

Hinweise

Führen Sie zuerst die folgenden Schritte aus.

Storage Transfer Service API aktivieren

Falls noch nicht geschehen, aktivieren Sie die Storage Transfer Service API.

Erforderliche Rollen abrufen

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

Diese vordefinierte Rolle enthält die Berechtigungen, die für die Verwendung der Bucket-übergreifenden 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 Objekte mit dem Storage Transfer Service aus dem Quell-Bucket in den Ziel-Bucket repliziert. Pub/Sub wird verwendet, um Benachrichtigungen über Änderungen am Quell-Bucket zu erhalten.

Damit die Bucket-übergreifende Replikation diese Dienste nutzen kann, müssen Sie dem Dienstkonto, das von Storage Transfer Service zum Replizieren von Daten verwendet wird, sowie dem Dienst-Agent, der von Pub/Sub zum Schreiben von Benachrichtigungen verwendet wird, die erforderlichen Berechtigungen erteilen.

Erforderliche Rollen für Storage Transfer Service zuweisen

Die erforderlichen Berechtigungen zum Replizieren von Daten mit Storage Transfer Service können einem von zwei Dienstkonten gewährt werden:

  • Der Dienst-Agent für Storage Transfer Service, der automatisch von Google erstellt und verwaltet wird. Die E-Mail-Adresse dieses Dienst-Agents hat das Namensformat project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Sie können die E-Mail-Adresse des Storage Transfer Service-Dienst-Agents mit der Storage Transfer Service googleServiceAccounts.get API abrufen.

  • Ein vom Nutzer verwaltetes Dienstkonto. Die E-Mail-Adresse dieses Dienstkontos hat das Namensformat SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. Sie können ein eigenes Dienstkonto erstellen und die erforderlichen Berechtigungen zum Replizieren der Daten gewähren.

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

Erforderliche Berechtigungen

Für das Quellprojekt müssen die folgenden Berechtigungen erteilt werden:

  • pubsub.topics.create
  • pubsub.subscriptions.create
  • pubsub.subscriptions.consume
  • iam.serviceAccounts.actAs, wenn Sie ein nutzerverwaltetes Dienstkonto verwenden. Nicht für den Storage Transfer Service-Dienst-Agent erforderlich.

Für den Quell-Bucket müssen die folgenden Berechtigungen erteilt werden:

  • storage.buckets.get
  • storage.buckets.update
  • storage.objects.get

Für den Ziel-Bucket müssen die folgenden Berechtigungen gewährt werden:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get

Diese Berechtigungen können über benutzerdefinierte Rollen oder durch Zuweisen aller der folgenden vordefinierten Rollen erteilt werden:

  • Rolle „Pub/Sub-Bearbeiter“ (roles/pubsub.editor) für das Quellprojekt
  • Rollen „Inhaber alter Storage-Buckets“ (roles/storage.legacyBucketOwner) und „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) für den Quell-Bucket
  • Die Rollen „Autor alter Storage-Buckets“ (roles/storage.legacyBucketWriter) und „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) für den Ziel-Bucket
  • Die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) im Quellprojekt, wenn Sie ein vom Nutzer verwaltetes Dienstkonto verwenden. Nicht für den Dienst-Agent für Storage Transfer Service erforderlich.

Erforderliche Rollen für Pub/Sub zuweisen

Cloud Storage verwendet einen von Google verwalteten Dienst-Agent, um Pub/Sub-Benachrichtigungen zu verwalten. Die E-Mail-Adresse dieses Dienst-Agents hat das Namensformat service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com.

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 für das Pub/Sub-Thema
  • pubsub.subscriptions.consume für das Pub/Sub-Thema
  • 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

Wenn Sie die Google Cloud CLI verwenden, können Sie einen Replikationsjob für vorhandene Buckets 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, den 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, die ein TransferJob-Objekt mit einer initialisierten ReplicationSpec-Ressource enthält:

    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 Anforderungen an die Benennung finden Sie in der Referenzdokumentation zu transferJobs.

    • 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 den Ihre Objekte repliziert werden. Beispiel: example-destination-bucket

    • OVERWRITE_OPTION mit einer Option, mit der festgelegt werden kann, wie vorhandene Objekte im Ziel-Bucket als Ergebnis 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 werden nur überschrieben, wenn sich die Daten des Zielobjekts von den Daten des Quellobjekts unterscheiden.

      • NEVER: Objekte im Ziel-Bucket nie ü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.

Prüfen Sie die Cloud Logging-Logs für Storage Transfer Service, um den Status des Replikationsjobs zu prüfen.

Replikationsjobs auflisten

Console

Eine Anleitung zum Auflisten von Replikationsjobs über die Google Cloud Console finden Sie unter Replikationsjobs über die 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 in der Google Cloud Console aufrufen.

Befehlszeile

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

gcloud alpha transfer jobs describe JOB_NAME

Ersetzen Sie:

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 zum Ausführen eines Replikationsjobs

  • Konfiguration von Benachrichtigungen, die in Pub/Sub veröffentlicht werden

  • Das Logging-Verhalten für Replikationsjobvorgänge

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

Console

Eine Anleitung zum Aktualisieren eines Replikationsjobs über die Google Cloud Console finden Sie unter Replikationsjob über die 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 Dokumentation zu gcloud alpha transfer jobs update.

Wenn Sie beispielsweise das Verhalten beim Überschreiben von Objekten des Replikationsjobs 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 durch die eindeutige 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, mit der festgelegt werden kann, wie vorhandene Objekte im Ziel-Bucket als Ergebnis 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: 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, die Sie aktualisieren möchten. Weitere Informationen finden Sie in der Ressourcendarstellung von TransferJob.

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

    Weitere Informationen zu den Feldnamen, die Sie einfügen 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 über die Google Cloud Console finden Sie unter Replikationsjob über die 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:

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: