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-Bucketstorage.buckets.update
für den Quell-Bucketstorage.objects.list
für den Quell-Bucketstorage.objects.get
für den Quell-Bucketstorage.objects.rewrite
für den Ziel-Bucketpubsub.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-Themaspubsub.subscriptions.consume
des Pub/Sub-Themaspubsub.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.
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.Erstellen Sie eine JSON-Datei mit einem
TransferJob
-Objekt mit einer initialisiertenReplicationSpec
-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 dertransferJobs
-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 überschreibenDIFFERENT
: Objekte im Ziel-Bucket nur überschreiben, wenn sich die Daten des Zielobjekts von den Daten des Quellobjekts unterscheidenNEVER
: Objekte im Ziel-Bucket niemals überschreiben
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
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.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
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.Verwenden Sie
cURL
, um die Storage Transfer Service REST API mit einertransferJobs.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:
JOB_NAME
durch die eindeutige ID des Replikationsjobs. Beispiel:1234567890
. Wenn Sie die ID Ihres Replikationsjobs ermitteln möchten, listen Sie Ihre Replikationsjobs auf.
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 überschreibendifferent
: 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
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.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 derTransferJob
-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
undstatus
.
Weitere Informationen zu den Feldnamen, die Sie angeben können, finden Sie im
transferJobs.patch
-Anfragetext.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:
JOB_NAME
durch die eindeutige ID des Replikationsjobs. Beispiel:1234567890
. Wenn Sie die ID Ihres Replikationsjobs ermitteln möchten, listen Sie Ihre Replikationsjobs auf.
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
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.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:
JOB_NAME
durch die eindeutige ID des Replikationsjobs. Beispiel:1234567890
. Wenn Sie die ID Ihres Replikationsjobs ermitteln möchten, listen Sie Ihre Replikationsjobs auf.