Solución:
Es posible importar / exportar entre proyectos. Estos son los pasos que me han funcionado:
Primero, asegúrese de que el gcloud
La herramienta de línea de comandos está instalada. Las instrucciones sobre la configuración y la información completa sobre el proceso de exportación / importación se pueden leer en la página de documentación de Firebase sobre Exportación e Importación de Firestore.
Antes de continuar, configure el proyecto de gcloud en el proyecto desde el que desea fuente tu información:
gcloud config set project [PROJECT_ID]
Luego, usando el Consola de Google Cloud aplicación web, asegúrese de que Almacenamiento en la nube Se ha creado un depósito en el proyecto que será el fuente de los datos.
Por ejemplo, para el depósito de origen, puede crear un depósito como:
gs://my-source-project-export
.
Puedes nombrar el depósito como quieras, siempre que elijas algo único.
La exportación de los datos de origen se puede completar con un comando. Por ejemplo, si desea exportar solo el cameras
y radios
colecciones a tu my-source-project-export
cubo, con un directorio fechado para identificar la exportación, incluye el opcional collection-ids
bandera, como sigue:
gcloud beta firestore export gs://my-source-project-export/export-20190113_2109 --collection-ids="cameras",'radios'
Omitir la bandera copiaría TODAS las colecciones.
los herramienta CLI de gcloud debe completar la exportación sin problemas.
Ahora, para completar el importar, primero cambiamos el proyecto de gcloud al objetivo para nuestros datos:
gcloud config set project [PROJECT_ID]
Entonces, podemos intentar la importación:
gcloud beta firestore import --collection-ids="cameras",'radios' gs://my-source-project-export/export-20190113_2109
La operación puede fallar debido a problemas de permisos. Si es así, informará qué cuenta de servicio necesita tener acceso al depósito. Para resolver los problemas de permisos, simplemente puede usar el navegador de almacenamiento de Google Cloud Console para administrar los permisos para el fuente Cubeta. La cuenta de servicio requerida debe agregarse al miembros lista con el rol Storage Admin
.
Una vez que se corrigen los permisos, se puede volver a intentar la operación. Para operaciones de larga ejecución, se puede recuperar una lista de operaciones y sus estados usando el siguiente comando:
gcloud beta firestore operations list
Una vez que se completa la importación, puede ser conveniente revocar los permisos otorgados a la cuenta de servicio, si corresponde, para evitar problemas de seguridad no deseados.
Espero que ayude.
La respuesta aceptada no funcionó para mí. Independientemente de los permisos otorgados en el depósito de origen, la importación siempre fallaba con PERMISSION DENIED: The caller does not have permission
La solución fue crear otra cuenta de servicio. Creé una cuenta de servicio en el proyecto de destino con Cloud Datastore Import Export Admin
y Storage Admin
roles. Luego agregué esta cuenta de servicio al proyecto de origen IAM con los mismos roles. Después de hacer esto, el siguiente proceso funcionó para mí:
gcloud auth activate-service-account --key-file=./mynewserviceaccount.json
gcloud beta firestore export gs://mysourceprojectbucket --project mysourceprojectid
gcloud beta firestore import gs://mysourceprojectbucket/WHATEVER_NAME_FROM_EXPORT --project mydestinationproject