Primer proyecto en Cloud Functions
Clase 4 de 22 • Curso de Firebase 5: Cloud Functions
Contenido del curso
Consola web de administración
Extendiendo la Gestión de Usuarios con Cloud Functions.
Extendiendo Firestore con Cloud Functions.
Extendiendo el Almacenamiento con Cloud Functions.
Creando Cloud Functions HTTPS
Extendiendo el Hosting con Cloud Functions.
Extendiendo crashlytics con Cloud Functions.
Extendiendo Analytics con Cloud Functions.
Creación de pruebas unitarias a las Cloud Functions.
Optimizando las Cloud Functions.
Cierre
Aprende a crear y desplegar tu primera Cloud Function con Firebase y Node.js paso a paso. Desde instalar firebase-tools hasta publicar un endpoint HTTPS, verás comandos clave, estructura del proyecto y configuraciones como memoria (256 MB), timeout (60 s) y regiones. Todo con buenas prácticas y sin complicaciones.
¿Cómo preparar el entorno con firebase-tools y npm?
Para trabajar con Cloud Functions, necesitas la CLI de Firebase y npm. En un editor como Visual Studio Code, abre la terminal e instala la herramienta globalmente. Luego autentícate para vincularte con tu cuenta de Google.
npm install -g firebase-tools
firebase logout
firebase login
- La CLI abre el navegador para autorizar tu cuenta de Google.
- Otorga permisos y verifica el mensaje: autenticado exitosamente.
- Listo para iniciar el proyecto y desplegar funciones.
¿Cómo iniciar sesión con firebase login?
- Ejecuta:
firebase loginen la terminal. - Elige tu usuario en el navegador y acepta permisos.
- Vuelve a la terminal y confirma el estado de autenticación.
¿Cómo inicializar el proyecto de Cloud Functions en Firebase?
Con la sesión activa, crea la base del proyecto con el asistente de Firebase. Esto configura la carpeta, dependencias y archivos esenciales.
firebase init functions
- Selecciona el proyecto de Firebase donde desplegarás funciones.
- Elige el lenguaje: JavaScript o TypeScript (aquí se usa JavaScript).
- Versiones de Node.js: seis estable; ocho en beta. Usa la estable para evitar fallos.
- Activa “Slim” para guías y buenas prácticas al codear (validaciones tipo lint).
- Acepta instalar dependencias mínimas: firebase-admin y firebase-functions.
¿Qué archivos y configuración se generan?
El asistente crea una estructura clara y lista para trabajar.
- Carpeta functions: contiene el código de tus funciones.
- Archivo firebase.json: define tareas como
preDeploypara corrernpm run lintantes de desplegar. Ajusta el directorio a “Functions” si cambia el nombre de la carpeta. - Archivo de enlace al proyecto: guarda el ID del proyecto seleccionado para las funciones.
- Dentro de functions:
- package.json: scripts, dependencias y metadatos del proyecto Node.
- index.js: punto de entrada donde se declaran los disparadores.
¿Cómo escribir, desplegar y gestionar una función HTTPS?
Tu primera función expondrá un endpoint HTTPS. En index.js, importa la librería y exporta la función con el disparador adecuado.
const functions = require('firebase-functions');
exports.HelloWorld = functions.https.onRequest((req, res) => {
res.send('Hello from Firebase');
});
Despliega todas las funciones o una en específico. Usa la consola de Firebase para ver detalles como memoria (256 MB) y timeout (60 s). Por defecto, se aloja en la región US Central uno.
# Desplegar todas las funciones
firebase deploy --only functions
# Desplegar una función específica
firebase deploy --only functions:HelloWorld
# Eliminar una función
firebase functions:delete HelloWorld
# Ver registros (logs) de funciones
firebase functions:log
También puedes ajustar región, memoria y timeout desde el código, encadenando configuraciones antes del disparador HTTPS.
exports.HelloWorld = functions
.region('us-central1')
.runWith({ memory: '512MB', timeoutSeconds: 60 })
.https.onRequest((req, res) => {
res.send('Hello from Firebase');
});
- Cambia la región con
.region(...): por ejemplo, una de Asia o Europa según tu necesidad. - Ajusta
memoryytimeoutSeconds: valores como 128, 256, 512 MB hasta 3 GB, y segundos para tiempos de espera. - Mantén el código modular: evita “chorros” en index.js separando en componentes.
¿Tienes dudas o ya desplegaste tu primer endpoint? Cuéntame en los comentarios qué función planeas crear y qué configuración (región, memoria, timeout) necesitas.