Auf dieser Seite wird beschrieben, wie Sie Exporte Ihrer Firestore-Daten im Datastore-Modus planen. Um Exporte nach einem Zeitplan auszuführen, empfehlen wir die Verwendung von Cloud Run-Funktionen und Cloud Scheduler. Erstellen Sie eine Cloud Functions-Funktion, die Exporte initiiert, und führen Sie Ihre Funktion mit Cloud Scheduler aus.
Vorbereitung
Bevor Sie Datenexporte planen:
- Aktivieren Sie die Abrechnung für Ihr Google Cloud-Projekt. Nur Google Cloud-Projekte mit aktivierter Abrechnung können die Export- und Importfunktion verwenden.
- Erstellen Sie einen Cloud Storage-Bucket an einem Ort in der Nähe des Standorts Ihrer Datenbank im Datastore-Modus. Für Exportvorgänge ist ein Cloud Storage-Ziel-Bucket erforderlich. Einen Bucket mit der Funktion "Anfragesteller bezahlt" können Sie nicht für Exportvorgänge verwenden.
Cloud Functions-Funktion und Cloud Scheduler-Job erstellen
Erstellen Sie nach der folgenden Anleitung eine Cloud Functions-Funktion, die Datenexporte initiiert, und einen Cloud Scheduler-Job, um diese Funktion aufzurufen:
Cloud Functions-Funktion datastore_export
erstellen
-
Rufen Sie in der Google Cloud Console die Seite Cloud Functions auf:
- Klicken Sie auf Funktion erstellen.
- Geben Sie einen Funktionsnamen wie
datastoreExport
ein. - Wählen Sie unter Trigger die Option Cloud Pub/Sub aus. Cloud Scheduler ruft Ihre Funktion über Ihr Pub/Sub-Thema auf.
- Wählen Sie im Feld Thema die Option Thema erstellen aus. Geben Sie für das Pub/Sub-Thema einen Namen ein, z. B.
startDatastoreExport
. Notieren Sie den Namen des Themas, da Sie ihn zum Erstellen Ihres Cloud Scheduler-Jobs benötigen. - Wählen Sie unter Quellcode Inline-Editor aus.
- Wählen Sie im Drop-down-Menü Laufzeit die Option Python 3.7 aus.
- Geben Sie für
main.py
den folgenden Code ein: - Fügen Sie in
requirements.txt
die folgende Abhängigkeit hinzu: - Geben Sie unter Einstiegspunkt
datastore_export
ein, den Namen der Funktion inmain.py
. - Klicken Sie auf Bereitstellen, um die Cloud Functions-Funktion bereitzustellen.
Zugriffsberechtigungen konfigurieren
Weisen Sie der Cloud Functions-Funktion die Berechtigung zu, Exportvorgänge zu starten und in Ihren GCS-Bucket zu schreiben.
Diese Cloud Functions-Funktion verwendet das Standarddienstkonto Ihres Projekts, um sich zu authentifizieren und Exportvorgänge zu autorisieren. Wenn Sie ein Projekt erstellen, wird ein Standarddienstkonto mit folgendem Namen erstellt:
project_id@appspot.gserviceaccount.com
Dieses Dienstkonto benötigt die Berechtigung, Exportvorgänge zu starten und in Ihren Cloud Storage-Bucket zu schreiben. Weisen Sie dem Standarddienstkonto die folgenden IAM-Rollen für diese Berechtigungen zu:
Cloud Datastore Import Export Admin
- Rolle
Storage Object User
für den Bucket
Sie können diese Rollen mit der Google Cloud CLI zuweisen. Auf dieses Tool können Sie in der Google Cloud Console über Cloud Shell zugreifen:
Cloud Shell starten
-
Weisen Sie die Rolle Cloud Datastore Import Export Admin zu. Ersetzen Sie project_id und führen Sie folgenden Befehl aus:
gcloud projects add-iam-policy-binding project_id \ --member serviceAccount:project_id@appspot.gserviceaccount.com \ --role roles/datastore.importExportAdmin
-
Weisen Sie Ihrem Bucket die Rolle Storage-Objekt-Nutzer zu. Ersetzen Sie bucket_name sowie project_id und führen Sie folgenden Befehl aus:
gcloud storage buckets add-iam-policy-binding gs://bucket_name \ --member=serviceAccount:project_id@appspot.gserviceaccount.com \ --role=roles/storage.objectUser
Cloud Scheduler-Job erstellen
Erstellen Sie als Nächstes einen Cloud Scheduler-Job, der die Cloud Functions-Funktion datastore_export
aufruft:
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf:
Klicken Sie auf Job erstellen.
Geben Sie einen Namen für den Job ein, z. B.
scheduledDatastoreExport
.Geben Sie eine Häufigkeit im unix-cron-Format ein.
Wählen Sie eine Zeitzone aus.
Wählen Sie unter Ziel Pub/Sub aus. Geben Sie im Feld Thema den Namen des Pub/Sub-Themas ein, das Sie zusammen mit Ihrer Cloud Functions-Funktion definiert haben (
startDatastoreExport
im obigen Beispiel).Geben Sie im Feld Nutzlast ein JSON-Objekt ein, um den Exportvorgang zu konfigurieren. Die Cloud Functions-Funktion
datastore_export
erfordert einenbucket
-Wert. Sie können optional Werte fürkinds
odernamespaceIDs
angeben, um einen Entitätsfilter festzulegen. Beispiel:Alle Entitäten exportieren
{ "bucket": "gs://bucket_name" }
Mit Entitätsfilter exportieren
Entitäten der Art
User
oderTask
aus allen Namespaces exportieren:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"] }
Entitäten der Art
User
oderTask
aus dem Standard- und demTesters
-Namespace exportieren; der Standard-Namespace wird mit einem leeren String (""
) angegeben:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"], "namespaceIds": ["", "Testers"] }
Entitäten aller Arten aus dem Standard- und dem
Testers
-Namespace exportieren; der Standard-Namespace wird mit einem leeren String (""
) angegeben:{ "bucket": "gs://bucket_name", "namespaceIds": ["", "Testers"] }
Dabei steht
bucket_name
für den Namen Ihres Cloud Storage-Buckets.Klicken Sie auf Erstellen.
Geplante Exporte testen
Testen Sie Ihre Cloud Functions-Funktion und den Cloud Scheduler-Job. Dazu führen Sie den Cloud Scheduler-Job in der Google Cloud Console auf der Seite Cloud Scheduler aus. Bei Erfolg wird ein echter Exportvorgang initiiert.
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf.
Zu Cloud SchedulerKlicken Sie in der Zeile für Ihren neuen Cloud Scheduler-Job auf Jetzt ausführen.
Klicken Sie nach einigen Sekunden auf Aktualisieren. Der Cloud Scheduler-Job sollte nun den Wert in der Ergebnisspalte auf Erfolgreich setzen und Zuletzt ausgeführt auf die aktuelle Zeit aktualisieren.
Die Seite "Cloud Scheduler" bestätigt nur, dass der Job eine Nachricht an das Pub/Sub-Thema gesendet hat. Ob Ihre Exportanfrage erfolgreich war, können Sie in den Logs Ihrer Cloud Functions-Funktion.
Cloud Functions-Logs aufrufen
Auf der Seite Log-Explorer in der Google Cloud Console können Sie prüfen, ob Cloud Function einen Exportvorgang erfolgreich gestartet hat.
Das Log für die Cloud Functions-Funktion meldet Fehler und erfolgreich initiierte Exporte.
Exportfortschritt anzeigen
Mit dem Befehl gcloud datastore operations list
können Sie den Fortschritt Ihrer Exportvorgänge anzeigen lassen. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit auflisten.
Nach Abschluss eines Exportvorgangs können Sie die Ausgabedateien in Ihrem Cloud Storage-Bucket ansehen. Der verwaltete Exportdienst organisiert die Exportvorgänge anhand eines Zeitstempels.