Introducción a Cloud Functions
Google Cloud Functions es un servicio de computación sin servidor que permite ejecutar código en respuesta a eventos sin necesidad de gestionar servidores. Es ideal para tareas como procesamiento de datos, integración de sistemas y automatización de flujos de trabajo.
Conceptos Clave
- Sin servidor (Serverless): No necesitas gestionar la infraestructura subyacente.
- Eventos: Cloud Functions se activa en respuesta a eventos, como cambios en Cloud Storage, mensajes en Pub/Sub, o solicitudes HTTP.
- Escalabilidad automática: Las funciones se escalan automáticamente según la demanda.
Configuración Inicial
Paso 1: Crear un Proyecto en GCP
- Accede a la Consola de Google Cloud.
- Crea un nuevo proyecto o selecciona uno existente.
- Habilita la API de Cloud Functions desde la biblioteca de APIs.
Paso 2: Instalar y Configurar el SDK de Google Cloud
- Descarga e instala el SDK de Google Cloud.
- Autentícate con tu cuenta de Google:
gcloud auth login
- Configura el proyecto:
gcloud config set project [PROJECT_ID]
Creación de una Función Básica
Ejemplo: Función HTTP "Hello World"
Código de la Función
Crea un archivo index.js
con el siguiente contenido:
Despliegue de la Función
-
Despliega la función usando el comando
gcloud
:gcloud functions deploy helloWorld --runtime nodejs14 --trigger-http --allow-unauthenticated
--runtime nodejs14
: Especifica el entorno de ejecución.--trigger-http
: Define que la función se activará mediante una solicitud HTTP.--allow-unauthenticated
: Permite el acceso sin autenticación.
-
Una vez desplegada, obtendrás una URL para invocar la función.
Ejercicio Práctico
Objetivo: Crear una función que responda con un mensaje personalizado.
-
Modifica el archivo
index.js
para que la función responda con un mensaje personalizado basado en un parámetro de consultaname
:exports.helloWorld = (req, res) => { const name = req.query.name || 'World'; res.send(`Hello, ${name}!`); };
-
Despliega la función:
gcloud functions deploy helloWorld --runtime nodejs14 --trigger-http --allow-unauthenticated
-
Prueba la función accediendo a la URL proporcionada y añadiendo el parámetro de consulta
name
:https://REGION-PROJECT_ID.cloudfunctions.net/helloWorld?name=YourName
Integración con Otros Servicios de GCP
Ejemplo: Activación por Cambios en Cloud Storage
Código de la Función
Crea un archivo index.js
con el siguiente contenido:
const { Storage } = require('@google-cloud/storage'); const storage = new Storage(); exports.processFile = async (event, context) => { const bucketName = event.bucket; const fileName = event.name; console.log(`Processing file: ${fileName} in bucket: ${bucketName}`); // Aquí puedes añadir lógica para procesar el archivo };
Despliegue de la Función
- Despliega la función usando el comando
gcloud
:gcloud functions deploy processFile --runtime nodejs14 --trigger-resource YOUR_BUCKET_NAME --trigger-event google.storage.object.finalize
--trigger-resource YOUR_BUCKET_NAME
: Especifica el bucket de Cloud Storage.--trigger-event google.storage.object.finalize
: Define que la función se activará cuando se finalice la creación de un objeto en el bucket.
Ejercicio Práctico
Objetivo: Crear una función que registre en los logs el nombre de los archivos subidos a un bucket de Cloud Storage.
-
Modifica el archivo
index.js
para que la función registre el nombre del archivo subido:exports.logFileName = (event, context) => { const fileName = event.name; console.log(`File uploaded: ${fileName}`); };
-
Despliega la función:
gcloud functions deploy logFileName --runtime nodejs14 --trigger-resource YOUR_BUCKET_NAME --trigger-event google.storage.object.finalize
-
Sube un archivo al bucket y verifica los logs en la consola de GCP.
Errores Comunes y Soluciones
Error: "PERMISSION_DENIED"
- Causa: La función no tiene permisos adecuados.
- Solución: Asegúrate de que la cuenta de servicio asociada a la función tiene los permisos necesarios.
Error: "Quota Exceeded"
- Causa: Has superado las cuotas de uso de Cloud Functions.
- Solución: Revisa y ajusta las cuotas en la consola de GCP o solicita un aumento de cuota.
Conclusión
En esta sección, hemos aprendido a crear y desplegar funciones en Google Cloud Functions, tanto para solicitudes HTTP como para eventos de Cloud Storage. También hemos explorado cómo integrar Cloud Functions con otros servicios de GCP y cómo manejar errores comunes. En el siguiente módulo, profundizaremos en otros servicios de DevOps y monitoreo en GCP.
Resumen:
- Conceptos Clave: Sin servidor, eventos, escalabilidad automática.
- Configuración Inicial: Crear proyecto, instalar SDK, configurar proyecto.
- Ejemplo Básico: Función HTTP "Hello World".
- Integración con Otros Servicios: Activación por cambios en Cloud Storage.
- Errores Comunes: PERMISSION_DENIED, Quota Exceeded.
Prepárate para el siguiente tema donde exploraremos los repositorios de código en la nube y cómo integrarlos en tus flujos de trabajo de DevOps.
Curso de Google Cloud Platform (GCP)
Módulo 1: Introducción a Google Cloud Platform
- ¿Qué es Google Cloud Platform?
- Configuración de tu cuenta de GCP
- Descripción general de la consola de GCP
- Comprensión de proyectos y facturación
Módulo 2: Servicios principales de GCP
Módulo 3: Redes y seguridad
Módulo 4: Datos y análisis
Módulo 5: Aprendizaje automático e IA
Módulo 6: DevOps y monitoreo
- Cloud Build
- Repositorios de código en la nube
- Cloud Functions
- Monitoreo de Stackdriver
- Cloud Deployment Manager
Módulo 7: Temas avanzados de GCP
- Híbrido y multi-nube con Anthos
- Computación sin servidor con Cloud Run
- Redes avanzadas
- Mejores prácticas de seguridad
- Gestión y optimización de costos