Programar una exportación

En esta página se describe cómo programar exportaciones de tus datos de Firestore en el modo Datastore. Para ejecutar exportaciones de forma programada, te recomendamos que uses funciones de Cloud Run y Cloud Scheduler. Crea una función de Cloud Functions que inicie exportaciones y usa Cloud Scheduler para ejecutarla.

Antes de empezar

Antes de programar exportaciones de datos, debes completar las siguientes tareas:

  1. Habilita la facturación de tu Google Cloud proyecto. Solo los proyectos con la facturación habilitada pueden usar la función de exportación e importación. Google Cloud
  2. Crea un segmento de Cloud Storage en una ubicación cercana a la ubicación de tu base de datos en el modo de almacén de datos. Las operaciones de exportación requieren un segmento de Cloud Storage de destino. No puede usar un contenedor de pago del solicitante para las operaciones de exportación.

Crear una función de Cloud Functions y una tarea de Cloud Scheduler

Sigue estos pasos para 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 datastore_export Cloud Functions

  1. Ve a la página Cloud Functions de la consola de Google Cloud :

    Ir a Cloud Functions

  2. Haz clic en Crear función.
  3. Introduce un nombre de función, como datastoreExport.
  4. En Activador, selecciona Cloud Pub/Sub. Cloud Scheduler usa tu tema de Pub/Sub para llamar a tu función.
  5. En el campo Tema, selecciona Crear un tema. Introduce un nombre para el tema de Pub/Sub, como startDatastoreExport. Anota el nombre del tema, ya que lo necesitarás para crear tu tarea de Cloud Scheduler.
  6. En Código fuente, selecciona Editor insertado.
  7. En el desplegable Entorno de ejecución, selecciona Python 3.7.
  8. Introduce el siguiente código para main.py:
    # Copyright 2021 Google LLC All Rights Reserved.
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    import base64
    import json
    import os
    
    from google.cloud import datastore_admin_v1
    
    project_id = os.environ.get("GCP_PROJECT")
    client = datastore_admin_v1.DatastoreAdminClient()
    
    
    def datastore_export(event, context):
        """Triggers a Datastore export from a Cloud Scheduler job.
    
        Args:
            event (dict): event[data] must contain a json object encoded in
                base-64. Cloud Scheduler encodes payloads in base-64 by default.
                Object must include a 'bucket' value and can include 'kinds'
                and 'namespaceIds' values.
            context (google.cloud.functions.Context): The Cloud Functions event
                metadata.
        """
        if "data" in event:
            # Triggered via Cloud Scheduler, decode the inner data field of the json payload.
            json_data = json.loads(base64.b64decode(event["data"]).decode("utf-8"))
        else:
            # Otherwise, for instance if triggered via the Cloud Console on a Cloud Function, the event is the data.
            json_data = event
    
        bucket = json_data["bucket"]
        entity_filter = datastore_admin_v1.EntityFilter()
    
        if "kinds" in json_data:
            entity_filter.kinds = json_data["kinds"]
    
        if "namespaceIds" in json_data:
            entity_filter.namespace_ids = json_data["namespaceIds"]
    
        export_request = datastore_admin_v1.ExportEntitiesRequest(
            project_id=