App Engine-Anforderung

Zuvor waren alle Datenbanken in Firestore im Datastore-Modus mit einer App Engine-Anwendung verknüpft. Wenn die Datenbank verknüpft ist, benötigt die Datenbank eine aktive App Engine-Anwendung im selben Projekt. Ohne die aktive App Engine-Anwendung ist der Lese- und Schreibzugriff auf die Datenbank deaktiviert.

Datenbanken im Datastore-Modus werden jetzt standardmäßig unabhängig von App Engine bereitgestellt.

Wenn Ihre Datenbank mit einer App Engine verknüpft ist, können Sie die Verknüpfung Ihrer Datenbank aufheben.

Aktive App Engine

Eine aktive App Engine-Anwendung bedeutet, dass eine Anwendung im selben Projekt vorhanden und diese Anwendung nicht deaktiviert ist. Die Anwendung muss nicht genutzt werden. Die verknüpfte App und Datenbank müssen sich in derselben Region befinden.

Wenn Sie eine App Engine-Anwendung deaktivieren, deaktivieren Sie auch den Zugriff auf die Datenbank im Datastore-Modus, die mit dieser Anwendung verknüpft ist.

Sie können den Verknüpfungsstatus von App Engine mithilfe der REST API überprüfen:

curl  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)"

Sehen Sie sich in der Antwort den Wert von appEngineIntegrationMode an. Wenn der Wert DISABLED ist, ist Ihre Datenbank nicht mit einer App Engine-Anwendung verknüpft.

Sie können die Verknüpfung Ihrer Datenbank im Datastore-Modus mit der App Engine-Anwendung aufheben, um die aktive App Engine-Anforderung zu entfernen. Wenn Sie die Verknüpfung Ihrer Datenbank aufheben, können Sie die App Engine deaktivieren, ohne den Zugriff auf die Datenbank zu beeinträchtigen.

Das Aufheben der Verknüpfung kann nicht rückgängig gemacht werden.

Wenn Sie die Verknüpfung Ihrer Datenbank aufheben, können Sie die Funktion Schreibvorgänge deaktivieren auf der Seite Datastore Admin nicht verwenden. Wenn Schreibvorgänge derzeit deaktiviert sind, werden sie durch das Aufheben der Verknüpfung mit der Datenbank aktiviert.

Bevor Sie die Verknüpfung Ihrer Datenbank mit App Engine aufheben, müssen Sie die Firestore API aktivieren und Ihre IAM-Berechtigungen aktualisieren.

Um die Verknüpfung der Datenbank aufzuheben, rufen Sie die Seite Datastore-Verwaltung auf und klicken Sie auf Verknüpfung der Datenbank mit der Anwendung aufheben. Es kann bis zu fünf Minuten dauern, bis die Verknüpfung wirksam wird.

Zur Datastore Admin

Terraform-App Engine-Ressourcen migrieren

Wenn Sie zuvor Datenbanken im Datastore-Modus über die Terraform-Ressource google_app_engine_application verwaltet haben, können Sie stattdessen die Terraform-Ressource google_firestore_database verwenden.

Allgemeine Anleitungen zum Verwalten von Datenbanken im Datastore-Modus über Terraform finden Sie unter Datenbankerstellung automatisieren.

Ressource google_firestore_database erstellen

Erstellen Sie in der Terraform-Konfigurationsdatei eine neue google_firestore_database-Ressource:

datastore.tf

resource "google_firestore_database" "database" {
  project     = "project"
  name        = "(default)"
  location_id = "location"

  type = "DATASTORE_MODE"

  app_engine_integration_mode = "DISABLED"

  // Optional, but recommended for safety
  delete_protection_state = "DELETE_PROTECTION_ENABLED"
}

Eine Liste der verfügbaren Standorte finden Sie unter Datenspeicherstandorte. Wählen Sie den Speicherort Ihrer vorhandenen Datenbank aus.

Vorhandene Datenbank im Datastore-Modus importieren

Prüfen Sie zuerst, ob die Firestore API aktiviert ist.

Importieren Sie als Nächstes die vorhandene Datenbank im Datastore-Modus in Ihren Terraform-Status:

terraform import google_firestore_database.database "(default)"

Führen Sie als Nächstes diesen Befehl aus:

terraform plan

Prüfen Sie die Ausgabe, um sicherzustellen, dass der Import erfolgreich abgeschlossen wurde. Wenn in der Ausgabe Felder angezeigt werden, die sich ändern, prüfen Sie, ob diese Änderungen beabsichtigt sind. Wenn die Ausgabe eine Zeile wie diese enthält:

google_firestore_database.database must be replaced

Prüfen Sie dann Ihre Terraform-Konfigurationsdatei auf Fehler, insbesondere in den Feldern project, location oder name. Führen Sie terraform plan dann noch einmal aus. Alle Felder, deren Datenbank durch Terraform ersetzt werden muss, werden in der Planausgabe mit # forces replacement gekennzeichnet.

Wenn Sie mit der Ausgabe des Terraform-Plans zufrieden sind, führen Sie folgenden Befehl aus:

terraform apply

Ressource „google_app_engine_application“ entfernen

Wenn Ihre Terraform-Konfigurationsdatei eine google_app_engine_application-Ressource enthält, entfernen Sie sie jetzt aus dieser Datei.

Führen Sie anschließend noch einmal folgenden Befehl aus:

terraform plan

Die Ausgabe sollte in etwa so aussehen:

Terraform will perform the following actions:

  # google_app_engine_application.app will be destroyed
  # (because google_app_engine_application.app is not in configuration)

Wenn Sie mit der Ausgabe des Plans zufrieden sind, führen Sie folgenden Befehl aus:

terraform apply

Terraform unterstützt derzeit nicht das Löschen von App Engine-Ressourcen. Obwohl Terraform die Ressource als gelöscht anzeigt, wird die App Engine-Anwendung nicht gelöscht. Die App Engine-Anwendung wird jedoch nicht mehr von Terraform verwaltet.

Firestore – Anforderungen an die Firestore API

Bisher wurden alle Datenbanken in Firestore im Datastore-Modus mit einer App Engine-Anwendung verknüpft. Datenbanken im Datastore-Modus werden jetzt standardmäßig unabhängig von App Engine bereitgestellt. Außerdem gelten jetzt für alle vorhandenen und neu erstellten Datenbanken die folgenden Anforderungen:

  • Zum Verwalten Ihrer Datenbank über die Google Cloud Console und die gcloud CLI muss die Firestore API im Projekt aktiviert sein. Dies ist sowohl für Firestore-Datenbanken im nativen Modus als auch für Datenbanken im Datastore-Modus erforderlich.
  • Bei Ausführung über die Google Cloud Console oder die gcloud CLI sind für die folgenden Verwaltungsvorgänge die folgenden IAM-Berechtigungen erforderlich:

    • Datenbank erstellen: datastore.databases.create
    • Datenbankmetadaten ansehen: datastore.databases.getMetadata
    • Datenbankmetadaten bearbeiten: datastore.databases.update

Wenn Sie die Firestore API nicht aktiviert haben, wird auf den Datastore-Seiten der Google Cloud Console ein Fehler mit dem folgenden Hinweis angezeigt:

Die Firestore API ist zum Verwalten Ihrer Datenbank erforderlich.

Dieser Fehler beinhaltet auch eine Schaltfläche zum Aktivieren der Firestore API. Klicken Sie auf die Schaltfläche, um die API zu aktivieren.

Prüfen Sie auch Ihre IAM-Berechtigungen, damit Ihr Zugriff auf die Datenbank nicht beeinträchtigt wird.

Prüfen Sie, ob die Konten, die über die Google Cloud Console auf die Datenbank zugreifen, die erforderlichen Berechtigungen haben, die oben aufgeführt sind.

Vordefinierte Rollen wie Datastore-Nutzer und Datastore-Betrachter enthalten die erforderlichen Berechtigungen. Wenn Sie benutzerdefinierte IAM-Rollen erstellt haben, müssen Sie diese möglicherweise aktualisieren, damit sie die oben genannten Berechtigungen enthalten.

Wenn Sie bereits eine benutzerdefinierte Rolle für Datastore definiert haben, fehlt möglicherweise die Berechtigung datastore.databases.getMetadata. Sorgen Sie dafür, dass Sie weiterhin Zugriff haben. Aktualisieren Sie dazu Ihre benutzerdefinierten Rollen mit datastore.databases.getMetadata oder verwenden Sie eine vordefinierte Rolle.

API über Terraform aktivieren

Bei Bedarf können Sie die Firestore API auch über Terraform aktivieren:

resource "google_project_service" "firestore" {
  project = "project"
  service = "firestore.googleapis.com"
}

Wenn Sie eine google_firestore_database-Ressource haben, können Sie eine Abhängigkeit von der google_project_service-Ressource hinzufügen, um sicherzustellen, dass die API aktiviert ist, bevor Terraform versucht, die Datenbank zu erstellen:

resource "google_firestore_database" "database" {
  // ...
  depends_on = [google_project_service.firestore]
}