Exportar e importar datos

Puedes usar el servicio gestionado de exportación e importación de Firestore para recuperar datos que hayas eliminado por accidente y exportarlos para procesarlos sin conexión. Puedes exportar todos los documentos o solo colecciones concretas. Del mismo modo, puedes importar todos los datos de una exportación o solo colecciones específicas. Los datos exportados de una base de datos de Firestore se pueden importar a otra base de datos de Firestore. También puedes cargar exportaciones de Firestore en BigQuery.

En esta página se describe cómo exportar e importar documentos de Firestore mediante el servicio de exportación e importación gestionado y Cloud Storage. El servicio de importación y exportación gestionado de Firestore está disponible a través de la herramienta de línea de comandos gcloud y de la API de Firestore (REST y RPC).

Antes de empezar

Para poder usar el servicio de exportación e importación gestionado, debes completar las siguientes tareas:

  1. Habilita la facturación de tu Google Cloud proyecto. Solo los Google Cloud proyectos con la facturación habilitada pueden usar las funciones de exportación e importación.
  2. Crea un segmento de Cloud Storage para tu proyecto en una ubicación cercana a la ubicación de tu base de datos de Firestore. No puedes usar un cubo de pago del solicitante para las operaciones de exportación e importación.
  3. Asegúrate de que tu cuenta tiene los permisos necesarios para Firestore y Cloud Storage. Si eres el propietario del proyecto, tu cuenta tiene los permisos necesarios. De lo contrario, los siguientes roles conceden los permisos necesarios para las operaciones de exportación e importación y para acceder a Cloud Storage:

Permisos de agente de servicio

Las operaciones de exportación e importación usan un agente de servicio de Firestore para autorizar las operaciones de Cloud Storage. El agente de servicio de Firestore usa la siguiente convención de nomenclatura:

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

Para obtener más información sobre los agentes de servicio, consulta el artículo Agentes de servicio.

El agente de servicio de Firestore necesita acceder al segmento de Cloud Storage que se usa en una operación de exportación o importación. Si tu segmento de Cloud Storage está en el mismo proyecto que tu base de datos de Firestore, el agente de servicio de Firestore podrá acceder al segmento de forma predeterminada.

Si el segmento de Cloud Storage está en otro proyecto, debes dar acceso al agente de servicio de Firestore al segmento de Cloud Storage.

Asignar roles al agente de servicio

Puede usar la herramienta de línea de comandos gsutil para asignar uno de los roles que se indican a continuación. Por ejemplo, para asignar el rol Administrador de almacenamiento al agente de servicio de Firestore, ejecuta lo siguiente:

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

Sustituye PROJECT_NUMBER por el número de tu proyecto, que se usa para asignar un nombre al agente de servicio de Firestore. Para ver el nombre del agente de servicio, consulta Ver el nombre del agente de servicio.

También puedes asignar este rol mediante la Google Cloud consola.

Ver el nombre del agente de servicio

Puede ver la cuenta que usan sus operaciones de importación y exportación para autorizar solicitudes en la página Importar/Exportar de la consola de Google Cloud . También puedes ver si tu base de datos usa el agente de servicio de Firestore o la cuenta de servicio antigua de App Engine.

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Consulta la cuenta de autorización junto a la etiqueta Las tareas de importación o exportación se ejecutan como.

El agente de servicio necesita el rol Storage Admin para el segmento de Cloud Storage que se va a usar en la operación de exportación o importación.

Configurar gcloud en tu proyecto

Puedes iniciar operaciones de importación y exportación a través de la Google Cloud consola o de la herramienta de línea de comandos gcloud. Para usar gcloud, configura la herramienta de línea de comandos y conéctate a tu proyecto de una de las siguientes formas:

Exportar datos

Una operación de exportación copia los documentos de tu base de datos en un conjunto de archivos de un segmento de Cloud Storage. Ten en cuenta que una exportación no es una instantánea exacta de la base de datos tomada en el momento en que se inicia la exportación. Una exportación puede incluir los cambios realizados mientras se ejecutaba la operación.

Exportación de todos los documentos

Consola de Google Cloud

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Haz clic en Exportar.

  5. Haz clic en la opción Exportar toda la base de datos.

  6. Debajo de Elegir destino, introduce el nombre de un segmento de Cloud Storage o usa el botón Buscar para seleccionar un segmento.

  7. Haz clic en Exportar.

La consola vuelve a la página Importar/Exportar. Si la operación se inicia correctamente, la página añade una entrada a la página de importaciones y exportaciones recientes. Si se produce un error, la página muestra un mensaje de error.

gcloud

Usa el comando firestore export para exportar todos los documentos de tu base de datos. Sustituye [BUCKET_NAME] por el nombre de tu segmento de Cloud Storage. Añade la marca --async para evitar que la herramienta gcloud espere a que se complete la operación.

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

Haz los cambios siguientes:

  • BUCKET_NAME: organiza tus exportaciones añadiendo un prefijo de archivo después del nombre del contenedor. Por ejemplo, BUCKET_NAME/my-exports-folder/export-name. Si no proporcionas un prefijo de archivo, el servicio de exportación gestionado creará uno basado en la marca de tiempo actual.

  • DATABASE: nombre de la base de datos de la que quieres exportar los documentos. Para la base de datos predeterminada, usa --database='(default)'.

Una vez que inicies una operación de exportación, cerrar la terminal no cancelará la operación. Consulta cómo cancelar una operación.

Exportar colecciones específicas

Consola de Google Cloud

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Haz clic en Exportar.

  5. Haz clic en la opción Exportar uno o varios grupos de colecciones. En el menú desplegable, selecciona uno o varios grupos de colecciones.

  6. Debajo de Elegir destino, introduce el nombre de un segmento de Cloud Storage o usa el botón Buscar para seleccionar un segmento.

  7. Haz clic en Exportar.

La consola vuelve a la página Importar/Exportar. Si la operación se inicia correctamente, la página añade una entrada a la página de importaciones y exportaciones recientes. Si se produce un error, la página muestra un mensaje de error.

gcloud

Para exportar grupos de colecciones específicos, usa la marca --collection-ids. La operación solo exporta los grupos de colecciones con los IDs de colección proporcionados. El grupo de colecciones incluye todas las colecciones y subcolecciones (en cualquier ruta) que tengan el ID de colección especificado.

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

Por ejemplo, puedes diseñar una colección restaurants en la base de datos foo para incluir varias subcolecciones, como ratings, reviews o outlets. Para exportar colecciones restaurants y reviews específicas, el comando debe tener el siguiente formato:

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

Exportar desde una marca de tiempo de PITR

Puedes exportar tu base de datos a Cloud Storage desde datos de PITR. Puede exportar datos de PITR cuya marca de tiempo sea una marca de tiempo de un minuto completo de los últimos siete días, pero no anterior al earliestVersionTime. Si los datos ya no existen en la marca de tiempo especificada, la operación de exportación fallará.

La operación de exportación de PITR admite todos los filtros, incluida la exportación de todos los documentos y de colecciones específicas.

Ten en cuenta los siguientes puntos antes de exportar datos de PITR:

  • Especifica la marca de tiempo en formato RFC 3339. Por ejemplo, 2023-05-26T10:20:00.00Z.
  • Asegúrate de que la marca de tiempo que especifiques sea una marca de tiempo de un minuto completo de los últimos siete días, pero no anterior a la earliestVersionTime. Si los datos ya no existen en la marca de tiempo especificada, se genera un error.
  • No se te cobrará por una exportación de PITR fallida.

Consola

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos
  2. Selecciona una base de datos de la lista.
  3. En el menú de navegación, haga clic en Importar/Exportar.
  4. Haz clic en Exportar.
  5. Configure la fuente de exportación para que exporte toda la base de datos o solo colecciones específicas.
  6. En la sección Elige el estado de la base de datos que quieres exportar, selecciona Exportar desde un momento anterior.

    Selecciona la hora de la captura que quieras usar para la exportación

  7. En la sección Destino, introduce el nombre de un segmento de Cloud Storage o usa el botón Buscar para seleccionar un segmento.
  8. Haz clic en Exportar.

    La consola vuelve a la página Importar/Exportar. Si la operación se inicia correctamente, la página añade una entrada a la página de importaciones y exportaciones recientes. Si se produce un error, la página muestra un mensaje de error.

gcloud

Puedes exportar tu base de datos a Cloud Storage desde datos de PITR mediante el comando gcloud firestore export.

Exporta la base de datos y especifica el parámetro snapshot-time con una marca de tiempo de recuperación. Ejecuta el siguiente comando para exportar la base de datos a tu bucket.

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

Donde PITR_TIMESTAMP es una marca de tiempo de PITR con una granularidad de minutos, por ejemplo, 2023-05-26T10:20:00.00Z.

Añade la marca --collection-ids para exportar colecciones específicas.

Importación de datos

Una vez que tengas los archivos de exportación en Cloud Storage, podrás importar los documentos de esos archivos a tu proyecto o a otro. Ten en cuenta los siguientes puntos sobre las operaciones de importación:

  • Cuando importa datos, los índices obligatorios se actualizan con las definiciones de índice actuales de su base de datos. Una exportación no contiene definiciones de índice.

  • Las importaciones no asignan nuevos IDs de documento. Las importaciones usan los IDs capturados en el momento de la exportación. Mientras se importa un documento, se reserva su ID para evitar colisiones de IDs. Si ya existe un documento con el mismo ID, la importación sobrescribe el documento.

  • Si un documento de tu base de datos no se ve afectado por una importación, permanecerá en ella después de la importación.

  • Las operaciones de importación no activan Cloud Functions. Los procesadores de capturas sí reciben actualizaciones relacionadas con las operaciones de importación.

  • El nombre del archivo .overall_export_metadata debe coincidir con el nombre de su carpeta principal:

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

    Si mueves o copias los archivos de salida de una exportación, mantén el mismo nombre de archivo PARENT_FOLDER_NAME y .overall_export_metadata.

Importar todos los documentos de una exportación

Consola de Google Cloud

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Haz clic en Importar.

  5. En el campo Nombre de archivo, introduce el nombre de un archivo .overall_export_metadata de una operación de exportación completada. Puedes usar el botón Examinar para seleccionar el archivo.

  6. Haz clic en Importar.

La consola vuelve a la página Importar/Exportar. Si la operación se inicia correctamente, la página añade una entrada a la página de importaciones y exportaciones recientes. Si se produce un error, la página muestra un mensaje de error.

gcloud

Usa el comando firestore import para importar documentos de una operación de exportación anterior.

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

Haz los cambios siguientes:

  • BUCKET_NAME/EXPORT_PREFIX: ubicación de tus archivos de exportación.

  • DATABASE: nombre de la base de datos. Para la base de datos predeterminada, usa --database='(default)'.

Por ejemplo:

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

Puede confirmar la ubicación de los archivos de exportación en el explorador de Cloud Storage de la Google Cloud consola:

Abrir el navegador de Cloud Storage

Una vez que inicies una operación de importación, cerrar la terminal no la cancelará. Consulta cómo cancelar una operación.

Importar colecciones específicas

Consola de Google Cloud

No puede seleccionar colecciones específicas en la consola. En su lugar, usa gcloud.

gcloud

Para importar grupos de colecciones específicos de un conjunto de archivos de exportación, usa la marca --collection-ids. La operación importa solo los grupos de colecciones con los IDs de colección especificados. El grupo de colecciones incluye todas las colecciones y subcolecciones (en cualquier ruta) con el ID de colección especificado. Especifica el nombre de la base de datos con la marca --database. Para la base de datos predeterminada, usa --database='(default)'.

Solo se pueden importar grupos de colecciones específicos si se exportan grupos de colecciones específicos. No puedes importar colecciones específicas de una exportación de todos los documentos.

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

Importar una exportación de PITR

Sigue los pasos que se indican en Importar todos los documentos para importar la base de datos que has exportado. Si ya existe algún documento en tu base de datos, se sobrescribirá.

Gestionar operaciones de exportación e importación

Después de iniciar una operación de exportación o importación, Firestore asigna un nombre único a la operación. Puedes usar el nombre de la operación para eliminarla, cancelarla o comprobar su estado.

Los nombres de las operaciones van precedidos de projects/[PROJECT_ID]/databases/(default)/operations/, por ejemplo:

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

Sin embargo, puedes omitir el prefijo al especificar un nombre de operación para los comandos describe, cancel y delete.

Mostrar todas las operaciones de exportación e importación

Consola de Google Cloud

Puedes ver una lista de las operaciones de importación y exportación recientes en la página Importar/Exportar de la consola de Google Cloud .

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

gcloud

Usa el comando operations list para ver todas las operaciones de importación y exportación en curso y completadas recientemente:

gcloud firestore operations list

Comprobar el estado de la operación

Consola de Google Cloud

Puedes ver el estado de una operación de importación o exportación reciente en la página Importar/Exportar de la consola Google Cloud .

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

gcloud

Usa el comando operations describe para mostrar el estado de una operación de exportación o importación.

gcloud firestore operations describe [OPERATION_NAME]

Estimar el tiempo de finalización

Una solicitud del estado de una operación de larga duración devuelve las métricas workEstimated y workCompleted. Cada una de estas métricas se devuelve tanto en número de bytes como en número de entidades:

  • workEstimated muestra el número total estimado de bytes y documentos que procesará una operación. Firestore puede omitir esta métrica si no puede hacer una estimación.

  • workCompleted muestra el número de bytes y documentos procesados hasta el momento. Una vez completada la operación, el valor muestra el número total de bytes y documentos que se han procesado, que puede ser superior al valor de workEstimated.

Divide workCompleted entre workEstimated para obtener una estimación aproximada del progreso. Esta estimación puede ser imprecisa, ya que depende de la recogida de estadísticas con retraso.

Cancelar una operación

Consola de Google Cloud

Puedes cancelar una operación de importación o exportación en curso en la página Importar/Exportar de la Google Cloud consola.

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Importar/Exportar.

En la tabla Importaciones y exportaciones recientes, las operaciones en curso incluyen un botón Cancelar en la columna Completado. Haz clic en el botón Cancelar para detener la operación. El botón cambia a Cancelando y, a continuación, a Cancelado cuando la operación se detiene por completo.

Tabla de importaciones y exportaciones recientes en la consola que muestra una importación de datos en curso con una opción Cancelar para detener la operación.

gcloud

Usa el comando operations cancel para detener una operación en curso:

gcloud firestore operations cancel [OPERATION_NAME]

Si cancelas una operación en curso, no se deshace la operación. Si cancelas una operación de exportación, los documentos que ya se hayan exportado permanecerán en Cloud Storage. Si cancelas una operación de importación, las actualizaciones que ya se hayan realizado en tu base de datos se mantendrán. No puedes importar una exportación que no se haya completado.

Eliminar una operación

Usa el comando gcloud firestore operations delete para quitar una operación de la lista de operaciones recientes. Este comando no eliminará los archivos de exportación de Cloud Storage.

gcloud firestore operations delete [OPERATION_NAME]

Facturación y precios de las operaciones de exportación e importación

Debes habilitar la facturación en tu proyecto Google Cloud para usar el servicio de exportación e importación gestionado.

Las operaciones de exportación e importación se cobran por lecturas y escrituras de documentos según las tarifas indicadas en la página de precios de Firestore. Las operaciones de exportación conllevan una operación de lectura por cada documento exportado. Las operaciones de importación conllevan una operación de escritura por cada documento importado.

Los archivos de salida almacenados en Cloud Storage se tienen en cuenta para los costes de almacenamiento de datos de Cloud Storage.

Las operaciones de exportación o importación no activarán las alertas de Google Cloud presupuesto hasta que se completen. Las operaciones de exportación e importación no afectarán al uso que se muestra en la sección de uso de la consola.

Ver los costes de exportación e importación

Las operaciones de importación y exportación aplican la etiqueta goog-firestoremanaged:exportimport a las operaciones facturadas. En la página Informes de Facturación de Cloud, puede usar esta etiqueta para ver los costes relacionados con las operaciones de importación y exportación:

Accede a la etiqueta goog-firestoremanaged desde el menú de filtros.

Exportar a BigQuery

Puedes cargar datos de una exportación de Firestore en BigQuery, pero solo si has especificado un collection-ids. Consulta Cargar datos desde exportaciones de Firestore.

Límite de columnas de BigQuery

BigQuery impone un límite de 10.000 columnas por tabla. Las operaciones de exportación de Firestore generan un esquema de tabla de BigQuery para cada grupo de colecciones. En este esquema, cada nombre de campo único de un grupo de colecciones se convierte en una columna del esquema.

Si el esquema de BigQuery de un grupo de colecciones supera las 10.000 columnas, la operación de exportación de Firestore intentará no superar el límite de columnas tratando los campos de mapa como bytes. Si esta conversión reduce el número de columnas a menos de 10.000, puede cargar los datos en BigQuery, pero no puede consultar los subcampos de los campos de mapa. Si el número de columnas sigue siendo superior a 10.000, la operación de exportación no generará un esquema de BigQuery para el grupo de recolección y no podrá cargar sus datos en BigQuery.

Exportar archivos de formato y metadatos

La salida de una exportación gestionada usa el formato de registro de LevelDB.

Archivos de metadatos

Una operación de exportación crea un archivo de metadatos para cada grupo de colecciones que especifiques. Los archivos de metadatos suelen llamarse ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata.

Los archivos de metadatos son búferes de protocolo y puedes decodificarlos con el protoccompilador de protocolos. Por ejemplo, puedes decodificar un archivo de metadatos para determinar los grupos de colecciones que contienen los archivos de exportación:

protoc --decode_raw < export0.export_metadata

Migración de agentes de servicio

Firestore usa un agente de servicio de Firestore para autorizar las operaciones de importación y exportación en lugar de usar la cuenta de servicio de App Engine. El agente de servicio y la cuenta de servicio usan las siguientes convenciones de nomenclatura:

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

Anteriormente, Firestore usaba la cuenta de servicio predeterminada de App Engine en lugar del agente de servicio de Firestore. Si tu base de datos sigue usando la cuenta de servicio de App Engine para importar o exportar datos, te recomendamos que sigas las instrucciones de esta sección para migrar al agente de servicio de Firestore.

Cuenta de servicio de App Engine
PROJECT_ID@appspot.gserviceaccount.com

Es preferible usar el agente de servicio de Firestore porque es específico de Firestore. La cuenta de servicio de App Engine se comparte entre varios servicios.

Ver cuenta de autorización

Puede ver qué cuenta usan sus operaciones de importación y exportación para autorizar solicitudes en la página Importar/Exportar de la consola de Google Cloud . También puedes ver si tu base de datos ya usa el agente de servicio de Firestore.

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.
  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Consulta la cuenta de autorización junto a la etiqueta Las tareas de importación o exportación se ejecutan como.

Si tu proyecto no usa el agente de servicio de Firestore, puedes migrar a él con cualquiera de estas técnicas:

Es preferible usar la primera técnica porque localiza el ámbito del efecto en un solo proyecto de Firestore. No se recomienda usar la segunda técnica porque no migra los permisos de los segmentos de Cloud Storage. Sin embargo, sí ofrece cumplimiento de seguridad a nivel de organización.

Migrar comprobando y actualizando los permisos de los segmentos de Cloud Storage

El proceso de migración consta de dos pasos:

  1. Actualiza los permisos de los segmentos de Cloud Storage. En la siguiente sección encontrarás más información al respecto.
  2. Confirma la migración al agente de servicio de Firestore.

Permisos de segmento del agente de servicio

En las operaciones de importación o exportación que usen un segmento de Cloud Storage de otro proyecto, debes conceder permisos al agente de servicio de Firestore para ese segmento. Por ejemplo, las operaciones que mueven datos a otro proyecto necesitan acceder a un segmento de ese otro proyecto. De lo contrario, estas operaciones fallarán después de migrar al agente de servicio de Firestore.

Los flujos de trabajo de importación y exportación que se mantienen en el mismo proyecto no requieren cambios en los permisos. El agente de servicio de Firestore puede acceder a los segmentos del mismo proyecto de forma predeterminada.

Actualiza los permisos de los segmentos de Cloud Storage de otros proyectos para dar acceso al service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com agente de servicio. Asigna el rol Firestore Service Agent al agente de servicio.

El rol Firestore Service Agent concede permisos de lectura y escritura para un segmento de Cloud Storage. Si solo necesitas conceder permisos de lectura o escritura, usa un rol personalizado.

El proceso de migración que se describe en la siguiente sección te ayuda a identificar los contenedores de Cloud Storage que pueden requerir actualizaciones de permisos.

Migrar un proyecto al agente de servicio de Firestore

Sigue estos pasos para migrar de la cuenta de servicio de App Engine al agente de servicio de Firestore. Una vez completada, la migración no se puede deshacer.

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.
  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Si tu proyecto aún no se ha migrado al agente de servicio de Firestore, verás un banner que describe la migración y un botón Comprobar estado del segmento. En el siguiente paso, se explica cómo identificar y corregir posibles errores de permisos.

    Haz clic en Comprobar estado del segmento.

    Aparecerá un menú con la opción de completar la migración y una lista de segmentos de Cloud Storage. La lista puede tardar unos minutos en cargarse.

    En esta lista se incluyen los segmentos que se han usado recientemente en operaciones de importación y exportación, pero que actualmente no tienen permisos de lectura y escritura para el agente de servicio de Firestore.

  5. Anota el nombre principal del agente de servicio de Firestore de tu proyecto. El nombre del agente de servicio aparece debajo de la etiqueta Agente de servicio al que se le va a dar acceso.
  6. En cada uno de los contenedores de la lista que vayas a usar en futuras operaciones de importación o exportación, sigue estos pasos:

    1. En la fila de la tabla de este segmento, haz clic en Corregir. Se abrirá la página de permisos de ese contenedor en una pestaña nueva.

    2. Haz clic en Añadir.
    3. En el campo New principals (Principales nuevas), introduce el nombre de tu agente de servicio de Firestore.
    4. En el campo Seleccionar un rol, selecciona Agentes de servicio > Agente de servicio de Firestore.
    5. Haz clic en Guardar.
    6. Vuelve a la pestaña con la página Importar/Exportar de Firestore.
    7. Repite estos pasos con el resto de los segmentos de la lista. Asegúrate de ver todas las páginas de la lista.
  7. Haz clic en Migrar al agente de servicio de Firestore. Si aún tienes contenedores con comprobaciones de permisos fallidas, debes confirmar la migración haciendo clic en Migrar.

    Recibirás una alerta cuando se complete la migración. La migración no se puede deshacer.

Ver el estado de la migración

Para verificar el estado de migración de tu proyecto, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.
  3. En el menú de navegación, haga clic en Importar/Exportar.

  4. Busca la cuenta principal junto a la etiqueta Tareas de importación o exportación ejecutadas como.

    Si el principal es service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, tu proyecto ya se ha migrado al agente de servicio de Firestore. La migración no se puede deshacer.

    Si el proyecto no se ha migrado, aparecerá un banner en la parte superior de la página con el botón Comprobar estado del contenedor. Consulta el artículo Migrar al agente de servicio de Firestore para completar la migración.

Añadir una restricción de política de toda la organización

  • Define la siguiente restricción en la política de tu organización:

    Requerir el agente de servicio de Firestore para importar o exportar (firestore.requireP4SAforImportExport).

    Esta restricción requiere que las operaciones de importación y exportación usen el agente de servicio de Firestore para autorizar las solicitudes. Para definir esta restricción, consulta el artículo Crear y gestionar políticas de la organización .

Al aplicar esta restricción de política de organización, no se conceden automáticamente los permisos adecuados del segmento de Cloud Storage al agente de servicio de Firestore.

Si la restricción genera errores de permisos en algún flujo de trabajo de importación o exportación, puedes inhabilitarla para volver a usar la cuenta de servicio predeterminada. Después de comprobar y actualizar los permisos del segmento de Cloud Storage, puedes volver a habilitar la restricción.