Entitäten exportieren und importieren

Auf dieser Seite wird beschrieben, wie Entitäten in Firestore im Datastore-Modus mithilfe des verwalteten Export- und Importdienstes exportiert und importiert werden. Der verwaltete Export- und Importdienst ist über die Google Cloud Console, die Google Cloud CLI und die Datastore Admin API (REST, RPC) verfügbar.

Mit dem verwalteten Export- und Importdienst können Sie versehentlich gelöschte Daten wiederherstellen und Daten für die Offlineverarbeitung exportieren. Sie können alle Entitäten oder nur bestimmte Arten von Entitäten exportieren. Ebenso können Sie alle Daten eines Exports oder nur bestimmte Arten importieren. Berücksichtigen Sie bei der Verwendung des verwalteten Export- und Importdiensts Folgendes:

  • Der Exportdienst verwendet Eventual Consistency-Lesevorgänge. Sie können nicht davon ausgehen, dass ein Export zu einem bestimmten Zeitpunkt stattfindet. Der Export kann Entitäten einbeziehen, die nach dem Beginn des Exports geschrieben wurden, und Entitäten ausschließen, die vor dem Beginn des Exports geschrieben wurden.

  • Ein Export enthält keine Indexe. Beim Importieren werden die erforderlichen Indexe automatisch entsprechend den aktuellen Indexdefinitionen Ihrer Datenbank neu erstellt. Entitätsspezifische Attributwert-Indexeinstellungen werden exportiert und während des Imports berücksichtigt.

  • Beim Import werden Entitäten keine neuen IDs zugewiesen. Importe verwenden die zum Zeitpunkt des Exports vorhandenen IDs und überschreiben alle vorhandenen Entitäten mit derselben ID. Während eines Imports werden die IDs für den Zeitraum reserviert, in dem die Entitäten importiert werden. Durch diese Funktion werden ID-Kollisionen mit neuen Entitäten verhindert, wenn Schreibvorgänge während der Ausführung eines Imports aktiviert sind.

  • Wenn eine Entität in Ihrer Datenbank nicht von einem Import betroffen ist, verbleibt sie nach dem Import in der Datenbank.

  • Aus einer Datenbank im Datastore-Modus exportierte Daten können in eine andere Datenbank im Datastore-Modus importiert werden, auch wenn sich diese in einem anderen Projekt befindet.

  • Im verwalteten Export- und Importdienst ist die Anzahl gleichzeitiger Exporte und Importe auf 50 begrenzt. Je Projekt sind bis zu 20 Export- und Importanfragen pro Minute möglich. Für jede Anfrage begrenzt der Dienst die Anzahl der Kombinationen von Entitätsfiltern auf 100.

  • Die Ausgabe eines verwalteten Exports verwendet das LevelDB-Logformat.

  • Sie müssen beim Exportieren einen Entitätsfilter angeben, um nur einen Teil der Entitäten zu importieren oder Daten in BigQuery zu importieren.

  • Der Dateiname .overall_export_metadata 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, behalten Sie PARENT_FOLDER_NAME, den Inhalt der Unterordner und den Dateinamen .overall_export_metadata bei.

Hinweise

Bevor Sie den verwalteten Export- und Importdienst verwenden können:

  1. Aktivieren Sie die Abrechnung für Ihr Google Cloud-Projekt. Die Export- und Importfeatures können nur für Google Cloud-Projekte mit aktivierter Abrechnung verwendet werden.

  2. Erstellen Sie einen Cloud Storage-Bucket am selben Speicherort, an dem sich Ihre Firestore-Datenbank im Datastore-Modus befindet. Einen Bucket mit der Funktion "Anfragesteller bezahlt" können Sie nicht für Export- und Importvorgänge verwenden.

  3. Wenn Sie Daten exportieren, weisen Sie Ihrem Nutzerkonto eine IAM-Rolle zu, die die Berechtigung datastore.databases.export gewährt. Wenn Sie Daten importieren, weisen Sie eine Rolle mit der Berechtigung datastore.databases.import zu. Die Rolle Datastore Import Export Admin beispielsweise gewährt beide Berechtigungen.

  4. Wenn sich der Cloud Storage-Bucket in einem anderen Projekt befindet, gewähren Sie dem Firestore-Dienst-Agent Zugriff auf den Bucket.

gcloud für das Projekt einrichten

Wenn Sie Ihre Import- und Exportvorgänge mit gcloud starten möchten, richten Sie gcloud ein und stellen Sie auf eine der folgenden Arten eine Verbindung zu Ihrem Projekt her:

Berechtigungen

Zum Ausführen von Export- und Importvorgängen benötigen Ihr Nutzerkonto und der Datastore-Modus-Dienst-Agent Ihres Projekts die folgenden Berechtigungen von Identity and Access Management.

Nutzerkontoberechtigungen

Zum Starten des Vorgangs müssen das Nutzerkonto oder Dienstkonto die IAM-Berechtigungen datastore.databases.export und datastore.databases.import haben. Wenn Sie der Projektinhaber sind, hat Ihr Konto bereits die erforderlichen Berechtigungen. Andernfalls gewähren die folgenden IAM-Rollen die erforderlichen Berechtigungen:

  • Datastore-Inhaber
  • Import-Export-Administrator für Datastore

Sie können diese Berechtigungen auch mit einer benutzerdefinierten Rolle zuweisen.

Ein Projektinhaber kann eine dieser Rollen durch Ausführen der Schritte unter Zugriffsrechte erteilen zuweisen.

Berechtigungen des Dienst-Agents

Export- und Importvorgänge verwenden einen Firestore-Dienst-Agent, um Cloud Storage-Vorgänge zu autorisieren. Der Firestore-Dienst-Agent 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 Dienst-Agent Rollen zuweisen

Sie können das gsutil-Befehlszeilentool verwenden, um eine der folgenden Rollen zuzuweisen. Führen Sie beispielsweise folgenden Befehl aus, um dem Firestore-Dienst-Agent die Rolle „Storage Admin“ 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 die Projektnummer, mit der der Firestore-Dienst-Agent benannt wird. Informationen zum Anzeigen des Dienst-Agents-Namens finden Sie unter Name des Dienst-Agents ansehen.

Alternativ können Sie diese Rolle über die Google Cloud Console zuweisen.

Name des Dienst-Agents ansehen

Sie können das Konto, das von Ihren Import- und Exportvorgängen zum Autorisieren von Anfragen verwendet wird, auf der Seite Import/Export in der Google Cloud Console ansehen. Sie können sich auch ansehen, ob Ihre Datenbank den Firestore-Dienst-Agent oder das Legacy-App Engine-Dienstkonto verwendet.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Sehen Sie sich das Autorisierungskonto neben dem Label Import-/Exportjobs ausgeführt als an.

Exportvorgänge

Ändern Sie bei Exportvorgängen mit einem Bucket in einem anderen Projekt die Berechtigungen des Buckets, um dem Dienst-Agent im Datastore-Modus des Projekts, das Ihre Datenbank im Datastore-Modus enthält, eine der folgenden IAM-Rollen zuzuweisen:

  • Storage-Administrator
  • Inhaber (einfache Rolle)

Sie können auch eine benutzerdefinierte IAM-Rolle mit etwas anderen Berechtigungen als in den oben aufgeführten Rollen erstellen:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.delete
  • storage.objects.list

Importvorgänge

Ändern Sie bei Importvorgängen mit einem Cloud Storage-Bucket in einem anderen Projekt die Berechtigungen des Buckets, um dem Dienst-Agent im Datastore-Modus des Projekts, das Ihre Datenbank im Datastore-Modus enthält, eine der folgenden Cloud Storage-Rollen zuzuweisen:

  • Storage-Administrator
  • Sowohl Storage-Objekt-Betrachter als auch Leser alter Storage-Buckets

Mit den folgenden Berechtigungen können Sie auch eine benutzerdefinierte IAM-Rolle erstellen:

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

Verwaltete Export- und Importvorgänge starten

In diesem Abschnitt wird beschrieben, wie ein verwalteter Export- oder Importvorgang gestartet wird.

Alle Entitäten exportieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  1. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.
  2. Klicken Sie auf Exportieren.
  3. Setzen Sie das Feld Namespace auf All Namespaces und das Feld Art auf All Kinds.
  4. Geben Sie unter Ziel den Namen Ihres Cloud Storage-Buckets ein.
  5. Klicken Sie auf Exportieren.

Die Console kehrt zur Seite Import/Export zurück. In einer Benachrichtigung wird der Erfolg oder Misserfolg Ihrer verwalteten Exportanfrage gemeldet.

gcloud

Verwenden Sie den Befehl gcloud firestore export, um alle Entitäten in Ihrer Datenbank zu exportieren.

 gcloud firestore export gs://bucket-name --async --database=DATABASE

Dabei ist bucket-name der Name Ihres Cloud Storage-Buckets und ein optionales Präfix, z. B. bucket-name/datastore-exports/export-name. Sie können dasselbe Präfix nicht für einen anderen Exportvorgang verwenden. Wenn Sie kein Dateipräfix angeben, erstellt der verwaltete Exportdienst ein Präfix anhand der aktuellen Uhrzeit.

Verwenden Sie das Flag [--async][async-flag], um zu verhindern, dass gcloud auf den Abschluss des Vorgangs wartet. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um nicht mehr auf einen Vorgang zu warten. Dies bricht den Vorgang aber nicht ab.

Legen Sie das Flag --database auf den Namen der Datenbank fest, aus der Sie die Entitäten exportieren möchten. Verwenden Sie --database='(default)' für die Standarddatenbank.

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.
  • bucket-name: Name Ihres Cloud Storage-Buckets

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

JSON-Text der Anfrage:

{
  "outputUrlPrefix": "gs://bucket-name",
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T18:42:26.591949Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T18:42:26_85726"
  }
}
Die Antwort ist ein Vorgang mit langer Ausführungszeit, den Sie auf Beendigung prüfen können.

Bestimmte Arten oder Namespaces exportieren

Um eine bestimmte Teilmenge von Arten und/oder Namespaces zu exportieren, setzen Sie einen Entitätsfilter mit Werten für Arten und Namespace-IDs. Jede Anfrage ist auf 100 Kombinationen von Entitätsfiltern beschränkt, wobei jede Kombination aus gefiltertem Art und Namespace als separater Filter auf dieses Limit angerechnet wird.

Console

In der Console können Sie entweder alle Arten oder eine bestimmte Art auswählen. Ebenso können Sie alle Namespaces oder einen bestimmten Namespace auswählen.

Um eine Liste der zu exportierenden Namespaces und Arten anzugeben, verwenden Sie gcloud.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Klicken Sie auf Exportieren.

  5. Stellen Sie das Feld Namespace auf All Namespaces oder auf den Namen eines Ihrer Namespaces ein.

  6. Stellen Sie das Feld Art auf All Kinds oder auf den Namen einer Art ein.

  7. Geben Sie unter Ziel den Namen Ihres Cloud Storage-Buckets ein.

  8. Klicken Sie auf Exportieren.

Die Console kehrt zur Seite Import/Export zurück. In einer Benachrichtigung wird der Erfolg oder Misserfolg Ihrer verwalteten Exportanfrage gemeldet.

gcloud

  gcloud firestore export --collection-ids="KIND1,KIND2" \
  --namespaces="(default),NAMESPACE2" \
  gs://bucket-name \
  --async \
  --database=DATABASE

Dabei ist bucket-name der Name Ihres Cloud Storage-Buckets und ein optionales Präfix, z. B. bucket-name/datastore-exports/export-name. Sie können dasselbe Präfix nicht für einen anderen Exportvorgang verwenden. Wenn Sie kein Dateipräfix angeben, erstellt der verwaltete Exportdienst ein Präfix anhand der aktuellen Uhrzeit.

Verwenden Sie das Flag [--async][async-flag], um zu verhindern, dass gcloud auf den Abschluss des Vorgangs wartet. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um nicht mehr auf einen Vorgang zu warten. Dies bricht den Vorgang aber nicht ab.

Legen Sie das Flag --database auf den Namen der Datenbank fest, aus der Sie bestimmte Arten oder Namespaces exportieren möchten. Verwenden Sie --database='(default)' für die Standarddatenbank.

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • kind: Entitätstyp
  • namespace: Namespace-ID (verwenden Sie "" für die Standard-Namespace-ID)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

JSON-Text der Anfrage:

{
  "outputUrlPrefix": "gs://bucket-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:17:36.232704Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T21:17:36_82974"
  }
}
Die Antwort ist ein Vorgang mit langer Ausführungszeit, den Sie auf Beendigung prüfen können.

Metadatendateien

Beim Exportvorgang wird für jede angegebene Kombination von Namespace und Art eine Metadatendatei erstellt. Metadatendateien heißen in der Regel NAMESPACE_NAME_KIND_NAME.export_metadata. Wenn jedoch der Name eines Namespace oder einer Art einen ungültigen Cloud Storage-Objektnamen ergeben würde, erhält die Datei den Namen export[NUM].export_metadata.

Die Metadatendateien sind Protokollpuffer und können mit dem Protokollcompiler protoc decodiert werden. Sie können beispielsweise eine Metadatendatei decodieren, um den Namespace und die Art der Exportdateien zu bestimmen:

protoc --decode_raw < export0.export_metadata

Alle Entitäten importieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Klicken Sie auf Import (Importieren).

  5. Klicken Sie im Feld File auf Durchsuchen und wählen Sie eine .overall_export_metadata-Datei aus.

    Achten Sie darauf, dass die Datei .overall_export_metadata nicht vom Standardspeicherort verschoben wird.

  6. Setzen Sie das Feld Namespace auf All Namespaces und das Feld Art auf All Kinds.

  7. Klicken Sie auf Importieren.

Die Console kehrt zur Seite Import/Export zurück. In einer Benachrichtigung wird der Erfolg oder Misserfolg Ihrer verwalteten Importanfrage gemeldet.

gcloud

Verwenden Sie den Befehl gcloud Firestore import, um alle Entitäten zu importieren, die zuvor mit dem verwalteten Exportdienst exportiert wurden.

gcloud firestore import gs://bucket-name/file-path/file-name.overall_export_metadata \
--async \
--database=DATABASE

Dabei ist bucket-name/file-path/file-name der Pfad zur Datei overall_export_metadata in Ihrem Cloud Storage-Bucket.

Verwenden Sie das Flag [--async][async-flag], um zu verhindern, dass gcloud auf den Abschluss des Vorgangs wartet. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um nicht mehr auf einen Vorgang zu warten. Dies bricht den Vorgang aber nicht ab.

Legen Sie das Flag --database auf den Namen der Datenbank fest, in die Sie alle Entitäten importieren möchten. Verwenden Sie --database='(default)' für die Standarddatenbank.

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • object-name: Name Ihres Cloud Storage-Objekts (Beispiel: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

JSON-Text der Anfrage:

{
  "inputUrl": "gs://bucket-name/object-name",
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:25:02.863621Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "inputUrl": "gs://bucket-name/2019-09-18T18:42:26_85726/2019-09-18T18:42:26_85726.overall_export_metadata"
  }
}
Die Antwort ist ein Vorgang mit langer Ausführungszeit, den Sie auf Beendigung prüfen können.

overall_export_metadata-Datei finden

Sie können den für den Importspeicherort zu verwendenden Wert mithilfe des Cloud Storage-Browsers in der Google Cloud Console ermitteln:

Cloud Storage-Browser öffnen

Sie können auch abgeschlossene Vorgänge auflisten und beschreiben. Im Feld outputURL wird der Name der Datei overall_export_metadata angezeigt:

"outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata",

Bestimmte Arten oder Namespaces importieren

Um eine bestimmte Teilmenge von Arten und/oder Namespaces zu importieren, setzen Sie einen Entitätsfilter mit Werten für Arten und Namespace-IDs.

Arten und Namespaces lassen sich nur dann angeben, wenn die Exportdateien mit einem Entitätsfilter erstellt wurden. Der Import einer Teilmenge von Arten und Namespaces aus einem Export aller Entitäten wird nicht unterstützt.

Console

In der Console können Sie entweder alle Arten oder eine bestimmte Art auswählen. Ebenso können Sie alle Namespaces oder einen bestimmten Namespace auswählen.

Um eine Liste der zu importierenden Namespaces und Arten anzugeben, verwenden Sie gcloud.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Klicken Sie auf Import (Importieren).

  5. Klicken Sie im Feld File auf Durchsuchen und wählen Sie eine .overall_export_metadata-Datei aus.

    Importieren Sie die Datei .overall_export_metadata und keine .export_metadata-Datei.

  6. Setzen Sie das Feld Namespace auf All Namespaces oder auf einen bestimmten Namespace.

  7. Setzen Sie das Feld Art auf All Kinds oder auf eine bestimmte Art.

  8. Klicken Sie auf Importieren.

Die Console kehrt zur Seite Import/Export zurück. In einer Benachrichtigung wird der Erfolg oder Misserfolg Ihrer verwalteten Importanfrage gemeldet.

gcloud

  gcloud firestore import --collection-ids="KIND1,KIND2" \
  --namespaces="(default),NAMESPACE2" \
  gs://bucket-name/file-path/file-nameoverall_export_metadata \
  --async \
  --database=DATABASE

Dabei ist bucket-name/file-path/file-name der Pfad zur Datei overall_export_metadata in Ihrem Cloud Storage-Bucket.

Verwenden Sie das Flag [--async][async-flag], um zu verhindern, dass gcloud auf den Abschluss des Vorgangs wartet. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um nicht mehr auf einen Vorgang zu warten. Dies bricht den Vorgang aber nicht ab.

Legen Sie das Flag --database auf den Namen der Datenbank fest, in die Sie die bestimmten Arten oder Namespaces importieren möchten. Verwenden Sie --database='(default)' für die Standarddatenbank.

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • object-name: Name Ihres Cloud Storage-Objekts (Beispiel: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata)
  • kind: Entitätstyp
  • namespace: Namespace-ID (verwenden Sie "" für die Standard-Namespace-ID)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

JSON-Text der Anfrage:

{
  "inputUrl": "gs://bucket-name/object-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:51:02.830608Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "inputUrl": "gs://bucket-name/2019-09-18T21:49:25_96833/2019-09-18T21:49:25_96833.overall_export_metadata"
  }
}
Die Antwort ist ein Vorgang mit langer Ausführungszeit, den Sie auf Beendigung prüfen können.

Aus PITR-Daten exportieren und importieren

Mit dem Befehl gcloud firestore export können Sie die Datenbank aus PITR-Daten nach Cloud Storage exportieren. Sie können PITR-Daten exportieren, bei denen der Zeitstempel ein Zeitstempel für eine ganze Minute innerhalb der letzten sieben Tage ist, aber nicht vor dem 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 Exports aller Entitäten und des Exports bestimmter Arten oder Namespaces.

  1. Exportieren Sie die Datenbank. Geben Sie dabei für den Parameter snapshot-time den erforderlichen Zeitstempel für die Wiederherstellung 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: ein PITR-Zeitstempel im Minutentakt, z. B. 2023-05-26T10:20:00.00Z.

    [Der Export einer bestimmten Teilmenge von Arten und/oder Namespaces mit einem Entitätsfilter][export-kind] wird ebenfalls unterstützt.

    Beachten Sie die folgenden Punkte, bevor Sie PITR-Daten exportieren:

    • Geben Sie den Zeitstempel im RFC 3339-Format an. Beispiel: 2020-09-01T23:59:30.234233Z.
    • Achte darauf, dass der angegebene Zeitstempel ein ganzer Minuten-Zeitstempel innerhalb der letzten sieben Tage ist, aber nicht vor dem earliestVersionTime liegt. Wenn zum angegebenen Zeitstempel keine Daten mehr vorhanden sind, erhalten Sie eine Fehlermeldung.
    • Ein fehlgeschlagener PITR-Export wird Ihnen nicht in Rechnung gestellt.
  2. In eine Datenbank importieren.

    Führen Sie die Schritte unter Alle Entitäten importieren aus, um die exportierte Datenbank zu importieren. Wenn eine Entität bereits in Ihrer Datenbank vorhanden ist, wird sie überschrieben. [Das Importieren einer bestimmten Teilmenge von Arten und/oder Namespaces mit einem Entitätsfilter][import-kind] wird ebenfalls unterstützt.

Transformationen importieren

Beachten Sie beim Importieren von Entitäten aus einem anderen Projekt, dass Entitätsschlüssel die Projekt-ID enthalten. Ein Importvorgang aktualisiert Entitätsschlüssel und Schlüsselreferenzattribute in den Importdaten mit der Projekt-ID des Zielprojekts. Wenn durch diese Aktualisierung die Entitätsgrößen erhöht werden, kann es bei Importvorgängen zu Fehlermeldungen wie "Entität ist zu groß" oder "Indexeinträge zu groß" kommen.

Durch den Import in ein Zielprojekt mit einer kürzeren Projekt-ID können Sie diese Fehler vermeiden. Dies wirkt sich nicht auf Importvorgänge mit Daten aus demselben Projekt aus.

Umgang mit lang andauernden Vorgängen

Verwaltete Import- und Exportvorgänge sind lang andauernde Vorgänge. Diese Methodenaufrufe können sehr viel Zeit in Anspruch nehmen.

Nachdem Sie einen Export- oder Importvorgang gestartet haben, weist der Datastore-Modus dem Vorgang einen eindeutigen Namen zu. Sie können den Vorgangsnamen verwenden, um den Vorgang zu löschen, abzubrechen oder den Status zu prüfen.

Vorgangsnamen haben das Präfix projects/[PROJECT_ID]/databases/(default)/operations/, zum Beispiel:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Wenn Sie für gcloud-Befehle einen Vorgangsnamen angeben, können Sie das Präfix weglassen.

Lang andauernde Vorgänge auflisten

Sie können laufende und kürzlich abgeschlossene Vorgänge auf folgende Weise aufrufen. Die Vorgänge sind nach Abschluss einige Tage lang in der Liste enthalten:

Console

Auf der Seite Import/Export der Google Cloud Console können Sie eine Liste der lang andauernden Vorgänge ansehen.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

gcloud

Verwenden Sie zum Auflisten von Vorgängen mit langer Ausführungszeit den Befehl gcloud datastore operations list:

gcloud datastore operations list

Beispiel: Ein kürzlich abgeschlossener Exportvorgang enthält die folgenden Informationen:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        "common": {
          "startTime": "2017-12-05T23:01:39.583780Z",
          "endTime": "2017-12-05T23:54:58.474750Z",
          "operationType": "EXPORT_ENTITIES"
        },
        "progressEntities": {
          "workCompleted": "21933027",
          "workEstimated": "21898182"
        },
        "progressBytes": {
          "workCompleted": "12421451292",
          "workEstimated": "9759724245"
        },
        "entityFilter": {
          "namespaceIds": [
            ""
          ]
        },
        "outputUrlPrefix": "gs://bucket-name"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
        "outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata"
      }
    }
  ]
}

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Weitere Informationen zur Antwort finden Sie weiter unten.

Beispiel: Ein kürzlich abgeschlossener Exportvorgang enthält die folgenden Informationen:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        "common": {
          "startTime": "2017-12-05T23:01:39.583780Z",
          "endTime": "2017-12-05T23:54:58.474750Z",
          "operationType": "EXPORT_ENTITIES"
        },
        "progressEntities": {
          "workCompleted": "21933027",
          "workEstimated": "21898182"
        },
        "progressBytes": {
          "workCompleted": "12421451292",
          "workEstimated": "9759724245"
        },
        "entityFilter": {
          "namespaceIds": [
            ""
          ]
        },
        "outputUrlPrefix": "gs://bucket-name"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
        "outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata"
      }
    }
  ]
}

Vorgangsstatus prüfen

So zeigen Sie den Status eines lang andauernden Vorgangs an:

Console

Auf der Seite Import/Export der Google Cloud Console finden Sie eine Liste der letzten Export- und Importvorgänge.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

gcloud

Verwenden Sie den Befehl operations describe, um den Status eines lang andauernden Vorgangs anzuzeigen.

gcloud datastore operations describe operation-name

rest

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Ihre Projekt-ID.
  • operation-name: Der Name des Vorgangs

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations/operation-name

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/ASA3ODAwMzQxNjIyChp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKLRI",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-10-08T20:07:28.105236Z",
      "endTime": "2019-10-08T20:07:36.310653Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "SUCCESSFUL"
    },
    "progressEntities": {
      "workCompleted": "21",
      "workEstimated": "21"
    },
    "progressBytes": {
      "workCompleted": "2272",
      "workEstimated": "2065"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-10-08T20:07:28_28481"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
    "outputUrl": "gs://bucket-name/2019-10-08T20:07:28_28481/2019-10-08T20:07:28_28481.overall_export_metadata"
  }
}

Fertigstellungszeit schätzen

Während der Ausführung eines Vorgangs wird im Feld state der Gesamtstatus des Vorgangs angezeigt.

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. Der Datastore-Modus lässt diesen Messwert möglicherweise weg, 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 von workEstimated 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.

Das folgende Beispiel zeigt den Fortschrittsstatus eines Exportvorgangs:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        ...
        "progressEntities": {
          "workCompleted": "1",
          "workEstimated": "3"
        },
        "progressBytes": {
          "workCompleted": "85",
          "workEstimated": "257"
        },
        ...

Wenn ein Vorgang abgeschlossen ist, enthält die Vorgangsbeschreibung "done": true. Der Wert des Feldes state stellt das Ergebnis des Vorgangs dar. Wenn das Feld done nicht in der Antwort festgelegt ist, lautet der Wert false. Verlassen Sie sich bei laufenden Vorgängen nicht auf die Existenz des Werts done.

Vorgang abbrechen

Console

Sie können einen laufenden Export- oder Importvorgang auf der Seite Import/Export der Google Cloud Console abbrechen.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.

  3. 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 datastore operations cancel operation-name

Durch das Abbrechen eines laufenden Vorgangs wird der Vorgang nicht rückgängig gemacht. Bei einem abgebrochenen Exportvorgang werden bereits in Cloud Storage exportierte Dokumente dort 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

gcloud

Verwenden Sie den Befehl 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 datastore operations delete operation-name

Abrechnung und Preise für verwaltete Exporte und Importe

Sie müssen die Abrechnung für Ihr Google Cloud-Projekt aktivieren, bevor Sie den verwalteten Export- und Importdienst verwenden können. Export- und Importvorgänge tragen auf folgende Weise zu Ihren Google Cloud-Kosten bei:

  • Lese- und Schreibvorgänge für Entitäten, bei Export- und Importvorgängen ausgeführt wurden, werden auf die Kosten von Firestore im Datastore-Modus angerechnet. Bei Exportvorgängen wird pro exportierter Entität ein Lesevorgang ausgeführt. Bei Importvorgängen wird pro importierter Entität ein Schreibvorgang ausgeführt.
  • In Cloud Storage gespeicherte Ausgabedateien werden auf Ihre in Cloud Storage gespeicherten Daten angerechnet.

Export- oder Importvorgänge lösen erst nach Abschluss eine Benachrichtigung zum Google Cloud-Budget aus. Die während eines Export- oder Importvorgangs ausgeführten Lese- und Schreibvorgänge werden nach Abschluss des Vorgangs auf Ihr tägliches Kontingent angerechnet.

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:

Über das Filtermenü auf das Label "goog-firestoremanaged" zugreifen.

Unterschiede zu Datastore Admin-Sicherungen

Wenn Sie zuvor die Datastore Admin-Konsole für Sicherungen verwendet haben, sollten Sie die folgenden Unterschiede beachten:

  • Exporte, die über einen verwalteten Export erstellt wurden, werden nicht in der Datastore Admin-Konsole angezeigt. Verwaltete Exporte und Importe sind ein neuer Dienst, der keine Daten mit der Sicherungs- und Wiederherstellungsfunktion von App Engine teilt, die über die Google Cloud Console verwaltet wird.

  • Der verwaltete Export- und Importdienst unterstützt nicht dieselben Metadaten wie die Datastore Admin-Sicherung und speichert den Fortschrittsstatus nicht in Ihrer Datenbank. Weitere Informationen zum Prüfen des Fortschritts von Export- und Importvorgängen finden Sie unter Umgang mit lang andauernden Vorgängen

  • Sie können keine Dienstlogs von verwalteten Export- und Importvorgängen abrufen.

  • Der verwaltete Importdienst ist abwärtskompatibel mit Datastore Admin-Sicherungsdateien. Sie können eine Datastore Admin-Sicherungsdatei mithilfe des verwalteten Importdiensts importieren. Die Ausgabe eines verwalteten Exports kann jedoch nicht mithilfe der Datastore Admin-Konsole importiert werden.

In BigQuery importieren

Informationen zum Importieren von Daten aus einem verwalteten Export in BigQuery finden Sie unter Daten des Datastore-Exportdienstes laden.

Daten, die ohne Angabe eines Entitätsfilters exportiert wurden, können nicht in BigQuery geladen werden. Wenn Sie Daten in BigQuery importieren möchten, muss die Exportanfrage im Entitätsfilter einen oder mehrere Artnamen enthalten.

BigQuery-Spaltenlimit

In BigQuery gilt ein Limit von 10.000 Spalten pro Tabelle. Exportvorgänge generieren ein BigQuery-Tabellenschema für jede Art. In diesem Schema wird jedes eindeutige Attribut innerhalb der Entitäten einer Art zu einer Schemaspalte.

Wenn das BigQuery-Schema einer Art 10.000 Spalten überschreitet, versucht der Exportvorgang, unterhalb des Spaltenlimits zu bleiben. Dafür werden eingebettete Entitäten als Blobs behandelt. Wenn durch diese Konvertierung die Anzahl der Spalten im Schema unter 10.000 bleibt, können Sie die Daten in BigQuery laden, aber Sie können die Attribute innerhalb eingebetteter Entitäten nicht abfragen. Wenn die Anzahl der Spalten 10.000 weiterhin überschreitet, generiert der Exportvorgang kein BigQuery-Schema für die Art und Sie können die Daten nicht in BigQuery laden.

Dienst-Agent-Migration

Firestore verwendet zum Autorisieren von Import- und Exportvorgängen einen Firestore-Dienst-Agent, 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

Firestore hat zuvor das App Engine-Standarddienstkonto anstelle des Firestore-Dienst-Agents verwendet. Wenn Ihre Datenbank weiterhin das App Engine-Dienstkonto zum Importieren oder Exportieren von Daten verwendet, sollten Sie der Anleitung in diesem Abschnitt folgen, um zum Firestore-Dienst-Agent zu migrieren.

App Engine-Dienstkonto
PROJECT_ID@appspot.gserviceaccount.com

Der Firestore-Dienst-Agent ist zu bevorzugen, da er für Firestore spezifisch ist. Das App Engine-Dienstkonto wird von mehreren Diensten gemeinsam verwendet.

Autorisierungskonto ansehen

Auf der Seite Import/Export in der Google Cloud Console können Sie sehen, welches Konto von Ihren Import- und Exportvorgängen zum Autorisieren von Anfragen verwendet wird. Sie können auch prüfen, ob Ihre Datenbank den Firestore-Dienst-Agent bereits verwendet.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Sehen Sie sich das Autorisierungskonto neben dem Label Import-/Exportjobs ausgeführt als an.

Wenn Ihr Projekt den Firestore-Dienst-Agent nicht verwendet, können Sie mit einer der folgenden Methoden zum Firestore-Dienst-Agent migrieren:

Die erste dieser Methoden ist zu bevorzugen, da sie den Wirkungsbereich auf ein einzelnes Projekt im Datastore-Modus beschränkt. Die zweite Methode wird nicht empfohlen, da damit keine vorhandenen Cloud Storage-Bucket-Berechtigungen migriert werden. Es bietet jedoch Sicherheitscompliance auf Organisationsebene.

Migration durch Prüfen und Aktualisieren von Cloud Storage-Bucket-Berechtigungen

Der Migrationsprozess umfasst zwei Schritte:

  1. Aktualisieren Sie die Cloud Storage-Bucket-Berechtigungen. Weitere Informationen dazu finden Sie im folgenden Abschnitt.
  2. Bestätigen Sie die Migration zum Firestore-Dienst-Agent.

Dienst-Agent-Bucket-Berechtigungen

Für alle 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. Beispielsweise müssen Vorgänge, bei denen Daten in ein anderes Projekt verschoben werden, auf einen Bucket in diesem anderen Projekt zugreifen. Andernfalls schlagen diese Vorgänge nach der Migration zum Firestore-Dienst-Agent fehl.

Für Import- und Export-Workflows im selben Projekt sind keine Änderungen an 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-Agent 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üssen, verwenden Sie eine benutzerdefinierte Rolle.

Der im folgenden Abschnitt beschriebene Migrationsprozess hilft Ihnen dabei, Cloud Storage-Buckets zu identifizieren, für die Berechtigungsaktualisierungen möglicherweise erforderlich sind.

Projekt zum Firestore-Dienst-Agent migrieren

Führen Sie die folgenden Schritte aus, um vom App Engine-Dienstkonto zum Firestore-Dienst-Agent zu migrieren. Wenn die Migration abgeschlossen ist, kann sie nicht mehr rückgängig gemacht werden.

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Wenn Ihr Projekt noch nicht zum Firestore-Dienst-Agent migriert wurde, werden ein Banner mit einer Beschreibung der Migration und die Schaltfläche Bucket-Status prüfen angezeigt. Im nächsten Schritt können Sie potenzielle Berechtigungsfehler identifizieren und beheben.

    Klicken Sie auf Bucket-Status prüfen.

    Ein Menü mit der Option zum Abschließen der Migration und eine Liste der Cloud Storage-Buckets werden angezeigt. Es kann einige Minuten dauern, bis die Liste vollständig geladen ist.

    Diese Liste enthält Buckets, die vor Kurzem bei Import- und Exportvorgängen verwendet wurden, denen dem Dienst-Agent im Datastore-Modus derzeit jedoch keine Lese- und Schreibberechtigungen gewährt werden.

  5. Notieren Sie sich den Hauptnamen des Dienst-Agents für den Datastore-Modus Ihres Projekts. Der Name des Dienst-Agents wird unter dem Label Dienst-Agent erlauben, auf den Zugriff zu gewähren angezeigt.
  6. Führen Sie für jeden Bucket in der Liste, den Sie für zukünftige Import- oder Exportvorgänge verwenden, die folgenden Schritte aus:

    1. Klicken Sie in der Tabellenzeile dieses Buckets auf Korrigieren. Daraufhin wird die Seite mit den Berechtigungen dieses Buckets in einem neuen Tab geöffnet.

    2. Klicken Sie auf Hinzufügen.
    3. Geben Sie im Feld Neue Hauptkonten den Namen Ihres Firestore-Dienst-Agents ein.
    4. Wählen Sie im Feld Rolle auswählen die Option Dienst-Agents > Firestore-Dienst-Agent aus.
    5. Klicken Sie auf Speichern.
    6. Kehren Sie zum Tab mit der Seite für den Import/Export im Datastore-Modus zurück.
    7. Wiederholen Sie diese Schritte für andere Buckets in der Liste. Achten Sie darauf, alle Seiten der Liste aufzurufen.
  7. Klicken Sie auf Migrate to Firestore Service Agent (Zum Firestore-Dienst-Agent migrieren). Wenn Sie noch Buckets mit fehlgeschlagenen Berechtigungsprüfungen haben, müssen Sie die Migration durch Klicken auf Migrieren bestätigen.

    Sie werden über den Abschluss der Migration in einer Benachrichtigung informiert. Die Migration kann nicht rückgängig gemacht werden.

Status der Migration abrufen

So prüfen Sie den Migrationsstatus Ihres Projekts:

  1. Rufen Sie in der Google Cloud Console die Seite Datenbanken auf.

    Zur Seite „Datenbanken“

  2. Wählen Sie die benötigte Datenbank aus der Liste der Datenbanken aus.
  3. Klicken Sie im Navigationsmenü auf Importieren/Exportieren.

  4. Suchen Sie nach dem Hauptkonto neben dem Label Import-/Exportjobs ausgeführt als.

    Wenn das Hauptkonto service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com ist, wurde Ihr Projekt bereits zum Firestore-Dienst-Agent migriert. Die Migration kann nicht rückgängig gemacht werden.

    Wenn das Projekt nicht migriert wurde, wird oben auf der Seite ein Banner mit der Schaltfläche Bucket-Status prüfen angezeigt. Informationen zum Abschließen der Migration 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)

    Für diese Einschränkung sind Import- und Exportvorgänge erforderlich, um Anfragen mit dem Firestore-Dienst-Agent zu autorisieren. Informationen zum Festlegen dieser Einschränkung finden Sie unter Organisationsrichtlinien erstellen und verwalten .

Durch Anwenden dieser Organisationsrichtlinieneinschränkung werden dem Firestore-Dienst-Agent nicht automatisch die entsprechenden Cloud Storage-Bucket-Berechtigungen gewährt.

Wenn durch die Einschränkung Berechtigungsfehler für Import- oder Exportworkflows erstellt werden, können Sie sie deaktivieren und wieder das Standarddienstkonto verwenden. Nachdem Sie die Berechtigungen für Cloud Storage-Bucket geprüft und aktualisiert haben, können Sie die Einschränkung wieder aktivieren.