En esta página, se describe cómo programar exportaciones de tus datos de Firestore en modo Datastore. Para ejecutar exportaciones programadas, te recomendamos usar funciones de Cloud Run y Cloud Scheduler. Crea una función de Cloud Functions que inicie las exportaciones y usa Cloud Scheduler para ejecutar la función.
Antes de comenzar
Antes de programar la exportación de datos, debes completar las siguientes tareas:
- Habilita la facturación para tu proyecto de Google Cloud. Solo los proyectos de Google Cloud que tengan la facturación habilitada pueden usar la función de importación y exportación.
- Crea un bucket de Cloud Storage en una ubicación cercana a la base de datos en modo Datastore. Las operaciones de exportación requieren un bucket de Cloud Storage de destino. No puedes usar un bucket de pagos del solicitante para las operaciones de exportación.
Crea una función de Cloud Functions y un trabajo de Cloud Scheduler
Sigue los pasos a continuación a fin de crear una función de Cloud Functions que inicie las exportaciones de datos y un trabajo de Cloud Scheduler para llamar a esa función:
Crea una función de Cloud Functions datastore_export
-
Ve a la página de Cloud Functions en la consola de Google Cloud:
- Haz clic en Crear función.
- Ingresa un nombre de función, como
datastoreExport
. - En Activador, selecciona Cloud Pub/Sub. Trigger usa el tema de Pub/Sub para llamar a la función.
- En el campo Tema, selecciona Crear un tema. Ingresa un nombre para el tema de Pub/Sub, como
startDatastoreExport
. Anota el nombre del tema, ya que lo necesitarás para crear el trabajo de Cloud Scheduler. - En Código fuente, selecciona Editor directo.
- En el menú desplegable Entorno de ejecución, selecciona Python 3.7.
- Ingresa el siguiente código para
main.py
: - En
requirements.txt
, agrega la siguiente dependencia: - En Punto de entrada, ingresa
datastore_export
, el nombre de la función enmain.py
. - Haz clic en Desplegar para implementar la Cloud Function.
Configura los permisos de acceso
A continuación, otorga permiso a la función de Cloud Functions para iniciar las operaciones de exportación y escribir en el bucket de Cloud Storage.
Esta función de Cloud Functions usa la cuenta de servicio predeterminada de tu proyecto para autenticar y autorizar las operaciones de exportación. Cuando creas un proyecto, se crea una cuenta de servicio predeterminada con el siguiente nombre:
project_id@appspot.gserviceaccount.com
Esta cuenta de servicio necesita permiso para iniciar operaciones de exportación y escribir en el bucket de Cloud Storage. Para otorgar esos permisos, asigna las siguientes funciones de IAM a la cuenta de servicio predeterminada:
Cloud Datastore Import Export Admin
- Rol
Storage Object User
en el bucket
Puedes usar Google Cloud CLI para asignar estos roles. Puedes acceder a esta herramienta desde Cloud Shell en la consola de Google Cloud:
Iniciar Cloud Shell
-
Asigna la función Administrador de importación y exportación de Cloud Datastore: Reemplaza project_id y ejecuta el siguiente comando:
gcloud projects add-iam-policy-binding project_id \ --member serviceAccount:project_id@appspot.gserviceaccount.com \ --role roles/datastore.importExportAdmin
-
Asigna el rol Usuario de objetos de almacenamiento en tu bucket. Reemplaza bucket_name y project_id, y ejecuta el siguiente comando:
gcloud storage buckets add-iam-policy-binding gs://bucket_name \ --member=serviceAccount:project_id@appspot.gserviceaccount.com \ --role=roles/storage.objectUser
Crea un trabajo de Cloud Scheduler
A continuación, crea un trabajo de Cloud Scheduler que llame a la función de Cloud Functions datastore_export
:
Ve a la página de Cloud Scheduler en la consola de Google Cloud:
Haz clic en Crear trabajo.
Ingresa un Nombre para el trabajo, como
scheduledDatastoreExport
.Ingresa una Frecuencia en formato unix-cron.
Selecciona una Zona horaria.
En Destino, selecciona Pub/Sub. En el campo Tema, ingresa el nombre del tema de Pub/Sub que definiste junto con la función de Cloud Functions,
startDatastoreExport
en el ejemplo anterior.En el campo Carga útil, ingresa un objeto JSON para configurar la operación de exportación. La función de Cloud Functions
datastore_export
requiere un valorbucket
. De manera opcional, puedes incluir valoreskinds
onamespaceIDs
para establecer un filtro de entidad, por ejemplo:Exporta todas las entidades
{ "bucket": "gs://bucket_name" }
Exporta con filtro de entidad
Exporta entidades de tipo
User
oTask
desde todos los espacios de nombres:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"] }
Exporta entidades de tipo
User
oTask
desde los espacios de nombres predeterminados yTesters
. Usa una string vacía (""
) para especificar el espacio de nombres predeterminado:{ "bucket": "gs://bucket_name", "kinds": ["User", "Task"], "namespaceIds": ["", "Testers"] }
Exporta entidades de cualquier tipo desde los espacios de nombres predeterminados y
Testers
. Usa una string vacía (""
) para especificar el espacio de nombres predeterminado:{ "bucket": "gs://bucket_name", "namespaceIds": ["", "Testers"] }
En el ejemplo anterior,
bucket_name
es el nombre del depósito de Cloud Storage.Haz clic en Crear.
Prueba tus exportaciones programadas
Para probar tu Cloud Function y el trabajo de Cloud Scheduler, ejecuta tu Trabajo de Cloud Scheduler en la página Cloud Scheduler de la consola de Google Cloud. Si se ejecuta de forma correcta, se inicia una operación de exportación real.
Ve a la página de Cloud Scheduler en la consola de Google Cloud.
Ir a Cloud SchedulerEn la fila de tu nuevo trabajo de Cloud Scheduler, haz clic en Ejecutar ahora.
Después de unos segundos, haz clic en Actualizar. El trabajo de Cloud Scheduler debe actualizar la columna de resultados a Correcto y Última ejecución a la hora actual.
En la página de Cloud Scheduler solo se confirma que el trabajo envió un mensaje al tema de Pub/Sub. Para ver si la solicitud de exportación se realizó de forma correcta, consulta los registros de la función de Cloud Functions.
Visualiza los registros de Cloud Function
Para ver si la Cloud Function inició correctamente una operación de exportación, consulta la página Explorador de registros en la consola de Google Cloud.
El registro de la función de Cloud Functions informa los errores y las iniciaciones de exportación correctas.
Visualiza el progreso de la exportación
Puedes usar el comando gcloud datastore operations list
para ver el progreso de tus operaciones de exportación. Consulta enumera todas las operaciones de larga duración.
Una vez que se completa una operación de exportación, puedes ver los archivos de salida en el bucket de Cloud Storage: El servicio de exportación administrado usa una marca de tiempo para organizar tus operaciones de exportación: