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.
-
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
-
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.
-
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.
-
Haz clic en Siguiente.
-
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.
-
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.
-
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.
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.
-
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

-
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:

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.
- En Cloud Shell, ejecuta el siguiente comando para establecer tu variable de ID del proyecto:
export PROJECT_ID=$(gcloud config get-value project)
- Ejecuta los siguientes comandos para establecer la variable de región:
export REGION={{{project_0.default_region | "REGION"}}}
gcloud config set compute/region $REGION
- 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
- 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.
- En Cloud Shell, ejecuta el siguiente comando para establecer la variable PROJECT_NUMBER:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
- 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"
- 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.
- En Cloud Shell, ejecuta el siguiente comando para crear y abrir un archivo llamado
index.js
:
nano index.js
- 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;
}
};
- 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.
- 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
- 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.
- 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
- 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.
- 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
- 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
- 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
.
- 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.
- 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.