Google Cloud Run Functions es la versión más reciente de la oferta de funciones como servicio de Google Cloud. Esta versión incluye un conjunto de funciones avanzadas y está potenciada por Cloud Run y Eventarc, lo que brinda un control más avanzado sobre el rendimiento y la escalabilidad, y mayor control sobre el entorno de ejecución de las funciones y los activadores de más de 90 fuentes de eventos.
En este lab, crearás Cloud Run Functions que respondan a solicitudes HTTP y funciones controladas por eventos que se activen con eventos de Cloud Storage. También implementarás múltiples revisiones de Cloud Run Functions y explorarás los nuevos parámetros de configuración.
Novedades
Esta nueva versión de Cloud Run Functions ofrece una experiencia de FaaS mejorada con la tecnología de Cloud Run, Cloud Build, Artifact Registry y Eventarc.
Procesamiento de solicitudes más largo: Ejecuta tus Cloud Run Functions por más de 5 minutos (el valor predeterminado), lo que facilita ejecutar cargas de trabajo basadas en solicitudes más largas, como procesar grandes flujos de datos desde Cloud Storage o BigQuery. El límite es de 60 minutos para las funciones de HTTP y de 10 minutos para las funciones controladas por eventos.
Instancias más grandes: Aprovecha hasta 16 GB de RAM y 4 CPU virtuales en Cloud Run Functions, lo que permite cargas de trabajo más paralelas, de mayor tamaño en memoria y de procesamiento intensivo.
Simultaneidad: Procesa hasta 1,000 solicitudes simultáneas con una sola instancia de función, lo que minimiza los inicios en frío y mejora la latencia durante el escalamiento.
Instancias mínimas: Brinda instancias preparadas con anterioridad para reducir los inicios en frío y asegurarte de que el tiempo de arranque de la aplicación no afecte su rendimiento.
División del tráfico: Admite múltiples versiones de tus funciones, divide el tráfico entre ellas y reviértelas a una versión anterior.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
Escribir una función que responda a solicitudes HTTP y, luego, implementarla con la consola de Google Cloud
Escribir una función que responda a eventos de Cloud Storage y, luego, implementarla desde el entorno local de Cloud Shell
Escribir pruebas de unidades para la función y probarla de forma local
Implementar múltiples revisiones de una Cloud Run Function con la consola de Google Cloud
Probar la revisión más reciente de tu función y verificar que funcione como se espera
Configuración
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Accede a Qwiklabs desde una ventana de incógnito.
Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
Si usa otras credenciales, se generarán errores o incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperació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.
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:
La primera función que crearás será una función de Node.js autenticada que responda a solicitudes HTTP para convertir un valor de temperatura de grados Fahrenheit a grados Celsius y devuelva el valor de temperatura convertido.
Crea la función
Para acceder a Cloud Run Functions, en el menú de navegación (), haz clic en Cloud Run Functions.
Nota: Si no aparece en el menú de navegación, haz clic en Ver todos los productos. Desplázate a la sección Sin servidores, haz clic en el pin junto a Cloud Run Functions y, luego, haz clic en Cloud Run Functions.
Se te redireccionará a Cloud Run en la consola.
Haz clic en Escribir una función.
En Nombre del servicio, escribe temperature-converter.
En Región, selecciona la región .
En Autenticación, selecciona Autenticación obligatoria.
Desplázate hacia abajo y expande Contenedores, Volúmenes, Redes y Seguridad.
En Escalamiento de revisión, ingresa 1 en Número máximo de instancias.
Deja la configuración restante con sus valores predeterminados y haz clic en Crear.
Nuestra función se implementará en Node.js. En la pestaña Fuente, haz clic en el ícono de edición junto a Imagen base, selecciona la versión más reciente del entorno de ejecución del lenguaje Node.js y haz clic en Guardar.
En Punto de entrada de la función, escribe convertTemp.
En el editor de código intercalado, reemplaza cualquier código de muestra existente por el siguiente en el archivo index.js:
const functions = require('@google-cloud/functions-framework');
functions.http('convertTemp', (req, res) => {
var dirn = req.query.convert;
var ctemp = (req.query.temp - 32) * 5/9;
var target_unit = 'Celsius';
if (req.query.temp === undefined) {
res.status(400);
res.send('Temperature value not supplied in request.');
}
if (dirn === undefined)
dirn = process.env.TEMP_CONVERT_TO;
if (dirn === 'ctof') {
ctemp = (req.query.temp * 9/5) + 32;
target_unit = 'Fahrenheit';
}
res.send(`Temperature in ${target_unit} is: ${ctemp.toFixed(2)}.`);
});
Esta es una función de HTTP sencilla en Node.js que convierte un valor de temperatura en grados Fahrenheit o Celsius que se pasa en la solicitud, y responde con el valor convertido.
Functions Framework es un framework y una biblioteca de FaaS (funciones como servicio) de código abierto que te permite escribir funciones ligeras que se ejecutan en diferentes entornos, como Cloud Run Functions, tu máquina de desarrollo local y Cloud Run.
Para implementar la función, haz clic en Guardar y volver a implementar. Espera a que se creen el servicio de Cloud Build y el servicio de Cloud Run subyacente.
Después de que se implementa la función, en la página de detalles Funciones, se muestra una marca de verificación verde junto al nombre de la función.
En Cloud Shell, recupera el URI HTTP de la función y almacénalo en una variable de entorno:
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una función de HTTP
Tarea 3: Crea una función de Cloud Storage
En esta tarea, crearás una función controlada por eventos en Node.js que responda a eventos de un bucket de Cloud Storage.
Configuración
Para usar los activadores de Cloud Storage con Cloud Run Functions, el agente de servicio de Cloud Storage debe tener el rol de IAM Publicador de Pub/Sub (roles/pubsub.publisher) en tu proyecto.
Las funciones de Cloud Storage se basan en notificaciones de Pub/Sub desde Cloud Storage y admiten los tipos de eventos finalize, delete, archive y metadata update.
Configura una variable de entorno para la cuenta de servicio del agente de Cloud Storage:
SERVICE_ACCOUNT=$(gcloud storage service-agent)
Otorga el rol Publicador de Pub/Sub al agente de servicio de Cloud Storage en tu proyecto. Un agente de servicio es una cuenta de servicio administrada por Google que permite que el servicio acceda a tus recursos.
Para activar la función en una tarea posterior, subirás a Cloud Storage un archivo que contiene datos de temperatura de ejemplo. Cópialo en tu entorno de Cloud Shell:
En esta subtarea, desarrollarás una función de manera local en Cloud Shell. Crea un directorio y navega a él:
mkdir ~/temp-data-checker && cd $_
Crea los archivos index.js y package.json para tu función de Node.js:
touch index.js && touch package.json
En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
Puedes cambiar entre Cloud Shell y el editor de código usando Abrir editor y Abrir terminal, o bien haciendo clic en Abrir en una ventana nueva para dejar el editor abierto en una pestaña independiente.
En el Explorador del editor, expande la carpeta temp-data-checker.
Agrega el siguiente código al archivo temp-data-checker/index.js:
const functions = require('@google-cloud/functions-framework');
// Registra una devolución de llamada de CloudEvent con Functions Framework que
// será activada por eventos de Cloud Storage.
functions.cloudEvent('checkTempData', cloudEvent => {
console.log(`Event ID: ${cloudEvent.id}`);
console.log(`Event Type: ${cloudEvent.type}`);
const file = cloudEvent.data;
console.log(`Bucket: ${file.bucket}`);
console.log(`File: ${file.name}`);
console.log(`Created: ${file.timeCreated}`);
});
La función usa declaraciones `console.log` para registrar mensajes en stdout. De forma predeterminada, Cloud Run Functions incluye registros sencillos sobre el entorno de ejecución. Los mensajes de registro se recopilan y analizan con Cloud Run Functions y se envían a Cloud Logging, donde se pueden ver en la consola de Cloud.
Para especificar dependencias y otra información de paquetes para tu función de Node.js, agrega el siguiente contenido al archivo temp-data-checker/package.json:
Ejecuta el siguiente comando. Deberías ver la información del CloudEvent recibido en los registros:
gcloud functions logs read temperature-data-checker \
--region $REGION --gen2 --limit=100 --format "value(log)"
Nota: Es posible que los registros tarden un minuto en generarse.
Debería ver un resultado similar al siguiente:
Created: 2024-08-28T13:18:34.980Z
File: average-temps.csv
Bucket: gcf-temperature-data-cf-project
Event Type: google.cloud.storage.object.v1.finalized
Event ID: 5834307012388233
La función de Cloud Storage que se creó en este lab extrae metadatos sobre el bucket y el recurso que se crearon. Si quieres extraer y procesar los datos con servicios downstream, usa las bibliotecas cliente de Cloud Storage para el entorno de ejecución de tu lenguaje.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una función de Cloud Storage
Tarea 4: Desarrolla y prueba de forma local
Cloud Run Functions admite varios métodos para ejecutar las funciones fuera de las propias Cloud Run Functions. Esto es útil durante el desarrollo iterativo, las pruebas previas a la implementación en entornos locales, el cumplimiento de la localización de los datos y las implementaciones de múltiples nubes.
En esta tarea, modificarás una función de HTTP existente, desarrollarás pruebas de integración y de unidades, y probarás la función de forma local antes de implementarla en Cloud Run Functions.
Descarga el código fuente de la función
Para acceder a Cloud Run Functions, en el menú de navegación (), haz clic en Cloud Run.
Para ver los detalles de la función temperature-converter, selecciona su nombre.
Para ver el código fuente de la función, haz clic en la pestaña FUENTE.
Haz clic en Descargar archivo ZIP y guarda el archivo en una carpeta de tu computadora. Cambia el nombre del archivo a function-source.zip.
En la barra de herramientas de Cloud Shell, haz clic en el menú Más () y selecciona Subir.
En el cuadro de diálogo Subir, haz clic en Elegir archivos.
Selecciona el archivo ZIP de la carpeta que descargaste previamente, haz clic en Abrir y, luego, haz clic en Subir en el cuadro de diálogo.
Después de subir el archivo, ejecuta el siguiente comando en Cloud Shell:
mkdir ~/temp-data-converter && cd $_
Extrae el contenido del archivo ZIP:
unzip ../function-source.zip
Agrega pruebas de unidades al código de la función
Primero, agreguemos algunas pruebas de unidades a la función de conversión de temperatura.
Crea un directorio que contendrá todas las pruebas de funciones y el archivo de código fuente de la prueba de unidades:
mkdir tests && touch tests/unit.http.test.js
En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
En el editor, agrega el siguiente código al archivo temp-data-converter/tests/unit.http.test.js. El código de prueba crea una simulación que envuelve las solicitudes y respuestas de HTTP, y usa stubs de Sinon para interpretar las respuestas que recibe de la función.
const {getFunction} = require('@google-cloud/functions-framework/testing');
describe('functions_convert_temperature_http', () => {
// Sinon es un framework de pruebas que permite crear simulaciones para apps de Node.js escritas en Express.
// Express es un framework de apps web de Node.js que sirve para implementar funciones de HTTP.
const sinon = require('sinon');
const assert = require('assert');
require('../');
const getMocks = () => {
const req = {body: {}, query: {}};
return {
req: req,
res: {
send: sinon.stub().returnsThis(),
status: sinon.stub().returnsThis()
},
};
};
let envOrig;
before(() => {
envOrig = JSON.stringify(process.env);
});
after(() => {
process.env = JSON.parse(envOrig);
});
it('convertTemp: should convert a Fahrenheit temp value by default', () => {
const mocks = getMocks();
mocks.req.query = {temp: 70};
const convertTemp = getFunction('convertTemp');
convertTemp(mocks.req, mocks.res);
assert.strictEqual(mocks.res.send.calledOnceWith('Temperature in Celsius is: 21.11.'), true);
});
it('convertTemp: should convert a Celsius temp value', () => {
const mocks = getMocks();
mocks.req.query = {temp: 21.11, convert: 'ctof'};
const convertTemp = getFunction('convertTemp');
convertTemp(mocks.req, mocks.res);
assert.strictEqual(mocks.res.send.calledOnceWith('Temperature in Fahrenheit is: 70.00.'), true);
});
it('convertTemp: should convert a Celsius temp value by default', () => {
process.env.TEMP_CONVERT_TO = 'ctof';
const mocks = getMocks();
mocks.req.query = {temp: 21.11};
const convertTemp = getFunction('convertTemp');
convertTemp(mocks.req, mocks.res);
assert.strictEqual(mocks.res.send.calledOnceWith('Temperature in Fahrenheit is: 70.00.'), true);
});
it('convertTemp: should return an error message', () => {
const mocks = getMocks();
const convertTemp = getFunction('convertTemp');
convertTemp(mocks.req, mocks.res);
assert.strictEqual(mocks.res.status.calledOnce, true);
assert.strictEqual(mocks.res.status.firstCall.args[0], 400);
});
});
Nota: Tenemos cuatro pruebas de unidades, de las cuales tres son pruebas positivas que esperan un cierto valor de temperatura en la respuesta de la función.
La cuarta es una prueba negativa que espera que la función devuelva un código de estado de respuesta de 400 (solicitud incorrecta), ya que no se pasa ningún valor de temperatura en el objeto de solicitud.
En el archivo temp-data-converter/package.json, actualiza las dependencias de la función de Node.js para incluir las secciones scripts y devDependencies:
En la ventana de la terminal de Cloud Shell, ejecuta el siguiente comando para instalar primero las dependencias de la función:
npm install
Este comando ejecuta el administrador de paquetes de Node, que descarga las dependencias definidas en el archivo package.json.
Ejecuta la prueba de unidades:
npm test
En el resultado del comando, verifica que se hayan superado todas las pruebas.
> temperature-converter@0.0.1 test
> npm -- run unit-test
> temperature-converter@0.0.1 unit-test
> mocha tests/unit*test.js --timeout=6000 --exit
functions_convert_temperature_http
✔ convertTemp: should convert a Fahrenheit temp value by default
✔ convertTemp: should convert a Celsius temp value
✔ convertTemp: should convert a Celsius temp value by default
✔ convertTemp: should return an error message
4 passing (10ms)
Mocha es un framework de pruebas de JavaScript que se ejecuta en Node.js y permite realizar pruebas asíncronas de forma sencilla y flexible.También debes considerar implementar pruebas de unidades, integración y sistema para tus funciones de HTTP y Cloud Run Functions controladas por eventos. Si necesitas más información para realizar pruebas antes de la implementación, consulta los vínculos en la sección Más información al final de este lab.
Tarea 5: Revisiones de funciones
Cloud Run Functions admite múltiples revisiones de una función, lo que permite dividir el tráfico entre ellas o revertir funciones a una revisión anterior.
Cada vez que implementas o vuelves a implementar una función, se crea automáticamente una revisión nueva del servicio subyacente de Cloud Run. Las revisiones son inmutables y no se pueden modificar una vez que se crean. Para realizar cambios en una función, debes volver a implementarla.
En esta tarea, implementarás la función de HTTP que creaste en la tarea anterior con una variable de entorno y usarás la consola de Google Cloud para administrar el tráfico entre dos revisiones de la función.
Vuelve a implementar la función
En la consola de Google Cloud, navega a la página Detalles de la funcióntemperature-converter.
Haz clic en Editar e implementar una nueva revisión.
En la pestaña Contenedor, selecciona la pestaña Variables y secretos.
Para agregar una variable de entorno, en la sección Variables del entorno, haz clic en Agregar variable.
En Name 1, escribe TEMP_CONVERT_TO.
Para proporcionar un valor para la variable de entorno, en Value 1, escribe ctof.
Haz clic en Implementar.
Espera a que se complete el proceso de implementación. Cuando termine, se mostrarán dos revisiones de la función.
De forma predeterminada, la última revisión implementada recibe el 100% del tráfico a la función. Esta revisión se implementa con una variable de entorno que le indica a la función que convierta todos los valores de temperatura de Celsius a Fahrenheit de forma predeterminada.
Prueba la revisión más reciente de la función
En Cloud Shell, para probar la función, ejecuta el siguiente comando curl con el valor del parámetro de consulta temp en grados Celsius:
Deberías ver el siguiente mensaje de respuesta de la función:
Temperature in Fahrenheit is: 70.00.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear revisiones de funciones
¡Felicitaciones!
En este lab, implementaste Cloud Run Functions que responden solicitudes HTTP y eventos de Cloud Storage. Estableciste pruebas de unidades previas a la implementación para una función de HTTP y las ejecutaste para verificar situaciones positivas y negativas cuando se llama a la función. También implementaste varias revisiones de una función y probaste la última para verificar su comportamiento.
Próximos pasos y más información
Para obtener más información sobre Cloud Run Functions, consulta la documentación:
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.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
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.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
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.
En este lab, desarrollarás e implementarás Cloud Run Functions de HTTP y controladas por eventos.
Duración:
0 min de configuración
·
Acceso por 45 min
·
45 min para completar