Les bases de données en mode Datastore sont désormais provisionnées 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. L'application n'a pas besoin d'être utilisée. L'application et la base de données associées doivent exister 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 en mode Datastore associée à cette application.
Afficher l'état de l'association App Engine
Vous pouvez vérifier l'état de la 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
Vous pouvez dissocier votre base de données en mode Datastore de l'application App Engine pour supprimer l'exigence d'application App Engine active. 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.
Si vous dissociez votre base de données, vous ne pouvez pas utiliser la fonctionnalité Désactiver les opérations d'écriture sur la page Administration Datastore. Si les opérations d'écriture sont actuellement désactivées, la dissociation de votre base de données les activera.
Avant de dissocier votre base de données d'App Engine, assurez-vous d'activer l'API Firestore et de mettre à jour vos autorisations IAM.
Pour dissocier votre base de données, accédez à la page Administration Datastore, puis cliquez sur Dissocier la base de données de l'application. L'opération de dissociation peut prendre jusqu'à cinq minutes.
Accéder à la page "Administration Datastore"
Migrer des ressources Terraform App Engine
Si vous avez déjà géré des bases de données en mode Datastore à l'aide de la ressource Terraform google_app_engine_application
, vous pouvez utiliser la ressource Terraform google_firestore_database
à la place.
Pour obtenir des instructions générales sur la gestion des bases de données en mode Datastore via Terraform, consultez Automatiser la création de bases de données.
Créer une ressource google_firestore_database
Dans votre fichier de configuration Terraform, créez une ressource google_firestore_database
:
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" }
Pour obtenir la liste des emplacements disponibles, consultez Emplacements Datastore. Choisissez l'emplacement correspondant à celui de votre base de données existante.
Importer la base de données existante en mode Datastore
Commencez par vous assurer que l'API Firestore est activée.
Ensuite, importez la base de données en mode Datastore existante dans votre état Terraform :
terraform import google_firestore_database.database "(default)"
Exécutez la commande suivante :
terraform plan
Inspectez le résultat pour vous assurer que l'importation a réussi. Si le résultat indique que des champs ont été modifiés, assurez-vous que ces modifications sont intentionnelles. Si le résultat inclut une ligne semblable à celle-ci :
google_firestore_database.database must be replaced
Ensuite, inspectez votre fichier de configuration Terraform pour voir si des erreurs ont été commises, en particulier dans les champs project, location ou name, puis exécutez à nouveau terraform plan
. Tous les champs qui nécessitent que Terraform remplace votre base de données seront marqués d'un # forces replacement
dans le résultat du plan.
Une fois que vous êtes satisfait du résultat du plan Terraform, exécutez la commande suivante :
terraform apply
Suppression de la ressource google_app_engine_application
Si vous disposez d'une ressource google_app_engine_application
existante dans votre fichier de configuration Terraform, supprimez-la de ce fichier maintenant.
Ensuite, exécutez à 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 ne permet pas actuellement de supprimer les ressources App Engine. Bien que Terraform indique que la ressource a été détruite, l'application App Engine ne sera pas réellement supprimée. Toutefois, l'application App Engine ne sera plus gérée par Terraform.
Exigence concernant l'API Firestore
Auparavant, toutes les bases de données Firestore en mode Datastore étaient associées à une application App Engine. Désormais, les bases de données en mode Datastore sont provisionnées sans être associées à App Engine par défaut. De plus, toutes les bases de données, existantes et nouvellement créées, 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. Cette opération est requise pour les bases de données Firestore en mode natif et Firestore en mode Datastore.
Lorsqu'elles sont exécutées depuis la console Google Cloud ou gcloud CLI, les opérations administratives ci-dessous nécessitent les autorisations IAM suivantes :
- Créez 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éez une base de données :
Si vous n'avez pas activé l'API Firestore, une erreur s'affichera sur les pages Datastore de la console Google Cloud , avec la notification suivante :
L'API Firestore est requise pour administrer votre base de données.
Cette erreur inclut également un bouton permettant d'activer l'API Firestore. Cliquez sur le bouton pour activer l'API.
Vous devez également vérifier vos autorisations IAM pour vous assurer que votre accès à la base de données n'est pas affecté.
Vérifiez que les comptes qui accèdent à la base de données via la console Google Cloud disposent des autorisations requises listées ci-dessus.
Les rôles prédéfinis tels que Utilisateur Datastore et Lecteur Datastore incluent les autorisations requises. Si vous avez 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 est possible qu'il ne dispose pas de l'autorisation datastore.databases.getMetadata
. Pour continuer à y accéder, mettez à jour vos rôles personnalisés avec datastore.databases.getMetadata
ou utilisez 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 dépendance à la ressource google_project_service
pour vous assurer que 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] }