Exigences concernant App Engine
Auparavant, toutes les bases de données Firestore étaient associées à une application App Engine. Lorsqu'elle est associée, votre base de données nécessite une application App Engine active dans le même projet. Sans l'application App Engine active, l'accès en lecture et en écriture à la base de données est désactivé.
Les bases de données Firestore sont désormais provisionnées et dissociées d'App Engine par défaut.
Si votre base de données est associée à App Engine, vous pouvez la dissocier.
App Engine actif
Une application App Engine active signifie qu'une application existe dans le même projet et qu'elle n'est pas désactivée. Elle n'a pas besoin d'être utilisée. L'application et la base de données associées doivent se trouver dans la même région.
Si vous désactivez votre application App Engine, vous désactivez également l'accès à la base de données Firestore associée à cette application.
Afficher l'état de l'association à App Engine
Vous pouvez vérifier l'état de dissociation d'App Engine à l'aide de l'API REST :
curl --header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)"
Dans la réponse, examinez la valeur de appEngineIntegrationMode
. Si la valeur est DISABLED
, votre base de données n'est pas associée à une application App Engine.
Dissocier votre base de données d'App Engine
Si vous désactivez une application App Engine associée, vous désactivez également l'accès en lecture et en écriture. à votre base de données. Dans ce cas, la page Données Firestore dans La console Google Cloud offre la possibilité de dissocier votre base de données application App Engine. Cliquez sur Dissocier la base de données pour commencer le processus.Vous pouvez également dissocier votre base de données à l'aide de l'API REST :
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"
Lorsque vous dissociez votre base de données, vous pouvez désactiver App Engine sans affecter l'accès à votre base de données. La dissociation est une opération définitive. L'opération de dissociation peut prendre jusqu'à cinq minutes.
Migrer des ressources App Engine Terraform
Si vous gériez auparavant des bases de données Firestore via
google_app_engine_application
, vous pouvez utiliser la classe
google_firestore_database
.
Pour obtenir des instructions générales sur la gestion des bases de données Firestore via Terraform, consultez la section Automatiser la création de bases de données.
Créer une ressource google_firestore_database
Dans votre fichier de configuration Terraform, créez un objet
Ressource google_firestore_database
:
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" }
Pour obtenir la liste des emplacements disponibles, consultez la section Emplacements Firestore. Choisissez l'emplacement correspondant de votre base de données existante.
Importer la base de données Firestore existante
Tout d'abord, assurez-vous que API Firestore est activé.
Ensuite, importez la base de données Firestore existante dans votre état:
terraform import google_firestore_database.database "(default)"
Exécutez la commande suivante :
terraform plan
Examinez le résultat pour vous assurer que l'importation s'est bien déroulée. Si la sortie indique que des champs changent, assurez-vous que ces modifications sont intentionnelles. Si la sortie comporte une ligne semblable à celle-ci:
google_firestore_database.database must be replaced
puis inspectez votre fichier de configuration Terraform pour voir
des erreurs, en particulier dans les champs project, location ou
name, puis exécutez à nouveau terraform plan
. Tous les champs
demander à Terraform de remplacer votre base de données sera marqué comme suit :
# forces replacement
dans la sortie du plan.
Une fois que vous êtes satisfait du résultat du plan Terraform, exécutez :
terraform apply
Supprimer la ressource google_app_engine_application
Si vous disposez d'une ressource google_app_engine_application
dans votre fichier de configuration Terraform, supprimez-la de ce fichier maintenant.
Exécutez ensuite à nouveau :
terraform plan
La sortie obtenue doit ressembler à ceci :
Terraform will perform the following actions: # google_app_engine_application.app will be destroyed # (because google_app_engine_application.app is not in configuration)
Une fois que vous êtes satisfait du résultat du plan, exécutez
terraform apply
Terraform n'est actuellement pas compatible avec la suppression des ressources App Engine. Bien que Terraform affiche la ressource comme étant détruite, il ne supprime pas réellement l'application App Engine. Toutefois, App Engine application ne sera plus gérée par Terraform.
Conditions requises pour l'API Firestore
Auparavant, toutes les bases de données Firestore étaient associées à une application App Engine. Les bases de données Firestore sont désormais provisionnées sans être associées à App Engine par défaut. De plus, toutes les bases de données, les éléments existants et les nouveaux doivent désormais répondre aux exigences suivantes:
- Pour gérer votre base de données depuis la console Google Cloud et gcloud CLI, l'API Firestore doit être activée dans le projet. Cela est obligatoire pour Firestore dans Bases de données en mode natif et Firestore en mode Datastore
Lorsqu'elle est exécutée à partir de la console Google Cloud ou de gcloud CLI, les opérations d'administration ci-dessous nécessiteront les autorisations IAM suivantes:
- Créer une base de données:
datastore.databases.create
- Afficher les métadonnées de la base de données :
datastore.databases.getMetadata
- Modifier les métadonnées de la base de données :
datastore.databases.update
- Créer une base de données:
Les rôles prédéfinis tels que Utilisateur Datastore et Lecteur Datastore incluent les autorisations requises. Si vous créé des rôles IAM personnalisés, vous devrez peut-être les mettre à jour pour inclure les autorisations ci-dessus.
Si vous avez déjà défini un rôle personnalisé pour Datastore,
il peut ne pas disposer de l'autorisation datastore.databases.getMetadata
. Assurez-vous de conserver l'accès en mettant à jour vos rôles personnalisés avec datastore.databases.getMetadata
ou en utilisant un rôle prédéfini.
Activer l'API via Terraform
Si vous le souhaitez, vous pouvez également activer l'API Firestore via Terraform:
resource "google_project_service" "firestore" { project = "project" service = "firestore.googleapis.com" }
Si vous disposez d'une ressource google_firestore_database
, vous pouvez ajouter une
à la ressource google_project_service
pour vous assurer
L'API est activée avant que Terraform ne tente de créer la base de données:
resource "google_firestore_database" "database" { // ... depends_on = [google_project_service.firestore] }