GSP1089

Descripción general
Cloud Run Functions es 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 funciones de Cloud Run que respondan a llamadas HTTP y se activen con eventos de Cloud Storage y Registros de auditoría de Cloud. También implementarás múltiples revisiones de funciones de Cloud RunFunctions 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.
Infraestructura mejorada
-
Procesamiento más largo de solicitudes: ejecuta tus funciones de Cloud Run 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. Para las funciones controladas por eventos, actualmente es de hasta 10 minutos.
-
Instancias más grandes: Aprovecha hasta 16 GB de RAM y 4 CPU virtuales en funciones de Cloud Run, lo que permite cargas de trabajo más paralelas, de mayor tamaño en la memoria, y 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: proporciona instancias preparadas con anterioridad para minimizar los inicios en frío y asegúrate de que el tiempo de arranque de la aplicación no afecte su rendimiento.
-
División de tráfico: admite múltiples versiones de tus funciones, divide el tráfico entre ellas y reviértelas a una versión anterior.
Amplia cobertura de eventos y compatibilidad con CloudEvents
-
Integración de Eventarc: Cloud Run Functions ahora incluye compatibilidad nativa con Eventarc, que aporta más de 125 fuentes de eventos con registros de auditoría de Cloud (BigQuery, Cloud SQL, Cloud Storage, etcétera). Por supuesto, Cloud Run Functions sigue admitiendo eventos de fuentes personalizadas con la publicación directa en Cloud Pub/Sub.
-
Formato de CloudEvent: Todas las funciones controladas por eventos se adhieren a CloudEvents estándar de la industria (cloudevents.io), sin importar la fuente, para garantizar una experiencia de desarrollador coherente. Las cargas útiles se envían a través de un CloudEvent estructurado con una carga útil de cloudevent.data y se implementan con el estándar de CloudEvent.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Escribir una función que responda a llamadas HTTP
- Escribir una función que responda a eventos de Cloud Storage
- Escribir una función que responda a Cloud Audit Logs
- Implementar múltiples revisiones de una función de Cloud Run
- Eliminar los inicios en frío con instancias mínimas
- Configurar la simultaneidad
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para 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.
-
Haz 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 acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
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. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud
, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Tarea 1: Habilita las APIs
Antes de crear las funciones de Cloud Run, debes habilitar las APIs correspondientes.
- Ejecuta el siguiente comando 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
Habilita Gemini Code Assist en el IDE de Cloud Shell
Puedes usar Gemini Code Assist en un entorno de desarrollo integrado (IDE) como Cloud Shell para recibir orientación sobre el código o resolver problemas con tu código. Antes de comenzar a usar Gemini Code Assist, debes habilitarlo.
- En Cloud Shell, habilita la API de Gemini for Google Cloud con el siguiente comando:
gcloud services enable cloudaicompanion.googleapis.com
- En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
Nota: Para abrir el editor de Cloud Shell, haz clic en Abrir editor en la barra de herramientas de Cloud Shell. Para cambiar entre Cloud Shell y el editor de código, haz clic en Abrir editor o Abrir terminal, según sea necesario.
-
En el panel izquierdo, haz clic en el ícono de Configuración y, luego, en la vista Configuración, busca Gemini Code Assist.
-
Busca la opción Geminicodeassist: Habilitar y asegúrate de que esté seleccionada. Luego, cierra la Configuración.
-
Haz clic en Cloud Code - Sin proyecto en la barra de estado, en la parte inferior de la pantalla.
-
Autoriza el complemento según las instrucciones. Si no se selecciona un proyecto automáticamente, haz clic en Seleccionar un proyecto de Google Cloud y elige .
-
Verifica que tu proyecto de Google Cloud () se muestre en el mensaje de la barra de estado de Cloud Code.
Tarea 2: Crea una función de HTTP
La primera función que crearás será una función de Node.js autenticada que responda a solicitudes HTTP y use un tiempo de espera de 10 minutos para mostrar cómo una función puede tener más tiempo para responder a solicitudes HTTP.
Crear
- En la terminal de Cloud Shell, ejecuta el siguiente comando para crear la carpeta y los archivos de la app, y navegar a la carpeta:
mkdir ~/hello-http && cd $_
touch index.js && touch package.json
-
Haga clic en el botón Abrir editor en la barra de herramientas de Cloud Shell.
-
Agrega el siguiente código al archivo hello-http/index.js
que simplemente responde a las solicitudes HTTP:
const functions = require('@google-cloud/functions-framework');
functions.http('helloWorld', (req, res) => {
res.status(200).send('HTTP with Node.js in GCF 2nd gen!');
});
- Agrega el siguiente contenido al archivo
hello-http/package.json
para especificar las dependencias.
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
En el Explorador de archivos, abre el archivo index.js
. Esta acción habilita Gemini Code Assist, como lo indica la presencia del ícono
en la esquina superior derecha del editor.
-
Haz clic en el ícono Gemini Code Assist: Smart Actions
y selecciona Explicar esto.
-
Gemini Code Assist abre un panel de chat con la instrucción Explicar esto
completada previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza la instrucción completada previamente por lo siguiente y haz clic en Enviar:
Eres un Cloud Developer experto en Cymbal AI. Un nuevo miembro del equipo no está familiarizado con esta implementación de Cloud Functions. Explica en detalle los archivos "index.js" y "package.json" con la carpeta "hello-http", y desglosa sus componentes clave utilizados en el código de la aplicación.
Para las mejoras sugeridas, no actualices estos archivos.
En el chat de Gemini Code Assist, aparecen explicaciones detalladas del código index.js
y package.json
.
Implementar
- En la terminal de Cloud Shell, ejecuta el siguiente comando para implementar la función y presiona
y
en la ventana emergente unauthenticated invocations:
gcloud functions deploy nodejs-http-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--timeout 600s \
--max-instances 1
Nota: Si ves un mensaje de error de permisos
, espera unos minutos y vuelve a realizar la implementación. Las APIs tardan unos minutos en habilitarse.
Aunque no es estrictamente necesario para este paso, hay un tiempo de espera de 600 segundos. Esto permite que la función tenga un tiempo de espera más largo para responder a las solicitudes HTTP.
- Una vez que se implementa la función, ingresa funciones de Cloud Run en la barra de búsqueda y haz clic en el resultado. Se te redireccionará a la consola de Cloud Run. Verifica que la función se haya implementado correctamente.

Probar
- Prueba la función con el siguiente comando:
gcloud functions call nodejs-http-function \
--gen2 --region {{{project_0.default_region|Region}}}
Deberías ver el siguiente mensaje como respuesta:
HTTP con Node.js en GCF de 2ª gen.
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 sección, crearás una función de Node.js que responda a eventos de un bucket de Cloud Storage.
Configurar
- Para usar las funciones de Cloud Storage, primero ejecuta el siguiente código para otorgar el rol de IAM
pubsub.publisher
a la cuenta de servicio de Cloud Storage:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
Crear
- Ejecuta el siguiente comando para crear la carpeta y los archivos de la función y navegar a la carpeta:
mkdir ~/hello-storage && cd $_
touch index.js && touch package.json
-
Haz clic en el botón Abrir editor en la barra de herramientas de Cloud Shell.
-
Agrega el siguiente código al archivo hello-storage/index.js
que simplemente responde a los eventos de Cloud Storage:
const functions = require('@google-cloud/functions-framework');
functions.cloudEvent('helloStorage', (cloudevent) => {
console.log('Cloud Storage event with Node.js in GCF 2nd gen!');
console.log(cloudevent);
});
- Agrega el siguiente contenido al archivo
hello-storage/package.json
para especificar las dependencias:
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
En el Explorador de archivos, abre el archivo index.js
en la carpeta "hello-storage". Esta acción habilita Gemini Code Assist, como lo indica la presencia del ícono
en la esquina superior derecha del editor.
-
Haz clic en el ícono Gemini Code Assist: Smart Actions
y selecciona Explicar esto.
-
Gemini Code Assist abre un panel de chat con la instrucción Explicar esto
completada previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza la instrucción completada previamente por lo siguiente y haz clic en Enviar:
Eres un Cloud Developer experto en Cymbal AI. Un nuevo miembro del equipo no está familiarizado con esta implementación de Cloud Functions. Explica en detalle los archivos "index.js" y "package.json" con la carpeta "hello-storage", y desglosa sus componentes clave utilizados en el código de la aplicación.
Para las mejoras sugeridas, no actualices estos archivos.
En el chat de Gemini Code Assist, aparecen explicaciones detalladas del código index.js
y package.json
.
Implementar
- Primero, ejecuta el siguiente comando para crear un bucket de Cloud Storage que se usará para crear eventos:
BUCKET="gs://gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gsutil mb -l {{{project_0.default_region|Region}}} $BUCKET
- Ejecuta el siguiente comando para implementar la función:
gcloud functions deploy nodejs-storage-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloStorage \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-bucket $BUCKET \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Nota: Como antes, si ves un mensaje de error de permisos
, espera unos minutos y vuelve a realizar la implementación. La habilitación de las APIs puede tardar unos minutos.
- Una vez que se implementa la función, verifica que puedas verla en la consola de Cloud Run.

Probar
- Ejecuta el siguiente comando que sube un archivo al bucket para probar la función:
echo "Hello World" > random.txt
gsutil cp random.txt $BUCKET/random.txt
- Ejecuta el siguiente comando. Deberías ver el CloudEvent recibido en los registros:
gcloud functions logs read nodejs-storage-function \
--region {{{project_0.default_region|Region}}} --gen2 --limit=100 --format "value(log)"
Nota: Puede tardar un minuto en generar registros.
Deberías ver un resultado similar al siguiente.
Resultado:
}
traceparent: '00-c74cb472d1e78f7225b6f617a31d9c08-96f0380bb62be2c1-01'
},
etag: 'CKOx1L3wofoCEAE='
crc32c: 'R1jUOQ==',
mediaLink: 'https://storage.googleapis.com/download/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt?generation=1663625646643363&alt=media',
md5Hash: '5Z/5eUEET4XfUpfhwwLSYA==',
size: '12',
timeStorageClassUpdated: '2022-09-19T22:14:06.657Z',
storageClass: 'STANDARD',
updated: '2022-09-19T22:14:06.657Z',
timeCreated: '2022-09-19T22:14:06.657Z',
contentType: 'text/plain',
metageneration: '1',
generation: '1663625646643363',
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
name: 'random.txt',
selfLink: 'https://www.googleapis.com/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt',
id: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/random.txt/1663625646643363',
kind: 'storage#object',
data: {
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
time: '2022-09-19T22:14:06.657124Z',
subject: 'objects/random.txt',
type: 'google.cloud.storage.object.v1.finalized',
specversion: '1.0',
source: '//storage.googleapis.com/projects/_/buckets/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
id: '5693030851428996',
{
Evento de Cloud Storage con Node.js en GCF de 2ª gen.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una función de Cloud Storage
Tarea 4: Crea una función de registros de auditoría de Cloud
En esta sección, crearás una función de Node.js que recibe un evento de Registros de auditoría de Cloud cuando se crea una instancia de VM de Compute Engine. En respuesta, agrega una etiqueta a la VM recién creada, en la que se especifica el creador de la VM.
Determinar las VMs de Compute Engine recién creadas
Compute Engine emite 2 registros de auditoría cuando se crea una VM.
El primero se emite al principio de la creación de la VM y se ve así:

El segundo se emite después de la creación de la VM y se ve así:

Observa el campo de operación con los valores first: true
y last: true
. El segundo registro de auditoría contiene toda la información que necesitas para etiquetar una instancia, por lo que usas la marca last: true
para detectarla en las funciones de Cloud Run.
Configuración
Para usar las funciones de Registros de auditoría de Cloud, debes habilitar los registros de auditoría para Eventarc. También debes usar una cuenta de servicio con el rol eventarc.eventReceiver
.
- En el menú de navegación, ve a IAM y administración > Registros de auditoría.
Nota: Puedes ignorar la advertencia sobre el permiso faltante resourcemanager.folders.getIamPolicy
.
-
Busca la API de Compute Engine y haz clic en la casilla de verificación junto a ella. Si no puedes encontrar la API, búscalo en la página siguiente.
-
En el panel de información de la derecha, selecciona las casillas de verificación de los tipos de registro Lectura de administrador, Lectura de datos y Escritura de datos. Luego, haz clic en Guardar.

- Otorga a la cuenta de servicio predeterminada de Compute Engine el rol de IAM
eventarc.eventReceiver
:
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Obtén el código
- Ejecuta el siguiente código para clonar el repo que contiene la aplicación:
cd ~
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
-
Haz clic en el botón Abrir editor en la barra de herramientas de Cloud Shell.
-
En el Explorador de archivos, navega a eventarc-samples > gce-vm-labeler > gcf > nodejs > index.js.
-
Abre el archivo index.js
. Esta acción habilita Gemini Code Assist, como lo indica la presencia del ícono
en la esquina superior derecha del editor.
-
Haz clic en el ícono Gemini Code Assist: Smart Actions
y selecciona Explicar esto.
-
Gemini Code Assist abre un panel de chat con la instrucción Explicar esto
completada previamente. En el cuadro de texto intercalado del chat de Code Assist, reemplaza la instrucción completada previamente por lo siguiente y haz clic en Enviar:
Eres un Cloud Developer experto en Cymbal AI. Un nuevo miembro del equipo no está familiarizado con esta implementación de Cloud Functions. Explica en detalle el archivo "index.js" y desglosa sus componentes clave utilizados en el código de la aplicación.
Para las mejoras sugeridas, no actualices el archivo.
El archivo index.js
contiene el código de la aplicación que recibe el registro de auditoría envuelto en un CloudEvent. Luego, extrae los detalles de la instancia de VM de Compute Engine y establece una etiqueta en la instancia de VM. No dudes en estudiar index.js
con más detalle por tu cuenta.
Las explicaciones detalladas del código index.js
aparecen en el chat de Gemini Code Assist.
Implementar
- En la terminal de Cloud Shell, ejecuta el siguiente comando para navegar al directorio de la app:
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
- Ejecuta el siguiente comando para implementar la función con
gcloud
como antes. Observa cómo la función filtra los registros de auditoría para las inserciones de Compute Engine con la marca --trigger-event-filters
:
gcloud functions deploy gce-vm-labeler \
--gen2 \
--runtime nodejs22 \
--entry-point labelVmCreation \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-event-filters="type=google.cloud.audit.log.v1.written,serviceName=compute.googleapis.com,methodName=beta.compute.instances.insert" \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Nota: Aunque el activador de la función de registro de auditoría se crea de inmediato, los activadores pueden tardar hasta 10 minutos en ser completamente funcionales.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una función de Registros de auditoría de Cloud
Probar
Para probar tu función de registro de auditoría, debes crear una VM de Compute Engine en la consola de Cloud (también puedes crear VMs con gcloud
, pero no parece generar registros de auditoría).
-
Desde el Menú de navegación, ve a Compute Engine > Instancias de VM.
-
Haz clic en Crear instancia y establece el Nombre de la instancia como instance-1 y la Zona como .
-
Deja todos los otros campos con sus valores predeterminados y haz clic en Crear.
Una vez que se complete la creación de la VM, deberías ver la etiqueta creator
agregada en la VM en la consola de Cloud en la sección Información básica.

- Verifica con el siguiente comando:
gcloud compute instances describe instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Deberías ver la etiqueta en el resultado como en el siguiente ejemplo.
Ejemplo del resultado:
...
labelFingerprint: ULU6pAy2C7s=
labels:
creator: student-02-19b599a0f901
...
Haz clic en Revisar mi progreso para verificar el objetivo.
Crea una instancia de VM
- Ejecuta el siguiente comando para borrar el proyecto: Cuando se te solicite, escribe
Y
para confirmar.
gcloud compute instances delete instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Tarea 5: Implementar diferentes revisiones
Cloud Run Functions admite múltiples revisiones de tus funciones, lo que permite dividir el tráfico entre ellas o revertir funciones a una versión anterior. En esta sección, implementarás dos revisiones de tu función de Cloud Run.
Crear
- Ejecuta el siguiente comando para crear la carpeta y los archivos de la función y navegar a la carpeta:
mkdir ~/hello-world-colored && cd $_
touch main.py
touch requirements.txt
- Agrega el siguiente código al archivo
hello-world-colored/main.py
con una función de Python que lee una variable de entorno de color y responde con Hello World
en ese color de fondo:
import os
color = os.environ.get('COLOR')
def hello_world(request):
return f'<body style="background-color:{color}"><h1>Hello World!</h1></body>'
Implementar
- Ejecuta el siguiente comando para implementar la primera revisión de la función con un fondo naranja:
COLOR=orange
gcloud functions deploy hello-world-colored \
--gen2 \
--runtime python39 \
--entry-point hello_world \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--update-env-vars COLOR=$COLOR \
--max-instances 1
En este punto, si pruebas la función viendo el activador HTTP (el URI que se generó con el comando de implementación que ejecutaste antes) en tu navegador, deberías ver Hello World
con un fondo naranja:

-
Navega a la página Cloud Run Functions, se te redireccionará a la consola de Cloud Run; haz clic en la función hello-world-colored.
-
Haz clic en EDITAR E IMPLEMENTAR NUEVA REVISIÓN.
-
Deja todo con sus valores predeterminados, desplázate hacia abajo y selecciona la pestaña Variables y Secrets. En la sección Variables de entorno, actualiza la variable de entorno COLOR a yellow
.

- Haz clic en Implementar.
Como esta es la revisión más reciente, si pruebas la función, deberías ver Hello World
con un fondo amarillo:

Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar diferentes revisiones
Tarea 6: Configura la cantidad mínima de instancias
En Cloud Run Functions, se puede especificar una cantidad mínima de instancias de función que se deben mantener en espera y listas para entregar solicitudes. Esto es útil para limitar la cantidad de inicios en frío. En esta sección, implementarás una función con una inicialización lenta. Observas el problema de inicio en frío. Luego, implementas la función con el valor de instancia mínimo establecido en 1 para deshacerte del inicio en frío.
Crear
- Ejecuta el siguiente comando para crear la carpeta y los archivos de la función, y navegar a la carpeta:
mkdir ~/min-instances && cd $_
touch main.go
touch go.mod
- Agrega el siguiente código al archivo
min-instances/main.go
. Este servicio de Go tiene una función init
que duerme durante 10 segundos para simular una inicialización larga. También tiene una función HelloWorld
que responde a las llamadas HTTP:
package p
import (
"fmt"
"net/http"
"time"
)
func init() {
time.Sleep(10 * time.Second)
}
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Slow HTTP Go in GCF 2nd gen!")
}
- Agrega el siguiente código al archivo
min-instances/go.mod
. Esto especifica la ruta del módulo y la versión del lenguaje Go:
module example.com/mod
go 1.23
Implementar
- Ejecuta el siguiente comando para implementar la primera revisión de la función con el valor de instancia mínimo predeterminado de cero:
gcloud functions deploy slow-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--max-instances 4
- Prueba la función con este comando:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
Deberías observar un retraso de 10 segundos (arranque en frío) en la primera llamada y, luego, ver el mensaje. Las llamadas posteriores deberían devolverse de inmediato.
¡HTTP lento en GCF de 2ª gen!
Establecer el mínimo de instancias
Para deshacerte del inicio en frío en la primera solicitud, vuelve a implementar la función con la marca --min-instances
establecida en 1 de la siguiente manera:
-
Navega a la página Cloud Run en la consola y haz clic en el servicio slow-function.
-
Haz clic en EDITAR E IMPLEMENTAR NUEVA REVISIÓN.
-
En la sección Escalamiento de revisión, establece Cantidad mínima de instancias en 1
y Cantidad máxima de instancias en 4
.
-
Deja el resto de los campos con los valores predeterminados y haz clic en Implementar.
Prueba
- Ejecuta el siguiente comando para probar la función nuevamente:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
Ya no deberías ver la demora de 10 segundos en la primera solicitud. El problema de inicio en frío para la primera invocación (después de mucho tiempo sin invocar) desapareció gracias a las instancias mínimas. Consulta la documentación sobre cómo usar una cantidad mínima de instancias para obtener más información.
Haz clic en Revisar mi progreso para verificar el objetivo.
Configura la cantidad mínima de instancias
Tarea 7: Crea una función con simultaneidad
En Cloud Run Functions, una instancia de función maneja una solicitud simultánea de forma predeterminada, pero puedes especificar la cantidad de solicitudes simultáneas que una instancia puede procesar de forma simultánea. Esto también puede ser útil para evitar los inicios en frío, ya que no es necesario crear una nueva instancia de función para cada solicitud paralela.
En esta sección, usarás la función con inicialización lenta del paso anterior. Envías 10 solicitudes y observas el problema de inicio en frío nuevamente, ya que se deben crear nuevas instancias de función para controlar las solicitudes.
Para solucionar el problema de inicio en frío, implementas otra función con un valor de simultaneidad de 100. Observas que las 10 solicitudes ahora no causan el problema de inicio en frío y una sola instancia de función puede controlar todas las solicitudes.
Prueba sin simultaneidad
- Usa el siguiente comando de instalación para instalar
hey
en Cloud Shell:
sudo apt install hey
- Ejecuta el siguiente comando para obtener la URL de la función y guardarla como una variable de entorno:
SLOW_URL=$(gcloud functions describe slow-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Usa una herramienta de comparativa de código abierto llamada
hey
para enviar 10 solicitudes simultáneas a la función lenta.
hey -n 10 -c 10 $SLOW_URL
Deberías ver en el resultado de hey
que algunas solicitudes tardan mucho.
Resultado:
Summary:
Total: 10.9053 secs
Slowest: 10.9048 secs
Fastest: 0.4439 secs
Average: 9.7930 secs
Requests/sec: 0.9170
Total data: 310 bytes
Size/request: 31 bytes
Response time histogram:
0.444 [1] |■■■■
1.490 [0] |
2.536 [0] |
3.582 [0] |
4.628 [0] |
5.674 [0] |
6.720 [0] |
7.767 [0] |
8.813 [0] |
9.859 [0] |
10.905 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Esto se debe a que se están creando más instancias de funciones para manejar las solicitudes. Si verificas el recuento de instancias activas de la función, también deberías ver que se creó más de una instancia en algún momento y que estas están causando el problema de inicio en frío.

- Ejecuta el siguiente comando para borrar el proyecto: Cuando se te solicite, escribe
Y
para confirmar.
gcloud run services delete slow-function --region {{{project_0.default_region | "Region"}}}
Implementar
- Ejecuta el siguiente comando para implementar una nueva función idéntica a la anterior. Una vez implementado, aumenta su simultaneidad:
gcloud functions deploy slow-concurrent-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--min-instances 1 \
--max-instances 4
Configurar la simultaneidad
Ahora, establece la simultaneidad del servicio subyacente de Cloud Run para la función en 100
(puede ser un máximo de 1,000). Esto garantiza que una sola instancia de función pueda controlar al menos 100 solicitudes.
-
En el menú de navegación, ve a Cloud Run.
-
Haz clic en el servicio slow-concurrent-function.
-
Haz clic en EDITAR E IMPLEMENTAR NUEVA REVISIÓN.
-
En la sección Recursos, establece la CPU en 1
.
-
En Solicitudes, establece la Cantidad máxima de solicitudes simultáneas por instancia en 100
.
-
En Escalamiento de revisión, establece el Número máximo de instancias en 4
.
-
Deja el resto de los campos con los valores predeterminados y haz clic en Implementar.
Prueba con simultaneidad
- Una vez que se implemente tu función, ejecuta el siguiente comando para obtener la URL de la nueva función y guardarla como una variable de entorno:
SLOW_CONCURRENT_URL=$(gcloud functions describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Ahora usa
hey
para enviar 10 solicitudes simultáneas:
hey -n 10 -c 10 $SLOW_CONCURRENT_URL
Deberías ver en el resultado de hey
que todas las solicitudes se procesan rápidamente.
Resultado:
Summary:
Total: 0.0652 secs
Slowest: 0.0651 secs
Fastest: 0.0619 secs
Average: 0.0636 secs
Requests/sec: 153.3751
Total data: 280 bytes
Size/request: 28 bytes
Response time histogram:
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.063 [0] |
0.063 [0] |
0.063 [0] |
0.063 [1] |■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.065 [0] |
0.065 [1] |■■■■■■■■■■■■■■■■■■■■
Una sola instancia de función pudo manejar todas las solicitudes y el problema de inicio en frío desapareció gracias al aumento de la simultaneidad. Consulta la documentación sobre simultaneidad si quieres obtener más información.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una función con simultaneidad
¡Felicitaciones!
En este lab, implementaste varias funciones de Cloud Run que respondieron a llamadas HTTP, eventos de Cloud Storage y Registros de auditoría de Cloud. Luego, implementaste varias revisiones de los servicios de Cloud Run que ejecutan las funciones y estableciste valores de simultaneidad, además de deshacerte de los inicios en frío con instancias mínimas.
Próximos pasos y más información
Para obtener más información sobre Cloud Run Functions, explora los siguientes recursos:
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 19 de agosto de 2025
Prueba más reciente del lab: 19 de agosto de 2025
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.