Configuration requise pour App Engine

Auparavant, toutes les bases de données Firestore en mode Datastore é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ée.

Les bases de données en mode Datastore sont désormais provisionnées sans être associées à App Engine par défaut.

Si votre base de données est associée à un 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 que cette application 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 exister dans la même région.

Si vous désactivez votre application App Engine, vous désactivez également l'accès au en mode Datastore associée à cette application.

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.

Vous pouvez dissocier votre base de données en mode Datastore de l'application App Engine pour supprimer l'exigence d'une 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 définitive.

Si vous dissociez votre base de données, vous ne pouvez pas utiliser la fonctionnalité Désactiver l'écriture. sur la page Administration Datastore. Si l'écriture est actuellement désactivée, dissociation votre base de données activera les écritures.

Avant de dissocier votre base de données d'App Engine, veillez à activer le paramètre l'API Firestore et 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 La dissociation peut prendre jusqu'à cinq minutes pour que l'opération soit prise en compte.

Accéder à la page "Administration Datastore"

Migrer des ressources App Engine Terraform

Si vous gériez auparavant des bases de données en mode Datastore via 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 la section Emplacements Datastore. Choisissez l'emplacement correspondant 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.

Importez ensuite 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

Examinez le résultat pour vous assurer que l'importation s'est bien déroulée. Si la sortie affiche tous les champs modifiés, 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 qui nécessitent que Terraform remplace votre base de données seront marqués avec # forces replacement dans la sortie 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éjà d'une ressource google_app_engine_application dans supprimer votre fichier de configuration Terraform.

Ensuite, exécutez à nouveau la commande suivante:

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 en mode Datastore étaient associées à une application App Engine. Les bases de données en mode Datastore sont désormais 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 respecter les exigences suivantes :

  • Pour gérer votre base de données depuis la console Google Cloud et la 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

Si vous n'avez pas activé l'API Firestore, une erreur s'affiche sur les pages Datastore de la console Google Cloud, avec le message suivant :

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 n'est pas affectée.

Vérifier que les comptes accédant à la base de données via la console Google Cloud dispose des autorisations requises, indiquées ci-dessus.

Rôles prédéfinis : Les autorisations 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. Assurer la continuité l'accès en mettant à jour vos rôles personnalisés avec datastore.databases.getMetadata ou à l'aide d'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]
}