arrow_back

Cómo usar Cloud Run Functions para cargar datos en BigQuery

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Cómo usar Cloud Run Functions para cargar datos en BigQuery

Lab 45 minutos universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

Una Cloud Run Function es un fragmento de código que se ejecuta en respuesta a un evento, como una solicitud HTTP, un mensaje desde un servicio de mensajería o la carga de un archivo. Los eventos de la nube representan todo lo que ocurre en tu entorno de nube. Pueden ser cambios en la información de una base de datos, la adición de archivos a un sistema de almacenamiento o la creación de una nueva instancia de máquina virtual.

Debido a que las Cloud Run Functions se basan en eventos, solo se ejecutan cuando ocurre una acción. Esto las convierte en una buena opción para las tareas que necesitan realizarse rápido o que no es necesario que se ejecuten todo el tiempo.

En este lab práctico, se muestra cómo crear, implementar y probar una Cloud Run Function que cargará una tabla de BigQuery con el SDK de Google Cloud.

Actividades

  • Crear una Cloud Run Function
  • Implementar y probar la Cloud Run Function
  • Visualizar los datos en los registros de BigQuery y Cloud Run Functions

Configuración y requisitos

En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:

    • El botón Abrir la consola de Google Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haga clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda. Ícono del menú de navegación

Activa Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1: Habilita las APIs

En esta tarea, habilitarás las APIs pertinentes antes de crear las Cloud Run Functions.

  1. En Cloud Shell, ejecuta el siguiente comando para establecer tu variable de ID del proyecto:
export PROJECT_ID=$(gcloud config get-value project)
  1. Ejecuta los siguientes comandos para establecer la variable de región:
export REGION={{{project_0.default_region | "REGION"}}} gcloud config set compute/region $REGION
  1. Ejecuta los siguientes comandos para establecer las variables de configuración:
gcloud config set run/region $REGION gcloud config set run/platform managed gcloud config set eventarc/location $REGION
  1. Ejecuta los siguientes comandos para habilitar todos los servicios necesarios:
gcloud services enable \ artifactregistry.googleapis.com \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ logging.googleapis.com \ pubsub.googleapis.com Nota: Para Eventarc, es posible que pasen unos minutos antes de que todos los permisos se propaguen al agente de servicio.

Tarea 2: Establece los permisos necesarios

En esta tarea, otorgarás a la cuenta de servicio predeterminada de Compute Engine la capacidad de recibir eventos de Eventarc y, al agente de servicio de Cloud Storage, el permiso para publicar mensajes en temas de Pub/Sub, lo que habilita flujos de trabajo basados en eventos y acciones activadas por almacenamiento.

  1. En Cloud Shell, ejecuta el siguiente comando para establecer la variable PROJECT_NUMBER:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
  1. Ejecuta el siguiente comando para otorgar a la cuenta de servicio predeterminada de Compute Engine dentro de tu proyecto los permisos necesarios para recibir eventos de Eventarc:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
  1. Ejecuta los siguientes comandos para recuperar el agente de servicio de Cloud Storage para tu proyecto y otorgarle el permiso para publicar mensajes en temas de Pub/Sub:
SERVICE_ACCOUNT="$(gcloud storage service-agent --project=$PROJECT_ID)" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'

Tarea 3: Crea la función

En esta tarea, crearás una función simple llamada loadBigQueryFromAvro. Esta función lee un archivo Avro que se sube a Cloud Storage y, luego, crea y carga una tabla en BigQuery.

  1. En Cloud Shell, ejecuta el siguiente comando para crear y abrir un archivo llamado index.js:
nano index.js
  1. Copia el siguiente código para la Cloud Function en el archivo index.js:
/** * index.js Cloud Function - Avro on GCS to BQ */ const {Storage} = require('@google-cloud/storage'); const {BigQuery} = require('@google-cloud/bigquery'); const storage = new Storage(); const bigquery = new BigQuery(); exports.loadBigQueryFromAvro = async (event, context) => { try { // Check for valid event data and extract bucket name if (!event || !event.bucket) { throw new Error('Invalid event data. Missing bucket information.'); } const bucketName = event.bucket; const fileName = event.name; // BigQuery configuration const datasetId = 'loadavro'; const tableId = fileName.replace('.avro', ''); const options = { sourceFormat: 'AVRO', autodetect: true, createDisposition: 'CREATE_IF_NEEDED', writeDisposition: 'WRITE_TRUNCATE', }; // Load job configuration const loadJob = bigquery .dataset(datasetId) .table(tableId) .load(storage.bucket(bucketName).file(fileName), options); await loadJob; console.log(`Job ${loadJob.id} completed. Created table ${tableId}.`); } catch (error) { console.error('Error loading data into BigQuery:', error); throw error; } };
  1. En nano, presiona (Ctrl + x) y, después, (Y). Luego, presiona Intro para guardar el archivo.
Crear una función

Tarea 4: Crea un bucket de Cloud Storage y un conjunto de datos de BigQuery

En esta tarea, configurarás la infraestructura en segundo plano para almacenar los recursos que se usan para invocar la Cloud Run Function (un bucket de Cloud Storage) y, luego, almacenar el resultado en BigQuery cuando se complete.

  1. En Cloud Shell, ejecuta el siguiente comando para crear un nuevo bucket de Cloud Storage como la ubicación de etapa intermedia:
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
  1. Ejecuta el siguiente comando para crear un conjunto de datos de BigQuery en el que se almacenarán los datos:
bq mk -d loadavro Crear un bucket de Cloud Storage y un conjunto de datos de BigQuery

Tarea 5: Implementa tu función

En esta tarea, implementarás la nueva Cloud Run Function y la activarás para que se carguen los datos en BigQuery.

  1. En Cloud Shell, ejecuta el siguiente comando que instala las dos bibliotecas de JavaScript para leer desde Cloud Storage y almacenar el resultado en BigQuery:
npm install @google-cloud/storage @google-cloud/bigquery
  1. Ejecuta el siguiente comando para implementar la función:
gcloud functions deploy loadBigQueryFromAvro \ --gen2 \ --runtime nodejs20 \ --source . \ --region $REGION \ --trigger-resource gs://$PROJECT_ID \ --trigger-event google.storage.object.finalize \ --memory=512Mi \ --timeout=540s \ --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com Nota: Si ves un mensaje de error relacionado con la propagación del agente de servicio de Eventarc, espera unos minutos y vuelve a probar el comando.
  1. Ejecuta el siguiente comando para confirmar que el activador se creó correctamente. El resultado será similar al siguiente ejemplo:
gcloud eventarc triggers list --location=$REGION NAME: loadbigqueryfromavro-177311 TYPE: google.cloud.storage.object.v1.finalized DESTINATION: Cloud Functions: loadBigQueryFromAvro ACTIVE: Yes LOCATION: europe-west1
  1. Ejecuta el siguiente comando para descargar el archivo Avro que la Cloud Run Function procesará para almacenarlo en BigQuery:
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
  1. Ejecuta el siguiente comando para mover el archivo Avro al bucket de Cloud Storage de etapa intermedia que creaste anteriormente. Esta acción activará la Cloud Run Function:
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}} Implementar una función

Tarea 6: Confirma que los datos se cargaron en BigQuery

En esta tarea, confirmarás que los datos procesados por la Cloud Run Function se cargaron correctamente en BigQuery. Para ello, consultarás la tabla loadavro.campaigns con el comando bq.

  1. En Cloud Shell, ejecuta el siguiente comando para ver los datos en la nueva tabla de BigQuery con el comando bq:
bq query \ --use_legacy_sql=false \ 'SELECT * FROM `loadavro.campaigns`;' Nota: Por lo general, la Cloud Run Function se procesará muy rápido, pero es posible que la consulta ejecutada en BigQuery no devuelva resultados. Si este es tu caso, espera un momento y vuelve a ejecutar la consulta.

La consulta devolvería resultados similares a los siguientes:

Resultado de ejemplo:

+------------+--------+---------------------+--------+---------------------+----------+-----+ | created_at | period | campaign_name | amount | advertising_channel | bid_type | id | +------------+--------+---------------------+--------+---------------------+----------+-----+ | 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 | | 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 | | 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 | | 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 | | 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 | | 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 | | 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 | | 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 | | 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 | | 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 | +------------+--------+---------------------+--------+---------------------+----------+-----+

Tarea 7: Consulta los registros

En esta tarea, recuperarás todas las entradas de registro que están asociadas con el servicio llamado loadBigQueryFromAvro.

  1. En Cloud Shell, ejecuta el siguiente comando para examinar los registros de tu Cloud Run Function:
gcloud logging read "resource.labels.service_name=loadBigQueryFromAvro"

Los mensajes en el registro serán similares a los siguientes:

resource: labels: configuration_name: loadbigqueryfromavro location: europe-west1 project_id: qwiklabs-gcp-04-16fde64676e4 revision_name: loadbigqueryfromavro-00001-wim service_name: loadbigqueryfromavro type: cloud_run_revision spanId: '5804952652695382607' textPayload: | Job undefined completed. Created table campaigns. timestamp: '2025-03-10T17:24:43.560594Z'

¡Felicitaciones!

Usaste el SDK de Google Cloud para crear, implementar y probar una Cloud Run Function que creó y cargó una tabla de BigQuery.

Copyright 2025 Google LLC. Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.