Exporter et importer des données

Vous pouvez utiliser le service d'exportation et d'importation géré par Cloud 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 Cloud Firestore peuvent être importées dans une autre base de données Cloud Firestore. Vous pouvez également charger des exportations Cloud Firestore dans BigQuery.

Cette page explique comment exporter et importer des documents Cloud 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é Cloud Firestore est disponible via l'outil de ligne de commande gcloud et l'API Cloud 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. Activez 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 Cloud 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 Cloud 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 Cloud 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 Cloud Firestore pour autoriser les opérations Cloud Storage. L'agent de service Cloud Firestore utilise la convention d'attribution de noms suivante:

Agent de service Cloud 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 Cloud Firestore nécessite un accès 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 Cloud Firestore, l'agent de service Cloud Firestore peut y accéder par défaut.

Si le bucket Cloud Storage se trouve dans un autre projet, vous devez autoriser l'agent de service Cloud 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 Cloud 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 votre numéro de projet, qui permet de nommer votre agent de service Cloud 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 sur la page Importations/Exportations de la console Google Cloud. Vous pouvez également vérifier si votre base de données utilise l'agent de service Cloud Firestore ou l'ancien compte de service App Engine.

  1. Afficher le compte d'autorisation à côté du libellé Les tâches d'importation/exportation s'exécutent avec.

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 Google Cloud Console 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 des collections restaurants et reviews spécifiques, votre commande se présente comme suit:

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

Exporter à partir d'un code temporel 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 à l'horodatage spécifié, l'opération d'exportation échoue.

L'opération d'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 avec une précision de minute, 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. Exemple :2020-09-01T23:59:30.234233Z
    • Assurez-vous que l'horodatage que vous spécifiez est un code temporel entier de la minute au cours des sept derniers jours, mais pas avant le earliestVersionTime. Si les données n'existent plus à l'horodatage spécifié, une erreur est générée.
    • Les exportations PITR ayant échoué ne vous sont pas facturées.

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 à celui 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 vérifier 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

Google Cloud Console

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 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. Spécifiez le nom de la base de données à l'aide de l'indicateur --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 la procédure décrite dans 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, Cloud 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 Importations/Exportations 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 Importations/Exportations de Google Cloud Console.

  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. Cloud 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 depuis la page Importations/Exportations 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.

Tableau "Importations et exportations récentes" de la console affichant une importation de données en cours avec une option "Annuler" pour arrêter l'opération.

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 avant de 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 la section Tarifs de Cloud Firestore. Les opérations d'exportation entraînent une opération de lecture par document exporté. Les opérations d'importation génèrent 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 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 Cloud Firestore vers BigQuery, mais uniquement si vous avez spécifié un filtre collection-ids. Consultez la section Charger des données à partir d'exportations Cloud Firestore.

Limite de colonnes BigQuery

BigQuery impose une limite de 10 000 colonnes par table. Les opérations d'exportation Cloud 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 Cloud 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 de l'agent de service

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

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

Cloud Firestore utilisait auparavant le compte de service par défaut App Engine au lieu de l'agent de service Cloud 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 passer à l'agent de service Cloud Firestore.

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

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

Afficher le compte d'autorisation

Vous pouvez consulter le compte utilisé par vos opérations d'importation et d'exportation pour autoriser les requêtes sur la page Importations/Exportations de la console Google Cloud. Vous pouvez également vérifier si votre base de données utilise déjà l'agent de service Cloud 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. Consultez le compte d'autorisation à côté du libellé Les tâches d'importation/exportation s'exécutent avec.

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

La première de ces techniques est préférable, car elle localise la portée de l'effet à un seul projet Cloud Firestore. La deuxième technique n'est pas recommandée, car elle ne migre pas les autorisations de bucket Cloud Storage existantes. Il offre toutefois la conformité en matière de sécurité au niveau de l'organisation.

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

Le processus de migration comporte deux étapes:

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

Autorisations de bucket pour l'agent de service

Pour toute opération d'exportation ou d'importation qui utilise un bucket Cloud Storage dans un autre projet, vous devez accorder des autorisations à l'agent de service Cloud 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 ce projet. Sinon, ces opérations échouent après la migration vers l'agent de service Cloud Firestore.

Les workflows d'importation et d'exportation qui restent dans le même projet ne nécessitent pas de modification des autorisations. Par défaut, l'agent de service Cloud Firestore peut accéder aux buckets du même projet.

Mettez à jour les autorisations des buckets Cloud Storage d'autres projets pour accorder l'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 de lecture ou d'écriture, utilisez un rôle personnalisé.

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

Migrer un projet vers l'agent de service Firestore

Suivez les étapes suivantes pour passer du compte de service App Engine à l'agent de service Cloud 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 été migré vers l'agent de service Cloud Firestore, une bannière décrivant la migration et un bouton Vérifier l'état du bucket s'affichent. L'étape suivante vous aide à identifier et à corriger les erreurs d'autorisation potentielles.

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

    Un menu s'affiche avec l'option de terminer la migration et une liste de buckets Cloud Storage. Le chargement de la liste peut prendre quelques minutes.

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

  5. Notez le nom principal de l'agent de service Cloud Firestore de votre projet. Le nom de l'agent de service s'affiche 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 du tableau 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 Cloud Firestore.
    4. Dans le champ Select a role (Sélectionner un rôle), sélectionnez Service Agents > Firestore Service Agent (Agents de service > Agent de service Firestore).
    5. Cliquez sur Enregistrer.
    6. Revenez à l'onglet de la page Cloud Firestore Importations/Exportations.
    7. Répétez ces étapes pour les autres buckets de la liste. Veillez à consulter toutes les pages de la liste.
  7. Cliquez sur Migrer vers l'agent de service Firestore. Si des buckets présentent toujours des échecs de vérification des autorisations, vous devez confirmer la migration en cliquant sur Migrer.

    Une alerte vous informe 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 l'utilisateur principal à côté de l'étiquette Les tâches d'importation/exportation s'exécutent avec.

    Si l'entité principale est service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, votre projet a déjà été migré vers l'agent de service Cloud Firestore. La migration est irréversible.

    Si le projet n'a pas été migré, une bannière s'affiche en haut de la page avec un bouton Vérifier l'état du bucket. Consultez la section Migrer vers l'agent de service Firestore pour effectuer la migration.

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

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

    Agent de service Firestore requis pour l'importation/exportation (firestore.requireP4SAforImportExport).

    Cette contrainte exige que les opérations d'importation et d'exportation utilisent l'agent de service Cloud Firestore pour autoriser les requêtes. Pour définir cette contrainte, consultez la section Créer et gérer des règles d'administration .

L'application de cette contrainte liée aux règles d'administration n'accorde pas automatiquement les autorisations de bucket Cloud Storage appropriées à l'agent de service Cloud 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. Une fois que vous avez vérifié et mis à jour les autorisations du bucket Cloud Storage, vous pouvez réactiver la contrainte.