App Engine-Anforderung

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

Firestore-Datenbanken werden jetzt standardmäßig ohne Verknüpfung mit der App Engine bereitgestellt.

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

Aktive App Engine

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

Wenn Sie Ihre App Engine-Anwendung deaktivieren, wird auch der Zugriff auf die mit dieser Anwendung verknüpfte Firestore-Datenbank deaktiviert.

Sie können den Verknüpfungsstatus von App Engine mit der REST API prü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.

Wenn Sie eine verknüpfte App Engine-Anwendung deaktivieren, deaktivieren Sie auch den Lese- und Schreibzugriff in Ihrer Datenbank. In diesem Fall wird die Seite Firestore-Daten in In der Google Cloud Console können Sie die Verknüpfung Ihrer Datenbank mit der App Engine-Anwendung Klicken Sie auf Verknüpfung der Datenbank aufheben, um den Vorgang zu starten.

Firestore-Daten aufrufen

Sie können die Verknüpfung Ihrer Datenbank auch mit der REST API aufheben:

curl -X PATCH \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
--data '{"app_engine_integration_mode": "DISABLED"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=appEngineIntegrationMode"

Wenn Sie die Verknüpfung Ihrer Datenbank aufheben, können Sie App Engine deaktivieren, ohne den Zugriff auf Ihre Datenbank zu beeinträchtigen. Das Entfernen der Verknüpfung kann nicht rückgängig gemacht werden. Es kann bis zu fünf Minuten dauern, bis die Verknüpfung aufgehoben wird.

Terraform-Ressourcen von App Engine migrieren

Wenn Sie Firestore-Datenbanken bisher über die Terraform-Ressource google_app_engine_application verwaltet haben, können Sie stattdessen die Terraform-Ressource google_firestore_database verwenden.

Eine allgemeine Anleitung zum Verwalten von Firestore-Datenbanken über Terraform finden Sie unter Erstellen von Datenbanken automatisieren.

google_firestore_database-Ressource erstellen

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

firestore.tf

resource "google_firestore_database" "database" {
  project     = "project"
  name        = "(default)"
  location_id = "location"
  
  type = "database_type" // either "FIRESTORE_NATIVE" or "DATASTORE_MODE"
  
  app_engine_integration_mode = "DISABLED"

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

Weitere Informationen finden Sie unter Firestore-Standorte finden Sie eine Liste der verfügbaren Standorte. Wählen Sie den entsprechenden Standort Ihrer vorhandenen Datenbank.

Vorhandene Firestore-Datenbank importieren

Stellen Sie zunächst sicher, Firestore API aktiviert ist.

Als Nächstes importieren Sie die vorhandene Firestore-Datenbank in Ihre Terraform-Anwendung. Bundesland:

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 geändert werden, prüfen Sie, ob diese Änderungen beabsichtigt sind. Wenn die Ausgabe enthält eine Zeile wie diese:

google_firestore_database.database must be replaced

überprüfen Sie in der Terraform-Konfigurationsdatei, Fehler, insbesondere in den project, location oder name-Feldern und führen Sie terraform plan dann noch einmal aus. Alle Felder, bei denen Terraform Ihre Datenbank ersetzen muss, sind in der Planausgabe mit # forces replacement gekennzeichnet.

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

terraform apply

Ressource "google_app_engine_application" entfernen

Wenn Sie bereits eine google_app_engine_application-Ressource in Ihrer Terraform-Konfigurationsdatei haben, entfernen Sie sie jetzt aus dieser Datei.

Führen Sie danach noch einmal Folgendes 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

terraform apply

Das Löschen von App Engine-Ressourcen wird von Terraform derzeit nicht unterstützt. In Terraform wird die Ressource zwar als gelöscht angezeigt, die App Engine-Anwendung wird jedoch nicht tatsächlich gelöscht. Die App Engine Anwendung nicht mehr von Terraform verwaltet.

Anforderung für die Firestore API

Bisher waren alle Firestore-Datenbanken mit einer App Engine-App verknüpft. Firestore-Datenbanken werden jetzt standardmäßig ohne Verknüpfung mit der App Engine bereitgestellt. Außerdem werden alle Datenbanken, sowohl für vorhandene als auch für neu erstellte Websites gelten die folgenden Anforderungen:

  • Damit Sie Ihre Datenbank über die Google Cloud Console und die gcloud CLI verwalten können, muss die Firestore API im Projekt aktiviert sein. Dies ist sowohl für Firestore-Datenbanken im nativen Modus als auch für Firestore-Datenbanken im Datastore-Modus erforderlich.
  • Bei Ausführung über die Google Cloud Console oder die gcloud CLI Für die folgenden Verwaltungsvorgänge sind die folgenden IAM-Berechtigungen erforderlich:

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

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

Wenn Sie zuvor eine benutzerdefinierte Rolle für Datastore definiert haben, ist möglicherweise die Berechtigung datastore.databases.getMetadata nicht vorhanden. Fortsetzung überprüfen durch Aktualisieren Ihrer benutzerdefinierten Rollen mit datastore.databases.getMetadata oder indem Sie eine vordefinierte Rolle verwenden.

API über Terraform aktivieren

Sie können 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, damit die API aktiviert ist, bevor Terraform versucht, die Datenbank zu erstellen:

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