Exporter et importer des données

Vous pouvez utiliser le service d'exportation et d'importation géré par Firestore pour récupérer des données suite à une suppression accidentelle et exporter des données pour un traitement hors connexion. Vous pouvez exporter tous les documents ou seulement certaines collections. De même, vous pouvez importer toutes les données d'une exportation ou uniquement des collections spécifiques. Les données exportées à partir d'une base de données Firestore peuvent être importées dans une autre base de données Firestore. Vous pouvez également charger des exportations Firestore dans BigQuery.

Cette page explique comment exporter et importer des documents Firestore à l'aide du service d'exportation et d'importation géré et de Cloud Storage. Le service d'exportation et d'importation géré Firestore est disponible via l'outil de ligne de commande gcloud et l'API Firestore (REST, RPC).

Avant de commencer

Pour pouvoir utiliser le service d'exportation et d'importation géré, vous devez effectuer les tâches ci-dessous :

  1. Activer la facturation pour votre projet Google Cloud. Seuls les projets Google Cloud pour lesquels la facturation est activée peuvent utiliser les fonctionnalités d'exportation et d'importation.
  2. Créez un bucket Cloud Storage pour votre projet à proximité de l'emplacement de votre base de données Firestore. Vous ne pouvez pas utiliser de bucket "Paiements du demandeur" pour les opérations d'exportation et d'importation.
  3. Assurez-vous que votre compte dispose des autorisations nécessaires pour Firestore et Cloud Storage. Si vous êtes le propriétaire du projet, votre compte dispose des autorisations requises. Sinon, les rôles suivants accordent les autorisations nécessaires pour les opérations d'exportation et d'importation, ainsi que pour l'accès à Cloud Storage :

    • Rôles Firestore: Owner, Cloud Datastore Owner ou Cloud Datastore Import Export Admin
    • Rôles Cloud Storage : Owner ou Storage Admin

Autorisations de l'agent de service

Les opérations d'exportation et d'importation utilisent un agent de service Firestore pour autoriser les opérations Cloud Storage. L'agent de service Firestore utilise la convention d'attribution de noms suivante:

Agent de service Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Pour en savoir plus sur les agents de service, consultez la page Agents de service.

L'agent de service Firestore a besoin d'accéder au bucket Cloud Storage utilisé dans une opération d'exportation ou d'importation. Si votre bucket Cloud Storage se trouve dans le même projet que votre base de données Firestore, l'agent de service Firestore peut accéder au bucket par défaut.

Si le bucket Cloud Storage se trouve dans un autre projet, vous devez autoriser l'agent de service Firestore à accéder au bucket Cloud Storage.

Attribuer des rôles à l'agent de service

Vous pouvez utiliser l'outil de ligne de commande gsutil pour attribuer l'un des rôles ci-dessous. Par exemple, pour attribuer le rôle "Administrateur de l'espace de stockage" à l'agent de service Firestore, exécutez la commande suivante:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Remplacez PROJECT_NUMBER par le numéro de votre projet, qui permet de nommer votre agent de service Firestore. Pour afficher le nom de l'agent de service, consultez Afficher le nom de l'agent de service.

Vous pouvez également attribuer ce rôle à l'aide de la console Google Cloud.

Afficher le nom de l'agent de service

Vous pouvez afficher le compte utilisé par vos opérations d'importation et d'exportation pour autoriser les requêtes à partir de la page Importation/Exportation de la console Google Cloud. Vous pouvez également vérifier si votre base de données utilise l'agent de service Firestore ou l'ancien compte de service App Engine.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Affichez le compte d'autorisation à côté du libellé Les jobs d'importation/exportation s'exécutent en tant que.

L'agent de service a besoin du rôle Storage Admin pour que le bucket Cloud Storage soit utilisé pour l'opération d'exportation ou d'importation.

Configurer gcloud pour votre projet

Vous pouvez lancer des opérations d'importation et d'exportation via la console Google Cloud ou l'outil de ligne de commande gcloud. Pour utiliser gcloud, configurez l'outil de ligne de commande et connectez-vous à votre projet de l'une des manières suivantes :

Exporter des données

Une opération d'exportation copie les documents de votre base de données vers un ensemble de fichiers dans un bucket Cloud Storage. Notez qu'une exportation n'est pas un instantané de base de données exact pris à l'heure de début de l'exportation. Une exportation peut inclure des modifications effectuées pendant l'exécution de l'opération.

Exporter tous les documents

Console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Cliquez sur Exporter.

  5. Cliquez sur l'option Exporter la base de données complète.

  6. Sous Sélectionner une destination, saisissez le nom d'un bucket Cloud Storage ou utilisez le bouton Parcourir pour sélectionner un bucket.

  7. Cliquez sur Exporter.

La console revient à la page Importations/Exportations. Si l'opération démarre correctement, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Utilisez la commande firestore export pour exporter tous les documents de votre base de données, en remplaçant [BUCKET_NAME] par le nom de votre bucket Cloud Storage. Ajoutez l'indicateur --async pour empêcher l'outil gcloud d'attendre la fin de l'opération.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Remplacez les éléments suivants :

  • BUCKET_NAME: organisez vos exportations en ajoutant un préfixe de fichier après le nom du bucket, par exemple BUCKET_NAME/my-exports-folder/export-name. Si vous ne fournissez pas de préfixe de fichier, le service d'exportation géré en crée un en fonction de l'horodatage actuel.

  • DATABASE: nom de la base de données à partir de laquelle vous souhaitez exporter les documents. Pour la base de données par défaut, utilisez --database='(default)'.

Lorsque vous lancez une exportation, la fermeture du terminal n'annule pas l'opération. Pour en savoir plus, consultez la section Annuler une opération.

Exporter des collections spécifiques

Console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Cliquez sur Exporter.

  5. Cliquez sur l'option Exporter un ou plusieurs groupes de collections. Dans le menu déroulant, sélectionnez un ou plusieurs groupes de collections.

  6. Sous Sélectionner une destination, saisissez le nom d'un bucket Cloud Storage ou utilisez le bouton Parcourir pour sélectionner un bucket.

  7. Cliquez sur Exporter.

La console revient à la page Importations/Exportations. Si l'opération démarre correctement, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Pour exporter des groupes de collections spécifiques, utilisez l'indicateur --collection-ids. L'opération n'exporte que les groupes de collections avec les ID de collection saisis. Le groupe de collections inclut toutes les collections et sous-collections (à n'importe quel chemin d'accès) avec cet ID de collection spécifique.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

Par exemple, vous pouvez concevoir une collection restaurants dans la base de données foo pour inclure plusieurs sous-collections, telles que ratings, reviews ou outlets. Pour exporter une collection restaurants et reviews spécifique, votre commande se présente comme suit:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=restaurants,reviews \
--database='cymbal'

Exporter à partir d'un horodatage PITR

Vous pouvez exporter votre base de données vers Cloud Storage à partir de données PITR à l'aide de la commande gcloud firestore export. Vous pouvez exporter des données PITR dont le code temporel correspond à une minute entière au cours des sept derniers jours, mais pas avant le earliestVersionTime. Si les données n'existent plus au code temporel spécifié, l'opération d'exportation échoue.

L'exportation PITR est compatible avec tous les filtres, y compris l'exportation de tous les documents et l'exportation de collections spécifiques.

  1. Exportez la base de données en spécifiant le paramètre snapshot-time vers l'horodatage de récupération souhaité.

    gcloud

    Exécutez la commande suivante pour exporter la base de données vers votre bucket.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    Où :

    • PITR_TIMESTAMP : code temporel PITR à la minute près, par exemple 2023-05-26T10:20:00.00Z.

    Notez les points suivants avant d'exporter des données PITR:

    • Spécifiez l'horodatage au format RFC 3339. Par exemple, 2020-09-01T23:59:30.234233Z.
    • Assurez-vous que le code temporel que vous spécifiez est composé d'une minute complète au cours des sept derniers jours, mais pas antérieure à earliestVersionTime. Si les données n'existent plus au code temporel spécifié, une erreur est générée.
    • L'échec de l'exportation PITR ne vous est pas facturé.

Importer des données

Une fois que vous avez exporté des fichiers dans Cloud Storage, vous pouvez les réimporter dans votre projet ou dans un autre projet. Notez les points suivants concernant les opérations d'importation :

  • Lorsque vous importez des données, les index requis sont mis à jour à l'aide des définitions d'index actuelles de votre base de données. Une exportation ne contient pas de définitions d'index.

  • Les importations n'attribuent pas de nouveaux ID de document. Les importations utilisent les ID capturés au moment de l'exportation. Lors de l'importation d'un document, son ID est réservé pour éviter les conflits d'ID. Si un document portant le même ID existe déjà, l'importation écrase le document existant.

  • Si un document de votre base de données n'est pas affecté par une importation, il restera dans votre base de données une fois l'importation terminée.

  • Les opérations d'importation ne déclenchent pas Cloud Functions. Les écouteurs d'instantanés reçoivent les mises à jour liées aux opérations d'importation.

  • Le nom du fichier .overall_export_metadata doit correspondre au nom de son dossier parent:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata

    Si vous déplacez ou copiez les fichiers de sortie d'une exportation, conservez le même nom de fichier PARENT_FOLDER_NAME et .overall_export_metadata.

Importer tous les documents d'une exportation

Console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Cliquez sur Importer.

  5. Dans le champ Nom de fichier, saisissez le nom du fichier .overall_export_metadata à partir d'une opération d'exportation terminée. Vous pouvez vous servir du bouton Parcourir pour vous aider à sélectionner le fichier.

  6. Cliquez sur Importer.

La console revient à la page Importations/Exportations. Si l'opération démarre correctement, la page ajoute une entrée à la page des importations et exportations récentes. En cas d'échec, la page affiche un message d'erreur.

gcloud

Utilisez la commande firestore import pour importer des documents d'une exportation précédente.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Remplacez les éléments suivants :

  • BUCKET_NAME/EXPORT_PREFIX: emplacement de vos fichiers d'exportation.

  • DATABASE: nom de la base de données. Pour la base de données par défaut, utilisez --database='(default)'.

Exemple :

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Vous pouvez confirmer l'emplacement de vos fichiers d'exportation dans le navigateur Cloud Storage de la console Google Cloud:

Ouvrir le navigateur Cloud Storage

Lorsque vous lancez une importation, la fermeture du terminal n'annule pas l'opération. Pour en savoir plus, consultez la section Annuler une opération.

Importer des collections spécifiques

Console Google Cloud

Vous ne pouvez pas sélectionner de collections spécifiques dans la console. Utilisez plutôt gcloud.

gcloud

Pour importer des groupes de collections spécifiques à partir d'un ensemble de fichiers d'exportation, utilisez l'indicateur --collection-ids. L'opération n'importe que les groupes de collections ayant les ID de collection donnés. Le groupe de collections inclut toutes les collections et sous-collections (à n'importe quel chemin d'accès) avec l'ID de collection spécifié. Spécifiez le nom de la base de données à l'aide de l'option --database. Pour la base de données par défaut, utilisez --database='(default)'.

Seule l'exportation de groupes de collections spécifiques permet l'importation de groupes de collections spécifiques. Vous ne pouvez pas importer des collections spécifiques à partir d'une exportation de tous les documents.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

Importer une exportation PITR

Suivez les étapes de la section Importer tous les documents pour importer votre base de données exportée. Si un document existe déjà dans votre base de données, il sera écrasé.

Gérer des opérations d'exportation et d'importation

Une fois que vous avez lancé une opération d'exportation ou d'importation, Firestore attribue un nom unique à l'opération. Vous pouvez utiliser le nom de l'opération pour supprimer, annuler ou vérifier l'état de l'opération.

Les noms des opérations sont précédés du préfixe projects/[PROJECT_ID]/databases/(default)/operations/, par exemple :

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Cependant, vous pouvez omettre le préfixe lorsque vous spécifiez un nom d'opération pour les commandes describe, cancel et delete.

Répertorier toutes les opérations d'exportation et d'importation

Console Google Cloud

Vous pouvez afficher la liste des opérations d'exportation et d'importation récentes sur la page Importation/Exportation de la console Google Cloud.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

gcloud

Utilisez la commande operations list pour afficher toutes les opérations d'exportation et d'importation en cours et terminées :

gcloud firestore operations list

Vérifier l'état de l'opération

Console Google Cloud

Vous pouvez afficher l'état d'une opération d'exportation ou d'importation récente sur la page Importation/Exportation de la console Google Cloud.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

gcloud

Utilisez la commande operations describe pour afficher l'état d'une opération d'exportation ou d'importation.

gcloud firestore operations describe [OPERATION_NAME]

Estimer le délai d'exécution

Une requête permettant d'obtenir l'état d'une opération de longue durée renvoie les métriques workEstimated et workCompleted. Chacune de ces métriques est renvoyée à la fois en nombre d'octets et en nombre d'entités :

  • workEstimated indique le nombre total estimé d'octets et de documents qu'une opération va traiter. Firestore peut omettre cette métrique s'il ne peut pas effectuer d'estimation.

  • workCompleted indique le nombre d'octets et de documents traités jusqu'à présent. Une fois l'opération terminée, la valeur indique le nombre total d'octets et de documents réellement traités, qui peut être supérieur à la valeur de workEstimated.

Divisez workCompleted par workEstimated pour obtenir une estimation approximative de la progression. Cette estimation peut être inexacte, car elle dépend de la collecte de statistiques retardée.

Annuler une opération

Console Google Cloud

Vous pouvez annuler une opération d'exportation ou d'importation en cours d'exécution sur la page Importation/Exportation de la console Google Cloud.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

Dans le tableau Recent imports and exports (Importations et exportations récentes), les opérations en cours d'exécution incluent un bouton Cancel (Annuler) dans la colonne Completed (Terminé). Cliquez sur le bouton Cancel (Annuler) pour arrêter l'opération. Le bouton affiche un message Annulation, puis passe à l'état Annulé lorsque l'opération s'arrête complètement.

gcloud

Utilisez la commande operations cancel pour arrêter une opération en cours :

gcloud firestore operations cancel [OPERATION_NAME]

L'annulation d'une opération en cours n'annule pas l'opération. Une opération d'exportation annulée laisse des documents déjà exportés dans Cloud Storage, et une opération d'importation annulée conserve les mises à jour déjà effectuées dans votre base de données. Vous ne pouvez pas importer une exportation partiellement terminée.

Supprimer une opération

Utilisez la commande gcloud firestore operations delete pour supprimer une opération de la liste des opérations récentes. Cette commande ne supprime pas les fichiers d'exportation de Cloud Storage.

gcloud firestore operations delete [OPERATION_NAME]

Facturation et tarifs des opérations d'exportation et d'importation

Vous devez activer la facturation pour votre projet Google Cloud pour pouvoir utiliser le service d'exportation et d'importation géré.

Les opérations d'exportation et d'importation sont facturées pour les lectures et écritures de documents aux tarifs indiqués dans les tarifs de Firestore. Les opérations d'exportation entraînent une opération de lecture par document exporté. Les opérations d'importation entraînent une opération d'écriture par document importé.

Les fichiers de sortie stockés dans Cloud Storage sont comptabilisés dans les coûts de stockage des données de Cloud Storage.

Les frais liés aux opérations d'exportation et d'importation ne sont pas comptabilisés dans votre plafond budgétaire. Les opérations d'exportation ou d'importation ne déclencheront pas vos alertes budgétaires Google Cloud avant la fin de leur exécution. De même, les opérations de lecture et d'écriture effectuées lors d'une opération d'exportation ou d'importation sont appliquées à votre quota quotidien une fois l'opération terminée. Les opérations d'exportation et d'importation n'ont aucune incidence sur l'utilisation affichée dans la section "Utilisation" de la console.

Afficher les coûts d'exportation et d'importation

Les opérations d'exportation et d'importation appliquent le libellé goog-firestoremanaged:exportimport aux opérations facturées. Sur la page Rapports Cloud Billing, vous pouvez utiliser ce libellé pour afficher les coûts liés aux opérations d'importation et d'exportation :

Accéder au libellé "goog-firestoremanaged" depuis le menu des filtres

Exporter vers BigQuery

Vous pouvez charger les données d'une exportation Firestore vers BigQuery, mais uniquement si vous avez spécifié un filtre collection-ids. Pour en savoir plus, consultez la section Charger des données à partir d'exportations Firestore.

Limite des colonnes BigQuery

BigQuery impose une limite de 10 000 colonnes par table. Les opérations d'exportation Firestore génèrent un schéma de table BigQuery pour chaque groupe de collections. Dans ce schéma, chaque nom de champ unique au sein d'un groupe de collections devient une colonne du schéma.

Si le schéma BigQuery d'un groupe de collections dépasse 10 000 colonnes, l'opération d'exportation Firestore tente de rester sous la limite des colonnes en traitant les champs de mappage comme des octets. Si avec cette conversion le nombre de colonnes est inférieur à 10 000, vous pouvez charger les données dans BigQuery, mais vous ne pouvez pas interroger les sous-champs dans les champs de mappage. Si le nombre de colonnes dépasse toujours 10 000, l'opération d'exportation ne génère pas de schéma BigQuery pour le groupe de collections et vous ne pouvez pas charger ses données dans BigQuery.

Format d'exportation et fichiers de métadonnées

Le résultat d'une exportation gérée utilise le format de journal LevelDB.

Fichiers de métadonnées :

Une opération d'exportation crée un fichier de métadonnées pour chaque groupe de collections que vous spécifiez. Les fichiers de métadonnées sont généralement nommés ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata.

Les fichiers de métadonnées sont des tampons de protocole. Il est possible de les décoder avec le compilateur de protocole protoc. Par exemple, vous pouvez décoder un fichier de métadonnées afin de déterminer les groupes de collections que les fichiers d'exportation contiennent :

protoc --decode_raw < export0.export_metadata

Migration des agents de service

Au lieu d'utiliser le compte de service App Engine, Firestore utilise un agent de service Firestore pour autoriser les opérations d'importation et d'exportation. L'agent de service et le compte de service utilisent les conventions d'attribution de noms suivantes:

Agent de service Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Firestore utilisait auparavant le compte de service par défaut App Engine au lieu de l'agent de service Firestore. Si votre base de données utilise toujours le compte de service App Engine pour importer ou exporter des données, nous vous recommandons de suivre les instructions de cette section pour migrer vers l'agent de service Firestore.

Compte de service App Engine
PROJECT_ID@appspot.gserviceaccount.com

L'agent de service Firestore est préférable, car il est spécifique à Firestore. Le compte de service App Engine est partagé par plusieurs services.

Afficher le compte d'autorisation

Vous pouvez afficher le compte que vos opérations d'importation et d'exportation utilisent pour autoriser les requêtes à partir de la page Importation/Exportation de la console Google Cloud. Vous pouvez également vérifier si votre base de données utilise déjà l'agent de service Firestore.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.
  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Affichez le compte d'autorisation à côté du libellé Les jobs d'importation/exportation s'exécutent en tant que.

Si votre projet n'utilise pas l'agent de service Firestore, vous pouvez migrer vers l'agent de service Firestore à l'aide de l'une des techniques suivantes:

La première de ces techniques est préférable, car elle localise le champ d'application des effets en un seul projet Firestore. La deuxième technique n'est pas privilégiée, car elle ne migre pas les autorisations des bucket Cloud Storage existantes. Cependant, il offre une conformité de sécurité au niveau de l'organisation.

Migrer en vérifiant et en mettant à jour les autorisations des bucket Cloud Storage

Le processus de migration comporte deux étapes:

  1. Mettre à jour les autorisations du bucket Cloud Storage Pour en savoir plus, consultez la section suivante.
  2. Confirmez la migration vers l'agent de service Firestore.

Autorisations concernant les buckets de l'agent de service

Pour toutes les opérations d'exportation ou d'importation utilisant un bucket Cloud Storage dans un autre projet, vous devez accorder des autorisations à l'agent de service Firestore pour ce bucket. Par exemple, les opérations qui déplacent des données vers un autre projet doivent accéder à un bucket de cet autre projet. Sinon, ces opérations échoueront après la migration vers l'agent de service Firestore.

Les workflows d'importation et d'exportation qui restent dans le même projet ne nécessitent pas de modifier les autorisations. L'agent de service Firestore peut accéder par défaut aux buckets du même projet.

Mettez à jour les autorisations des buckets Cloud Storage d'autres projets pour donner accès à l'agent de service service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com. Attribuez le rôle Firestore Service Agent à l'agent de service.

Le rôle Firestore Service Agent accorde des autorisations de lecture et d'écriture pour un bucket Cloud Storage. Si vous ne devez accorder que des autorisations en lecture ou en écriture, utilisez un rôle personnalisé.

Le processus de migration décrit dans la section suivante vous aide à identifier les buckets Cloud Storage nécessitant des mises à jour des autorisations.

Migrer un projet vers l'agent de service Firestore

Procédez comme suit pour migrer du compte de service App Engine vers l'agent de service Firestore. Une fois terminée, la migration est irréversible.

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.
  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Si votre projet n'a pas encore migré vers l'agent de service Firestore, une bannière décrivant la migration et un bouton Vérifier l'état du bucket s'affichent. L'étape suivante vous aidera à identifier et à corriger les éventuelles erreurs d'autorisation.

    Cliquez sur Vérifier l'état du bucket.

    Un menu s'affiche avec l'option permettant d'effectuer la migration et la liste des buckets Cloud Storage. Le chargement de la liste peut prendre quelques minutes.

    Cette liste comprend les buckets qui ont été récemment utilisés dans les opérations d'importation et d'exportation, mais qui n'accordent actuellement pas d'autorisations de lecture et d'écriture à l'agent de service Firestore.

  5. Notez le nom principal de l'agent de service Firestore de votre projet. Le nom de l'agent de service apparaît sous le libellé Agent de service auquel donner l'accès.
  6. Pour chaque bucket de la liste que vous utiliserez pour de futures opérations d'importation ou d'exportation, procédez comme suit:

    1. Sur la ligne de table de ce bucket, cliquez sur Corriger. La page des autorisations de ce bucket s'ouvre dans un nouvel onglet.

    2. Cliquez sur Ajouter.
    3. Dans le champ Nouveaux comptes principaux, saisissez le nom de votre agent de service Firestore.
    4. Dans le champ Sélectionner un rôle, sélectionnez Agents de service > Agent de service Firestore.
    5. Cliquez sur Enregistrer.
    6. Revenez à l'onglet de la page Importation/Exportation Firestore.
    7. Répétez ces étapes pour les autres buckets de la liste. Veillez à afficher toutes les pages de la liste.
  7. Cliquez sur Migrer vers l'agent de service Firestore. Si vous avez toujours des buckets dont les vérifications d'autorisation ont échoué, vous devez confirmer votre migration en cliquant sur Migrer.

    Une alerte vous avertit lorsque la migration est terminée. Cette opération est irréversible.

Afficher l'état de la migration

Pour vérifier l'état de la migration de votre projet:

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.
  3. Dans le menu de navigation, cliquez sur Importer/Exporter.

  4. Recherchez le compte principal à côté du libellé Les jobs d'importation/exportation s'exécutent en tant que.

    Si le compte principal est service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, votre projet a déjà migré vers l'agent de service Firestore. Cette opération est irréversible.

    Si le projet n'a pas été migré, une bannière s'affiche en haut de la page avec un bouton Check Bucket Status (Vérifier l'état du bucket). Pour terminer la migration, consultez Migrer vers l'agent de service Firestore.

Ajouter une contrainte de règle à l'échelle de l'organisation

  • Définissez la contrainte suivante dans la règle de votre organisation:

    Exiger l'agent de service Firestore pour l'importation/exportation (firestore.requireP4SAforImportExport).

    Cette contrainte nécessite des opérations d'importation et d'exportation pour utiliser l'agent de service Firestore afin d'autoriser les requêtes. Pour définir cette contrainte, consultez la page Créer et gérer des règles d'administration .

L'application de cette contrainte de règle d'administration n'accorde pas automatiquement les autorisations de bucket Cloud Storage appropriées pour l'agent de service Firestore.

Si la contrainte crée des erreurs d'autorisation pour des workflows d'importation ou d'exportation, vous pouvez la désactiver pour revenir au compte de service par défaut. Après avoir vérifié et mis à jour les autorisations du bucket Cloud Storage, vous pouvez réactiver la contrainte.