Aprende a crear, configurar y optimizar funciones Lambda con ejemplos prácticos y casos de uso real
Introducción a AWS Lambda
AWS Lambda es un servicio de computación sin servidor que te permite ejecutar código sin aprovisionar ni administrar servidores. Solo pagas por el tiempo de computación que consumes, sin cargos cuando tu código no se está ejecutando.
- No hay servidores que administrar
- Escalado automático
- Pago por uso (ahorro de costos)
- Alta disponibilidad y tolerancia a fallos integradas
- Soporte para múltiples lenguajes de programación
Tutorial paso a paso
1 Acceder a la consola de AWS Lambda
- Inicia sesión en la consola de AWS
- Busca «Lambda» en la barra de búsqueda o navega a través de Servicios > Computación > Lambda
2 Crear tu primera función Lambda
- Haz clic en «Crear función»
- Selecciona «Crear desde cero»
- Proporciona un nombre para tu función (por ejemplo, «mi-primera-lambda»)
- En Runtime, selecciona «Node.js 18.x» (o la versión que prefieras)
- En Permisos, selecciona «Crear un nuevo rol con permisos básicos de Lambda»
- Haz clic en «Crear función»
3 Configurar el código de la función
La consola te llevará al editor de código. Verás un código de ejemplo similar a este:
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
Puedes modificarlo para tu caso práctico (lo haremos más adelante).
4 Probar tu función
- Haz clic en «Prueba» en la parte superior
- Si es la primera vez, te pedirá crear un evento de prueba
- Proporciona un nombre para el evento (por ejemplo, «TestEvent»)
- Deja el JSON predeterminado o personalízalo
- Haz clic en «Crear»
- Haz clic en «Prueba» de nuevo para ejecutar la función con el evento de prueba
5 Revisar los resultados y registros
Después de la ejecución, verás:
- El resultado de la ejecución
- Los registros generados
- El tiempo de ejecución y la memoria utilizada
Caso práctico: Procesador de Imágenes Serverless
Vamos a crear una función Lambda que procese información sobre imágenes almacenadas en S3. Esta función será activada cada vez que se suba una nueva imagen a un bucket específico.
1 Crear un bucket S3
- Ve a la consola de S3
- Crea un nuevo bucket (por ejemplo, «mi-bucket-de-imagenes-lambda-123»)
- Mantén la configuración predeterminada y asegúrate de que sea accesible desde tu cuenta
2 Crear un rol IAM con permisos adecuados
- Ve a la consola IAM
- Selecciona «Roles» y luego «Crear rol»
- Selecciona Lambda como el servicio que utilizará este rol
- Adjunta las siguientes políticas:
- AWSLambdaBasicExecutionRole (para CloudWatch Logs)
- AmazonS3ReadOnlyAccess (para leer objetos de S3)
- Nombra el rol (por ejemplo, «LambdaS3ProcessorRole»)
- Crea el rol
3 Crear la función Lambda
- Ve a la consola Lambda
- Crea una nueva función
- Dale un nombre descriptivo (por ejemplo, «procesador-de-imagenes»)
- Selecciona «Node.js 18.x» como runtime
- En Permisos, selecciona «Usar un rol existente» y elige el rol que creaste
- Haz clic en «Crear función»
4 Configurar el código de la función
Reemplaza el código predeterminado con el siguiente:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
try {
// Obtener información del evento S3
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
// Obtener los metadatos del objeto
const metadata = await s3.headObject({
Bucket: bucket,
Key: key
}).promise();
// Extraer información relevante
const fileSize = metadata.ContentLength;
const contentType = metadata.ContentType;
const lastModified = metadata.LastModified;
// Verificar si es una imagen
const isImage = contentType && contentType.startsWith('image/');
// Preparar resultado
const result = {
bucket: bucket,
key: key,
fileSize: `${(fileSize / 1024).toFixed(2)} KB`,
contentType: contentType,
lastModified: lastModified,
isImage: isImage
};
console.log('Procesamiento exitoso:', JSON.stringify(result, null, 2));
return {
statusCode: 200,
body: JSON.stringify(result)
};
} catch (error) {
console.error('Error al procesar el objeto:', error);
return {
statusCode: 500,
body: JSON.stringify({ error: 'Error al procesar el objeto' })
};
}
};
5 Configurar el desencadenador S3
- En la página de tu función Lambda, ve a la pestaña «Configuración»
- Haz clic en «Agregar desencadenador»
- Selecciona «S3» como fuente del desencadenador
- Selecciona tu bucket de S3
- En Tipos de eventos, selecciona «Todos los eventos de creación de objetos»
- Marca la casilla para reconocer la invocación recursiva (si aplica)
- Haz clic en «Agregar»
6 Probar la función subiendo una imagen
- Ve a tu bucket de S3
- Sube una imagen cualquiera
- Regresa a Lambda y ve a la pestaña «Monitor»
- Haz clic en «Ver registros en CloudWatch»
- Deberías ver los registros de la ejecución con información sobre la imagen subida
Preguntas frecuentes para la certificación
Conceptos fundamentales de Lambda
-
¿Qué es AWS Lambda?
Es un servicio de computación sin servidor que ejecuta código en respuesta a eventos y administra automáticamente los recursos de computación.
-
¿Cuáles son los límites de AWS Lambda?
- Tiempo de ejecución máximo: 15 minutos
- Memoria asignada: 128 MB – 10 GB
- Tamaño del paquete de despliegue: 50 MB (comprimido) y 250 MB (descomprimido)
- Tamaño de /tmp: 512 MB a 10 GB
- Concurrencia: 1,000 (por defecto, puede incrementarse)
-
¿Qué son los triggers de Lambda?
Son servicios de AWS que inician la ejecución de una función Lambda, como S3, DynamoDB, API Gateway, CloudWatch Events, etc.
-
¿Qué es el modelo de ejecución de Lambda?
Lambda utiliza un modelo de ejecución que consiste en un entorno de ejecución, un manejador de invocaciones y enlaces a los AWS SDK.
Precios y optimización
-
¿Cómo se cobran las funciones Lambda?
- Por número de solicitudes (primeras 1M gratis por mes)
- Por duración (tiempo de ejecución redondeado a los 1ms más cercanos)
- Por memoria asignada (GB-segundos)
-
¿Cómo se pueden optimizar los costos de Lambda?
- Optimizando el código para reducir el tiempo de ejecución
- Eligiendo la cantidad correcta de memoria
- Implementando reutilización de conexiones
- Utilizando variables de entorno en lugar de archivos de configuración pesados
Implementación y administración
-
¿Qué son las versiones y los alias en Lambda?
- Versiones: capturas inmutables de una función
- Alias: punteros a versiones específicas que pueden ser cambiados
-
¿Qué es una capa de Lambda?
Es un archivo ZIP que contiene bibliotecas, tiempo de ejecución personalizado u otras dependencias, que se pueden usar en múltiples funciones.
-
¿Qué es AWS SAM?
Serverless Application Model es un framework para construir aplicaciones sin servidor en AWS.
Integración con otros servicios
-
¿Cómo se integra Lambda con API Gateway?
Lambda puede ser el backend de endpoints REST o WebSocket a través de API Gateway.
-
¿Cómo se integra Lambda con DynamoDB?
Lambda puede procesar registros de DynamoDB Streams para reaccionar a cambios en la base de datos.
-
¿Qué es el patrón fan-out con Lambda y SNS?
Es un patrón donde un mensaje enviado a SNS desencadena múltiples funciones Lambda para procesamiento paralelo.
Consejos para el examen
- Conoce bien los límites de Lambda y cuándo debería usarse otro servicio.
- Comprende el modelo de permisos y IAM para Lambda.
- Entiende cómo optimizar el rendimiento y los costos.
- Familiarízate con los patrones comunes de arquitectura serverless.
- Practica la configuración de desencadenadores desde diferentes servicios.