App Engine-Anforderung
Bisher waren alle Firestore-Datenbanken mit einer App Engine-Anwendung verknüpft. Wenn eine Verknüpfung besteht, ist für die Datenbank eine aktive App Engine-Anwendung im selben Projekt erforderlich. Ohne aktive App Engine-Anwendung ist der Lese- und Schreibzugriff auf die Datenbank deaktiviert.
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.
App Engine-Verknüpfungsstatus ansehen
Sie können den App Engine-Status der Verknüpfung mithilfe 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.
Verknüpfung der Datenbank mit der App Engine aufheben
Wenn Sie eine verknüpfte App Engine-Anwendung deaktivieren, wird auch der Lese- und Schreibzugriff auf Ihre Datenbank deaktiviert. In diesem Fall wird auf der Seite Firestore-Daten in der Google Cloud Console die Option angezeigt, die Verknüpfung Ihrer Datenbank mit der App Engine-Anwendung aufzuheben. Klicken Sie auf Verknüpfung der Datenbank aufheben, um den Vorgang zu starten.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 die App Engine deaktivieren, ohne dass sich dies auf den Zugriff auf Ihre Datenbank auswirkt. 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 App Engine-Ressourcen 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.
Ressource vom Typ „google_firestore_database“ erstellen
Erstellen Sie in Ihrer 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" }
Eine Liste der verfügbaren Standorte finden Sie unter Firestore-Standorte. Wählen Sie den Speicherort aus, der dem Ihrer vorhandenen Datenbank entspricht.
Vorhandene Firestore-Datenbank importieren
Prüfen Sie zuerst, ob die Firestore API aktiviert ist.
Importieren Sie als Nächstes die vorhandene Firestore-Datenbank 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 anhand der Ausgabe, ob der Import erfolgreich war. Wenn in der Ausgabe Felder geändert werden, prüfen Sie, ob diese Änderungen beabsichtigt sind. Wenn die Ausgabe eine Zeile enthält, die in etwa so aussieht:
google_firestore_database.database must be replaced
Prüfen Sie dann Ihre Terraform-Konfigurationsdatei, um festzustellen, ob Fehler aufgetreten sind, insbesondere in den Feldern project, location oder name. Führen Sie dann terraform plan
noch einmal aus. Alle Felder, bei denen Terraform Ihre Datenbank ersetzen muss, werden in der Planausgabe mit # forces replacement
gekennzeichnet.
Wenn Sie mit der Ausgabe des Terraform-Plans zufrieden sind, führen Sie Folgendes aus:
terraform apply
Entfernen der Ressource „google_app_engine_application“
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 Planausgabe 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 wird jedoch 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 gelten für alle Datenbanken, sowohl bestehende als auch neu erstellte, 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.
Wenn Sie die folgenden Verwaltungsvorgänge über die Google Cloud Console oder die gcloud CLI ausführen, sind die folgenden IAM-Berechtigungen erforderlich:
- Datenbank erstellen:
datastore.databases.create
- Datenbankmetadaten ansehen:
datastore.databases.getMetadata
- Datenbankmetadaten bearbeiten:
datastore.databases.update
- Datenbank erstellen:
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 den Datenspeicher definiert haben, fehlt ihr möglicherweise die Berechtigung datastore.databases.getMetadata
. Sorgen Sie für dauerhaften Zugriff, indem Sie Ihre benutzerdefinierten Rollen mit datastore.databases.getMetadata
aktualisieren oder 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] }