Lambda
🌐 ¿Qué es AWS Lambda?
AWS Lambda es un servicio serverless de AWS que permite ejecutar código sin aprovisionar ni administrar servidores. El usuario carga funciones y Lambda se encarga del resto: escalado, ejecución, disponibilidad y mantenimiento.
-
Tipo: FaaS (Function as a Service)
-
Uso principal: Ejecutar funciones en respuesta a eventos.
-
Escalado automático basado en el número de solicitudes.
-
Modelo de pago por uso: solo pagas por el tiempo de ejecución y número de invocaciones.
🧠 ¿Cómo funciona?
-
Subes tu código como una función Lambda (en zip, contenedor o directamente desde el editor).
-
Asocias un evento de disparo (trigger), como una solicitud HTTP, un objeto en S3 o un mensaje en una cola.
-
AWS Lambda ejecuta tu código cuando se produce ese evento.
-
El código se ejecuta en entornos aislados (sandbox) por función.
🧩 Componentes clave
| Componente | Descripción |
|---|---|
| Función Lambda | Unidad de ejecución: código + configuración. |
| Evento de activación | Fuente que invoca la función (S3, API Gateway, DynamoDB, etc). |
| Entorno de ejecución | Lenguaje + sistema base (Node.js, Python, Java, etc). |
| Roles IAM | Controlan lo que la función Lambda puede hacer dentro de AWS. |
| Variables de entorno | Parámetros configurables sin alterar el código fuente. |
| Layers (capas) | Reutilización de dependencias comunes entre funciones. |
| Destinos | Define adónde se envía el resultado o error de una ejecución asíncrona. |
📦 Lenguajes soportados
-
Node.js
-
Python
-
Java
-
Go
-
Ruby
-
.NET Core (C#)
-
Custom runtimes (mediante contenedores Docker o Lambda Runtime API)
📅 Tipos de invocación
| Tipo | Descripción |
|---|---|
| Síncrona | Espera respuesta (API Gateway, CLI, SDK). |
| Asíncrona | Devuelve inmediatamente (S3, SNS). El resultado se gestiona en segundo plano. |
| Por stream | Procesamiento continuo (Kinesis, DynamoDB Streams). |
| Programada | Usando EventBridge (CloudWatch Events) para tareas recurrentes. |
🛠️ Configuración clave de una función
-
Timeout: Máximo tiempo de ejecución (hasta 15 minutos).
-
Memoria asignada: De 128 MB a 10 GB (afecta también a la CPU y red).
-
Niveles de concurrencia:
-
Por defecto: Escalado automático.
-
Límite de concurrencia reservado: Para controlar uso.
-
-
Retries y dead-letter queue (DLQ): Para manejar errores en ejecuciones fallidas.
⚙️ Integraciones comunes
| Servicio | Uso con Lambda |
|---|---|
| API Gateway | Exposición como API RESTful/HTTP. |
| S3 | Procesar archivos al cargarse. |
| DynamoDB | Reaccionar a cambios en tablas. |
| SNS/SQS | Procesar mensajes. |
| EventBridge | Disparadores programados o eventos personalizados. |
| CloudWatch | Monitoreo, logs, métricas y alarmas. |
| Step Functions | Orquestación de múltiples funciones Lambda. |
🧾 Costos de Lambda
Facturación basada en:
-
Número de invocaciones (primer millón gratis por mes).
-
Duración: Tiempo en milisegundos multiplicado por la memoria asignada.
-
Otros posibles cargos: Tráfico de red, servicios relacionados (S3, DynamoDB, etc.).
🛡️ Seguridad
-
IAM Roles: Define permisos para que la función interactúe con otros recursos AWS.
-
VPC: Lambda puede acceder a recursos dentro de una VPC (como RDS o ElastiCache).
-
KMS: Cifrado de variables de entorno o datos.
📈 Monitoreo y Logs
-
Amazon CloudWatch Logs: Registra los resultados y errores de ejecución.
-
Métricas por defecto:
-
Invocations
-
Duration
-
Errors
-
Throttles
-
IteratorAge (para streams)
-
-
Tracing: Con AWS X-Ray para rastreo de llamadas entre servicios.
🔁 Versiones y Alias
-
Versiones: Inmutables, útiles para despliegues controlados.
-
Alias: Apuntan a versiones, útil para entornos (
dev,prod) y deploys progresivos.
🚦 Buenas prácticas
-
Mantén funciones pequeñas, una responsabilidad por función.
-
Control de errores explícito con try/catch.
-
Usa Layers para compartir dependencias.
-
Monitorea con CloudWatch y X-Ray.
-
Define tiempos límite y usa timeouts razonables.
-
Evita mantener estado en memoria: Lambda no garantiza persistencia entre ejecuciones.
-
Usa variables de entorno para configuración externa.
-
Usa provisioned concurrency si necesitas latencia muy baja.
🎯 Casos de uso comunes
-
APIs serverless.
-
Procesamiento de imágenes o archivos (desde S3).
-
Automatización de tareas administrativas.
-
ETL y procesamiento de datos.
-
Integración con chatbots y asistentes.
-
Backend de microservicios.
-
Eventos en tiempo real (IoT, logs, etc.).