Daten exportieren und importieren
Sie können den verwalteten Export- und Importdienst von Firestore dazu verwenden, versehentlich gelöschte Daten wiederherzustellen und Daten für die Offlineverarbeitung zu exportieren. Es lassen sich alle Dokumente oder nur bestimmte Sammlungen exportieren. Ebenso können Sie alle Daten aus einem Export oder nur bestimmte Sammlungen daraus importieren. Bei Daten, die aus einer Firestore-Datenbank exportiert wurden, besteht die Möglichkeit, sie in eine andere Firestore-Datenbank zu importieren. Sie können auch Firestore-Exporte in BigQuery laden.
Auf dieser Seite wird gezeigt, wie Sie Firestore-Dokumente mithilfe des verwalteten Export- und Importdienstes und von Cloud Storage exportieren bzw. importieren. Der verwaltete Export- und Importdienst für Firestore ist über das gcloud
-Befehlszeilentool und über die Firestore API (REST, RPC) verfügbar.
Hinweis
Bevor Sie den verwalteten Export- und Importdienst verwenden können, müssen Sie die folgenden Schritte ausführen:
- Aktivieren Sie die Abrechnung für Ihr Google Cloud-Projekt. Die Export- und Importfunktionalität kann nur für Google Cloud-Projekte mit aktivierter Abrechnung verwendet werden.
- Erstellen Sie einen Cloud Storage-Bucket für Ihr Projekt an einem Standort in der Nähe des Speicherorts Ihrer Firestore-Datenbank. Sie können für Export- und Importvorgänge keinen Bucket mit der Funktion "Anforderer bezahlt" verwenden.
-
Sorgen Sie dafür, dass Ihr Konto die erforderlichen Berechtigungen für Cloud Firestore und Cloud Storage hat. Wenn Sie der Projektinhaber sind, enthält Ihr Konto bereits die notwendigen Berechtigungen. Andernfalls gewähren die folgenden Rollen die erforderlichen Berechtigungen für Export- und Importvorgänge und für den Zugriff auf Cloud Storage:
- Firestore-Rollen:
Owner
,Cloud Datastore Owner
oderCloud Datastore Import Export Admin
Cloud Storage-Rollen:
Owner
oderStorage Admin
- Firestore-Rollen:
Berechtigungen des Dienst-Agents
Export- und Importvorgänge verwenden einen Firestore-Dienst-Agent, um Cloud Storage-Vorgänge zu autorisieren. Der Firestore-Dienstagent verwendet die folgende Namenskonvention:
- Firestore-Dienst-Agent
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Weitere Informationen zu Dienst-Agents finden Sie unter Dienst-Agents.
Der Firestore-Dienst-Agent benötigt Zugriff auf den Cloud Storage-Bucket, der in einem Export- oder Importvorgang verwendet wird. Wenn sich Ihr Cloud Storage-Bucket im selben Projekt wie Ihre Firestore-Datenbank befindet, kann der Firestore-Dienst-Agent standardmäßig auf den Bucket zugreifen.
Wenn sich der Cloud Storage-Bucket in einem anderen Projekt befindet, müssen Sie dem Firestore-Dienst-Agent Zugriff auf den Cloud Storage-Bucket gewähren.
Dem Kundenservicemitarbeiter Rollen zuweisen
Sie können das gsutil-Befehlszeilentool verwenden, um eine der folgenden Rollen zuzuweisen. Führen Sie beispielsweise den folgenden Befehl aus, um dem Firestore-Dienst-Agent die Rolle „Storage-Administrator“ zuzuweisen:
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \ gs://[BUCKET_NAME]
Ersetzen Sie PROJECT_NUMBER
durch Ihre Projektnummer, die für den Namen Ihres Firestore-Dienstmitarbeiters verwendet wird. Wie Sie den Namen des Dienst-Agents aufrufen, erfahren Sie unter Namen des Dienst-Agents aufrufen.
Alternativ können Sie diese Rolle mithilfe der Google Cloud Console zuweisen.
Name des Dienst-Agents ansehen
Auf der Seite Import/Export in der Google Cloud Console können Sie das Konto aufrufen, mit dem Ihre Import- und Exportvorgänge autorisiert werden. Sie können auch sehen, ob für Ihre Datenbank der Firestore-Dienstagent oder das alte App Engine-Dienstkonto verwendet wird.
-
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
-
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
-
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
- Das Autorisierungskonto finden Sie neben dem Label Import-/Exportjobs werden ausgeführt als.
Der Dienst-Agent benötigt die Rolle Storage Admin
für den Cloud Storage-Bucket, der für den Export- oder Importvorgang verwendet werden soll.
gcloud
für das Projekt einrichten
Sie können Import- und Exportvorgänge über die Google Cloud Console oder das gcloud
-Befehlszeilentool initiieren. Richten Sie das Befehlszeilentool ein, um gcloud
zu verwenden, und stellen Sie mit einer der folgenden Methoden eine Verbindung zu Ihrem Projekt her:
Rufen Sie
gcloud
über die Google Cloud Platform Console mit Cloud Shell auf.Achten Sie darauf, dass
gcloud
für das richtige Projekt konfiguriert ist:gcloud config set project [PROJECT_ID]
Daten exportieren
Bei einem Exportvorgang werden Dokumente Ihrer Datenbank in eine Gruppe von Dateien kopiert, die sich in einem Cloud Storage-Bucket befinden. Beachten Sie, dass ein Export kein exakter Datenbank-Snapshot ist, der zum Startzeitpunkt des Exports aufgenommen wurde. Ein Export kann Änderungen enthalten, die während der Ausführung des Vorgangs vorgenommen wurden.
Alle Dokumente exportieren
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
Klicken Sie auf Exportieren.
Klicken Sie auf die Option Gesamte Datenbank exportieren.
Geben Sie unter Ziel auswählen den Namen eines Cloud Storage-Buckets ein oder wählen Sie mit der Schaltfläche Suchen einen Bucket aus.
Klicken Sie auf Exportieren.
Die Console kehrt zur Seite Import/Export zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der letzten Import- und Exportseite einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.
gcloud
Verwenden Sie den Befehl firestore export
, um alle Dokumente Ihrer Datenbank zu exportieren und ersetzen Sie [BUCKET_NAME]
durch den Namen Ihres Cloud Storage-Buckets. Fügen Sie das Flag --async
hinzu, um zu verhindern, dass das gcloud
-Tool auf den Abschluss des Vorgangs wartet.
gcloud firestore export gs://[BUCKET_NAME] \ --database=[DATABASE]
Ersetzen Sie Folgendes:
BUCKET_NAME
: Sie können Ihre Exporte organisieren, indem Sie hinter den Bucket-Namen ein Dateipräfix hinzufügen, z. B.BUCKET_NAME/my-exports-folder/export-name
. Wenn Sie kein Dateipräfix angeben, wird vom verwalteten Exportdienst ein Präfix auf Basis des aktuellen Zeitstempels erstellt.DATABASE
: Name der Datenbank, aus der Sie die Dokumente exportieren möchten. Verwenden Sie für die Standarddatenbank--database='(default)'
.
Wenn Sie einen Export gestartet haben, wird der Vorgang durch Schließen des Terminals nicht abgebrochen. Siehe Vorgang abbrechen.
Bestimmte Sammlungen exportieren
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
Klicken Sie auf Exportieren.
Klicken Sie auf die Option Eine oder mehrere Sammlungsgruppen exportieren. Wählen Sie im Drop-down-Menü eine oder mehrere Sammlungsgruppen aus.
Geben Sie unter Ziel auswählen den Namen eines Cloud Storage-Buckets ein oder wählen Sie mit der Schaltfläche Suchen einen Bucket aus.
Klicken Sie auf Exportieren.
Die Console kehrt zur Seite Import/Export zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der letzten Import- und Exportseite einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.
gcloud
Verwenden Sie das Flag --collection-ids
, um bestimmte Sammlungsgruppen zu exportieren. Bei diesem Vorgang werden nur die Sammlungsgruppen mit den angegebenen Sammlungs-IDs exportiert. Eine Sammlungsgruppe enthält alle Sammlungen und untergeordneten Sammlungen (in einem beliebigen Pfad) mit der festgelegten Sammlungs-ID.
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --database=[DATABASE]
Sie können beispielsweise eine restaurants
-Sammlung in der foo
-Datenbank so gestalten, dass sie mehrere Untersammlungen wie ratings
, reviews
oder outlets
enthält. Wenn Sie die Sammlungen restaurants
und reviews
exportieren möchten, sieht der Befehl so aus:
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=restaurants,reviews \ --database='cymbal'
Aus einem PITR-Zeitstempel exportieren
Sie können Ihre Datenbank mit dem Befehl gcloud firestore export
aus PITR-Daten in Cloud Storage exportieren. Sie können PITR-Daten exportieren, deren Zeitstempel auf eine volle Minute innerhalb der letzten sieben Tage festgelegt ist, jedoch nicht früher als der earliestVersionTime
. Wenn zum angegebenen Zeitstempel keine Daten mehr vorhanden sind, schlägt der Exportvorgang fehl.
Der PITR-Exportvorgang unterstützt alle Filter, einschließlich des Exportierens aller Dokumente und bestimmter Sammlungen.
Exportieren Sie die Datenbank und geben Sie für den Parameter
snapshot-time
den gewünschten Wiederherstellungszeitstempel an.gcloud
Führen Sie den folgenden Befehl aus, um die Datenbank in Ihren Bucket zu exportieren.
gcloud firestore export gs://[BUCKET_NAME_PATH] \ --snapshot-time=[PITR_TIMESTAMP] \ --collection-ids=[COLLECTION_IDS] \ --namespace-ids=[NAMESPACE_IDS]
Dabei gilt:
PITR_TIMESTAMP
: PITR-Zeitstempel mit einer Minute als Granularität, z. B.2023-05-26T10:20:00.00Z
.
Beachten Sie Folgendes, bevor Sie PITR-Daten exportieren:
- Geben Sie den Zeitstempel im RFC 3339-Format an.
Beispiel:
2020-09-01T23:59:30.234233Z
. - Der angegebene Zeitstempel muss ein Zeitstempel für eine volle Minute innerhalb der letzten sieben Tage sein, aber nicht älter als der
earliestVersionTime
. Wenn zum angegebenen Zeitstempel keine Daten mehr vorhanden sind, wird ein Fehler generiert. - Für einen fehlgeschlagenen PITR-Export werden Ihnen keine Gebühren in Rechnung gestellt.
Daten importieren
Sobald Sie Dateien in Cloud Storage exportiert haben, können Sie Dokumente aus diesen Dateien wieder in Ihr Projekt oder in ein anderes Projekt importieren. Beachten Sie die folgenden Punkte zu Importvorgängen:
Beim Importieren von Daten werden die erforderlichen Indexe mit den aktuellen Indexdefinitionen der Datenbank aktualisiert. Ein Export enthält keine Indexdefinitionen.
Es werden beim Import keine neuen Dokument-IDs zugewiesen. Für den Import werden die IDs verwendet, die zum Zeitpunkt des Exports erfasst wurden. Die ID eines Dokuments wird beim Import reserviert, um ID-Kollisionen zu vermeiden. Wenn ein Dokument mit derselben ID bereits vorhanden ist, wird das vorhandene Dokument durch den Import überschrieben.
Wenn ein Dokument in Ihrer Datenbank nicht von einem Import betroffen ist, bleibt es nach dem Import in Ihrer Datenbank bestehen.
Importvorgänge lösen keine Cloud Functions-Funktionen aus. Snapshot-Listener erhalten Aktualisierungen im Zusammenhang mit Importvorgängen.
Der Name der
.overall_export_metadata
-Datei muss mit dem Namen des übergeordneten Ordners übereinstimmen:gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata
Wenn Sie die Ausgabedateien eines Exports verschieben oder kopieren, müssen die Dateinamen PARENT_FOLDER_NAME und
.overall_export_metadata
gleich bleiben.
Alle Dokumente aus einem Export importieren
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
Klicken Sie auf Importieren.
Geben Sie im Feld Dateiname den Dateinamen einer
.overall_export_metadata
-Datei aus einem abgeschlossenen Exportvorgang ein. Sie können die Schaltfläche Durchsuchen verwenden, um die Datei auszuwählen.Klicken Sie auf Importieren.
Die Console kehrt zur Seite Import/Export zurück. Wenn der Vorgang erfolgreich gestartet wird, fügt die Seite der letzten Import- und Exportseite einen Eintrag hinzu. Bei einem Fehler wird auf der Seite eine Fehlermeldung angezeigt.
gcloud
Verwenden Sie den Befehl firestore import
, um Dokumente aus einem vorherigen Exportvorgang zu importieren,
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]
Ersetzen Sie Folgendes:
BUCKET_NAME/EXPORT_PREFIX
: Speicherort Ihrer Exportdateien.DATABASE
: Name der Datenbank. Verwenden Sie für die Standarddatenbank--database='(default)'
.
Beispiel:
gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'
Sie können den Speicherort Ihrer Exportdateien im Cloud Storage-Browser in der Google Cloud Console bestätigen:
Wenn Sie einen Import gestartet haben, wird der Vorgang durch Schließen des Terminals nicht abgebrochen. Siehe Vorgang abbrechen.
Bestimmte Sammlungen importieren
Google Cloud Console
Sie können in der Konsole keine bestimmten Sammlungen auswählen. Verwenden Sie stattdessen gcloud
.
gcloud
Verwenden Sie das Flag --collection-ids
, um bestimmte Sammlungsgruppen aus einer Gruppe von Exportdateien zu importieren. Bei diesem Vorgang werden nur die Sammlungsgruppen mit den angegebenen Sammlungs-IDs importiert. Eine Sammlungsgruppe enthält alle Sammlungen und untergeordneten Sammlungen (in einem beliebigen Pfad) mit der festgelegten Sammlungs-ID. Geben Sie den Datenbanknamen mit dem Flag --database
an. Verwenden Sie für die Standarddatenbank --database='(default)'
.
Nur ein Export bestimmter Sammlungsgruppen unterstützt den Import bestimmter Sammlungsgruppen. Der Import bestimmter Sammlungen aus einem Export aller Dokumente ist nicht möglich.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --database=[DATABASE]
PITR-Export importieren
Folgen Sie der Anleitung unter Alle Dokumente importieren, um die exportierte Datenbank zu importieren. Wenn in Ihrer Datenbank bereits ein Dokument vorhanden ist, wird es überschrieben.
Export- und Importvorgänge verwalten
Nachdem Sie einen Export- oder Importvorgang gestartet haben, weist Firestore dem Vorgang einen eindeutigen Namen zu. Sie können mit diesem Namen den Vorgang löschen, abbrechen oder seinen Status prüfen.
Vorgangsnamen haben das Präfix projects/[PROJECT_ID]/databases/(default)/operations/
, zum Beispiel:
projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Wenn Sie für die Befehle describe
, cancel
und delete
einen Vorgangsnamen angeben, können Sie das Präfix weglassen.
Alle Export- und Importvorgänge auflisten
Google Cloud Console
Eine Liste der letzten Export- und Importvorgänge finden Sie in der Google Cloud Console auf der Seite Import/Export.
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
gcloud
Verwenden Sie den Befehl operations list
, um alle laufenden und kürzlich abgeschlossenen Export- und Importvorgänge anzeigen zu lassen:
gcloud firestore operations list
Vorgangsstatus prüfen
Google Cloud Console
Sie können den Status eines kürzlichen Export- oder Importvorgangs auf der Seite Import/Export der Google Cloud Console einsehen.
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
gcloud
Verwenden Sie den Befehl operations describe
, um den Status eines Export- oder Importvorgangs anzeigen zu lassen.
gcloud firestore operations describe [OPERATION_NAME]
Fertigstellungszeit schätzen
Eine Anfrage für den Status eines Vorgangs mit langer Ausführungszeit liefert die Messwerte workEstimated
und workCompleted
. Beide Messwerte werden als Anzahl der Byte und als Anzahl der Entitäten zurückgegeben:
workEstimated
weist die geschätzte Gesamtzahl der Byte und Dokumente aus, die ein Vorgang verarbeitet. Firestore lässt diesen Messwert möglicherweise aus, wenn keine Schätzung möglich ist.workCompleted
weist die Anzahl der bisher verarbeiteten Byte und Dokumente aus. Nachdem der Vorgang abgeschlossen ist, zeigt der Wert die Gesamtanzahl der tatsächlich verarbeiteten Byte und Dokumente an, die möglicherweise größer als der Wert vonworkEstimated
ist.
Teilen Sie workCompleted
durch workEstimated
, um eine grobe Schätzung des Fortschritts zu erhalten. Diese Schätzung ist möglicherweise ungenau, da sie von der verzögerten Statistikerfassung abhängt.
Vorgang abbrechen
Google Cloud Console
Sie können laufende Export- oder Importvorgänge auf der Seite Import/Export der Google Cloud Console abbrechen.
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
In der Tabelle Aktuelle Importe und Exporte enthalten aktuell ausgeführte Vorgänge die Schaltfläche Abbrechen in der Spalte Abgeschlossen. Klicken Sie auf die Schaltfläche Abbrechen, um den Vorgang zu beenden. Die Schaltfläche ändert sich in eine Abbrechen- und, sobald der Vorgang komplett ist, in eine Storniert-Nachricht.
gcloud
Verwenden Sie den Befehl operations cancel
, um einen laufenden Vorgang zu stoppen:
gcloud firestore operations cancel [OPERATION_NAME]
Durch das Abbrechen eines laufenden Vorgangs wird der Vorgang nicht rückgängig gemacht. Bei einem abgebrochenen Exportvorgang werden die bereits in Cloud Storage exportierten Dokumente beibehalten. Bei einem abgebrochenen Importvorgang werden die bereits an der Datenbank vorgenommenen Aktualisierungen beibehalten. Sie können einen unvollständigen Export nicht importieren.
Vorgang löschen
Verwenden Sie den Befehl gcloud firestore operations delete
, um einen Vorgang aus der Liste der letzten Vorgänge zu entfernen. Mit diesem Befehl werden keine Exportdateien aus Cloud Storage gelöscht.
gcloud firestore operations delete [OPERATION_NAME]
Abrechnung und Preise für Export- und Importvorgänge
Damit Sie den verwalteten Export- und Importdienst verwenden können, müssen Sie die Abrechnung für Ihr Google Cloud-Projekt aktivieren.
Für Export- und Importvorgänge werden die Lese- und Schreibvorgänge von Dokumenten zu den Preisen für Firestore berechnet. Bei Exportvorgängen wird pro exportiertem Dokument eine Leseoperation durchgeführt. Importvorgänge verursachen einen Schreibvorgang pro importiertem Dokument.
In Cloud Storage gespeicherte Ausgabedateien werden auf Ihre in Cloud Storage gespeicherten Daten angerechnet.
Die Kosten für Export- und Importvorgänge werden nicht auf das Ausgabenlimit angerechnet. Export- oder Importvorgänge werden erst nach Abschluss auf das Google Cloud-Budget angerechnet. Die während eines Export- oder Importvorgangs ausgeführten Lese- und Schreibvorgänge werden nach Abschluss des Vorgangs auf Ihr tägliches Kontingent angerechnet. Export- und Importvorgänge wirken sich nicht auf die im Abschnitt "Nutzung" der Konsole angezeigte Nutzung aus.
Preise für Export und Import aufrufen
Bei Export- und Importvorgängen wird das goog-firestoremanaged:exportimport
-Label auf in Rechnung gestellte Vorgänge angewendet. Auf der Seite der Cloud Billing-Berichte können Sie über dieses Label Kosten für Import- und Exportvorgänge aufrufen:
Nach BigQuery exportieren
Wenn Sie einen collection-ids
-Filter angegeben haben, können Sie Daten aus einem Firestore-Export in BigQuery laden. Weitere Informationen finden Sie unter Daten aus Firestore-Exporten laden.
BigQuery-Spaltenlimit
In BigQuery gilt ein Limit von 10.000 Spalten pro Tabelle. Firestore-Exportvorgänge generieren für jede Sammlungsgruppe ein BigQuery-Tabellenschema. In diesem Schema dient jeder eindeutige Feldname innerhalb einer Sammlungsgruppe als Schemaspalte.
Wenn das BigQuery-Schema einer Sammlungsgruppe mehr als 10.000 Spalten umfasst, wird beim Firestore-Exportvorgang versucht, die Spaltenbeschränkung zu beachten. Dazu werden die Map-Felder in Form von Byte behandelt. Wenn durch diese Umwandlung die Anzahl der Spalten 10.000 nicht übersteigt, können Sie die Daten in BigQuery laden, aber nicht die Unterfelder innerhalb der Map-Felder abfragen. Wenn die Anzahl der Spalten immer noch über 10.000 beträgt, erzeugt der Exportvorgang kein BigQuery-Schema für die Sammlungsgruppe und die Daten können nicht in BigQuery geladen werden.
Exportformat und Metadatendateien
Die Ausgabe eines verwalteten Exports verwendet das LevelDB-Logformat.
Metadatendateien
Beim Exportvorgang wird für jede von Ihnen angegebene Sammlungsgruppe eine Metadatendatei erstellt. Metadatendateien heißen in der Regel ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata
.
Die Metadatendateien sind Protokollpuffer und können mit dem Protokollcompiler protoc
decodiert werden.
Sie können beispielsweise eine Metadatendatei decodieren, um die Sammlungsgruppen zu bestimmen, die die Exportdateien enthalten:
protoc --decode_raw < export0.export_metadata
Migration des Dienst-Agents
Firestore verwendet einen Firestore-Dienst-Agent, um Import- und Exportvorgänge zu autorisieren, anstatt das App Engine-Dienstkonto zu verwenden. Der Dienst-Agent und das Dienstkonto verwenden die folgenden Namenskonventionen:
- Firestore-Dienst-Agent
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Bisher wurde in Firestore das App Engine-Standarddienstkonto anstelle des Firestore-Dienst-Agents verwendet. Wenn in Ihrer Datenbank weiterhin das App Engine-Dienstkonto zum Importieren oder Exportieren von Daten verwendet wird, empfehlen wir Ihnen, der Anleitung in diesem Abschnitt zu folgen, um zum Firestore-Dienst-Agent zu migrieren.
- App Engine-Dienstkonto
PROJECT_ID@appspot.gserviceaccount.com
Der Firestore-Dienst-Agent ist vorzuziehen, da er speziell für Firestore entwickelt wurde. Das App Engine-Dienstkonto wird von mehreren Diensten gemeinsam genutzt.
Autorisierungskonto ansehen
Auf der Seite Import/Export in der Google Cloud Console können Sie sehen, mit welchem Konto Ihre Import- und Exportvorgänge Anfragen autorisieren. Sie können auch prüfen, ob für Ihre Datenbank bereits der Firestore-Dienstagent verwendet wird.
-
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
- Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
-
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
- Das Autorisierungskonto finden Sie neben dem Label Import-/Exportjobs werden ausgeführt als.
Wenn in Ihrem Projekt kein Firestore-Dienst-Agent verwendet wird, können Sie auf folgende Weise zum Firestore-Dienst-Agent migrieren:
- Projekt migrieren, indem Sie die Cloud Storage-Bucket-Berechtigungen prüfen und aktualisieren (empfohlen)
- Fügen Sie eine organisationsweite Richtlinieneinschränkung hinzu, die sich auf alle Projekte in der Organisation auswirkt.
Die erste dieser Methoden ist vorzuziehen, da der Effekt auf ein einzelnes Firestore-Projekt beschränkt wird. Die zweite Methode wird nicht empfohlen, da dabei vorhandene Cloud Storage-Bucket-Berechtigungen nicht migriert werden. Sie bietet jedoch Sicherheitscompliance auf Organisationsebene.
Cloud Storage-Bucket-Berechtigungen prüfen und aktualisieren, um zu migrieren
Der Migrationsprozess umfasst zwei Schritte:
- Aktualisieren Sie die Berechtigungen für den Cloud Storage-Bucket. Weitere Informationen finden Sie im nächsten Abschnitt.
- Bestätigen Sie die Migration zum Firestore-Dienst-Agent.
Bucket-Berechtigungen für Dienst-Agents
Für Export- oder Importvorgänge, bei denen ein Cloud Storage-Bucket in einem anderen Projekt verwendet wird, müssen Sie dem Firestore-Dienst-Agent Berechtigungen für diesen Bucket erteilen. Bei Vorgängen, bei denen Daten in ein anderes Projekt verschoben werden, muss beispielsweise auf einen Bucket in diesem anderen Projekt zugegriffen werden. Andernfalls schlagen diese Vorgänge nach der Migration zum Firestore-Dienst-Agent fehl.
Für Import- und Export-Workflows, die im selben Projekt bleiben, sind keine Änderungen an den Berechtigungen erforderlich. Der Firestore-Dienst-Agent kann standardmäßig auf Buckets im selben Projekt zugreifen.
Aktualisieren Sie die Berechtigungen für Cloud Storage-Buckets aus anderen Projekten, um dem Dienst-Agenten service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Zugriff zu gewähren. Weisen Sie dem Dienst-Agent die Rolle Firestore Service Agent
zu.
Die Rolle Firestore Service Agent
gewährt Lese- und Schreibberechtigungen für einen Cloud Storage-Bucket. Wenn Sie nur Lese- oder Schreibberechtigungen gewähren möchten, verwenden Sie eine benutzerdefinierte Rolle.
Anhand des im folgenden Abschnitt beschriebenen Migrationsprozesses können Sie Cloud Storage-Buckets ermitteln, für die möglicherweise Berechtigungen aktualisiert werden müssen.
Projekt zum Firestore-Dienst-Agent migrieren
Führen Sie die folgenden Schritte aus, um vom App Engine-Dienstkonto zum Firestore-Dienst-Agenten zu migrieren. Die Migration kann nicht rückgängig gemacht werden.
-
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
- Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
-
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
-
Wenn Ihr Projekt noch nicht zum Firestore-Dienstagenten migriert wurde, wird ein Banner mit einer Beschreibung der Migration und die Schaltfläche Bucket-Status prüfen angezeigt. Im nächsten Schritt erfahren Sie, wie Sie potenzielle Berechtigungsfehler erkennen und beheben.
Klicken Sie auf Bucket-Status prüfen.
Ein Menü mit der Option zum Abschließen der Migration und einer Liste der Cloud Storage-Buckets wird angezeigt. Es kann einige Minuten dauern, bis die Liste vollständig geladen ist.
Diese Liste enthält Buckets, die vor Kurzem für Import- und Exportvorgänge verwendet wurden, dem Firestore-Dienst-Agent aber derzeit keine Lese- und Schreibberechtigungen gewähren.
- Notieren Sie sich den Namen des Hauptkontos des Firestore-Dienst-Agents Ihres Projekts. Der Name des Dienst-Agents wird unter dem Label Dienst-Agent, dem Zugriff gewährt werden soll angezeigt.
-
Führen Sie für jeden Bucket in der Liste, den Sie für zukünftige Import- oder Exportvorgänge verwenden möchten, die folgenden Schritte aus:
-
Klicken Sie in der Tabellenzeile dieses Buckets auf Korrigieren. Daraufhin wird die Seite mit den Berechtigungen für diesen Bucket in einem neuen Tab geöffnet.
- Klicken Sie auf Hinzufügen.
- Geben Sie im Feld Neue Hauptkonten den Namen Ihres Firestore-Dienst-Agents ein.
- Wählen Sie im Feld Rolle auswählen die Option Service-Agents > Firestore-Dienst-Agent aus.
- Klicken Sie auf Speichern.
- Kehren Sie zum Tab mit der Seite „Firestore-Import/Export“ zurück.
- Wiederholen Sie diese Schritte für die anderen Bucket in der Liste. Sehen Sie sich alle Seiten der Liste an.
-
-
Klicken Sie auf Zum Firestore-Dienst-Agent migrieren. Wenn es noch Bucket mit fehlgeschlagenen Berechtigungsüberprüfungen gibt, müssen Sie die Migration bestätigen, indem Sie auf Migrieren klicken.
Sie werden per Benachrichtigung darüber informiert, wenn die Migration abgeschlossen ist. Die Migration kann nicht rückgängig gemacht werden.
Status der Migration abrufen
So prüfen Sie den Migrationsstatus Ihres Projekts:
-
Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.
- Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
-
Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
-
Suchen Sie neben dem Label Import-/Exportjobs werden ausgeführt als nach dem Hauptbenutzer.
Wenn das Hauptkonto
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
ist, wurde Ihr Projekt bereits zum Firestore-Dienstagenten migriert. Die Migration kann nicht rückgängig gemacht werden.Wenn das Projekt noch nicht migriert wurde, wird oben auf der Seite ein Banner mit der Schaltfläche Bucket-Status prüfen angezeigt. Weitere Informationen finden Sie unter Zum Firestore-Dienst-Agent migrieren.
Organisationsweite Richtlinieneinschränkung hinzufügen
-
Legen Sie in der Richtlinie Ihrer Organisation die folgende Einschränkung fest:
Firestore-Dienst-Agent für Import/Export erforderlich (
firestore.requireP4SAforImportExport
).Bei dieser Einschränkung muss bei Import- und Exportvorgängen der Firestore-Dienst-Agent verwendet werden, um Anfragen zu autorisieren. Weitere Informationen zum Festlegen dieser Einschränkung finden Sie unter Organisationsrichtlinien erstellen und verwalten .
Durch die Anwendung dieser Einschränkung der Organisationsrichtlinie werden dem Firestore-Dienst-Agent nicht automatisch die erforderlichen Cloud Storage-Bucket-Berechtigungen gewährt.
Wenn die Einschränkung Berechtigungsfehler für Import- oder Export-Workflows verursacht, können Sie sie deaktivieren, um wieder das Standarddienstkonto zu verwenden. Nachdem Sie die Berechtigungen für Cloud Storage-Bucket geprüft und aktualisiert haben, können Sie die Einschränkung wieder aktivieren.