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 möchten Sie möglicherweise Daten von einem Cloud Storage-Bucket in einen anderen 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. Pub/Sub wird für Benachrichtigungen über Änderungen an den Quell- und Ziel-Buckets verwendet. 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

  • Benutzerdefinierte Namen werden für Bucket-übergreifende Replikationsjobs nicht unterstützt. Erstellungsanfragen, die einen Wert für das Feld name enthalten, geben einen Fehler zurück.

  • Die Bucket-übergreifende Replikation wird für Buckets mit hierarchischem Namespace oder zonale Buckets nicht unterstützt.

  • Das Löschen von Objekten im Quell-Bucket wird nicht in den Ziel-Bucket repliziert.

  • Konfigurationen für den Objektlebenszyklus werden nicht repliziert.

  • Bei der Replikation von Objekten werden Zeitstempelmetadaten (z. B. timeCreated und timeUpdated) nicht beibehalten. Weitere Informationen zur Metadatenaufbewahrung finden Sie unter Übertragungen zwischen Cloud Storage-Buckets.

  • Da die Bucket-übergreifende Replikation verwendet werden kann, um Daten zwischen Buckets an einem beliebigen Google Cloud-Standort zu replizieren, variiert die Leistung der Bucket-übergreifenden Replikation je nach den ausgewählten Standorten. Daher bietet die Bucket-übergreifende Replikation kein Recovery Point Objective (RPO).

  • Objekte, die sich bereits im Bucket befinden, wenn ein Replikationsjob erstellt wird, werden nicht automatisch repliziert. Es werden nur neue und aktualisierte Objekte repliziert. Wenn Sie vorhandene Objekte replizieren möchten, erstellen Sie einen einmaligen Storage Transfer Service-Übertragungsjob von Ihrem vorhandenen Bucket zum neuen Bucket. Eine Anleitung finden Sie unter Übertragungen erstellen.

Hinweis

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 folgenden IAM-Rollen für das Projekt zuzuweisen, in dem der Replikationsjob erstellt wird, um die Berechtigungen zu erhalten, die Sie für die Bucket-übergreifende Replikation benötigen:

Diese vordefinierten Rollen enthalten die Berechtigungen, die für die Bucket-übergreifende Replikation erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

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

  • Jobs erstellen, ausführen und aktualisieren:
    • storagetransfer.jobs.create
    • storagetransfer.jobs.get
    • storagetransfer.jobs.list
    • storagetransfer.jobs.run
    • storagetransfer.jobs.update
  • Jobs löschen: storagetransfer.jobs.delete

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 zuweisen

Bei der Bucket-übergreifenden Replikation werden Objekte mit dem Storage Transfer Service aus dem Quell-Bucket in den Ziel-Bucket repliziert. Pub/Sub wird für Benachrichtigungen über Änderungen am Quell-Bucket verwendet.

Damit die Bucket-übergreifende Replikation diese Dienste verwenden 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. Entweder:

  • 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.. Sie können die E-Mail-Adresse des Storage Transfer Service-Dienst-Agents mithilfe der Storage Transfer Service googleServiceAccounts.get API abrufen.

oder:

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

    Eine Anleitung zur Verwendung eines vom Nutzer verwalteten Dienstkontos mit dem Storage Transfer Service finden Sie unter Berechtigungen des Dienst-Agents an ein vom Nutzer verwaltetes Dienstkonto delegieren. Über die in den folgenden Listen aufgeführten Berechtigungen hinaus sind zusätzliche Berechtigungen erforderlich. Insbesondere müssen Sie dem Dienst-Agent Zugriff auf das vom Nutzer verwaltete Dienstkonto gewähren, indem Sie die Rolle „Dienstkonto-Token-Ersteller“ (roles/iam.serviceAccountTokenCreator) zuweisen. Weitere Informationen finden Sie unter Zugriff auf den Dienst-Agent 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

Die folgenden Berechtigungen müssen für das Quellprojekt gewährt werden:

  • pubsub.topics.create
  • pubsub.subscriptions.create
  • pubsub.subscriptions.consume

Die folgenden Berechtigungen müssen für den Quell-Bucket gewährt 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 folgenden vordefinierten Rollen gewährt 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
  • Rollen „Storage Object User“ (roles/storage.objectUser) und „Storage Legacy Bucket Reader“ (roles/storage.legacyBucketReader) für den Ziel-Bucket

Erforderliche Rollen für Pub/Sub zuweisen

Cloud Storage verwendet einen Dienst-Agent zum Verwalten von Pub/Sub-Benachrichtigungen. Die E-Mail-Adresse dieses Dienst-Agents hat das Namensformat 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 für das Pub/Sub-Thema

Diese Berechtigungen können über benutzerdefinierte Rollen oder durch Zuweisen der folgenden vordefinierten Rolle gewährt werden:

  • Pub/Sub-Publisher (roles/pubsub.publisher) für das Quellprojekt

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.

Das Flag --name wird für Bucket-übergreifende Replikationsjobs nicht unterstützt.

REST APIs

JSON API

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

  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 ein TransferJob-Objekt mit einer initialisierten ReplicationSpec-Ressource enthält:

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

    Ersetzen Sie:

    • 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, 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 nur überschreiben, wenn sich die Daten des Zielobjekts von den Daten des Quellobjekts unterscheiden

      • NEVER: Objekte im Ziel-Bucket nie überschreiben

    Das Feld name wird für Bucket-übergreifende Replikationsjobs nicht unterstützt.

  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"

    Ersetzen Sie Folgendes:

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

Informationen zum Prüfen des Status des Replikationsjobs finden Sie unter Cloud Logging für den Storage Transfer Service.

Replikationsjobs auflisten

Console

Eine Anleitung zum Auflisten von Replikationsjobs mit 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. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header 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 Ansehen eines Replikationsjobs mit 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:

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 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:

  • Beschreibung des Replikationsjobs
  • Konfiguration zum Ausführen eines Replikationsjobs
  • Konfiguration von Benachrichtigungen, die in Pub/Sub veröffentlicht werden
  • Logging-Verhalten für Replikationsjobvorgänge
  • Status des Replikationsjobs (aktiviert, deaktiviert oder gelöscht)

Console

Eine Anleitung zum Aktualisieren eines Replikationsjobs mit 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 Attribute 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 Ihren Übertragungsjob auf oder sehen Sie ihn sich an.

  • OVERWRITE_OPTION durch eine Option, mit der 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. Installieren und initialisieren Sie die gcloud CLI, um ein Zugriffstoken für den Authorization-Header zu generieren.

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

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

    Ersetzen Sie Folgendes:

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

    • UPDATE_MASK ist eine durch Kommas getrennte Liste der Feldnamen, die Sie aktualisieren möchten. Werte können einer oder mehrere der folgenden sein: description, transferSpec, notificationConfig, loggingConfig, status.

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

  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 mit 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:

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 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: