July 31, 2025

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?

  1. Subes tu código como una función Lambda (en zip, contenedor o directamente desde el editor).

  2. Asocias un evento de disparo (trigger), como una solicitud HTTP, un objeto en S3 o un mensaje en una cola.

  3. AWS Lambda ejecuta tu código cuando se produce ese evento.

  4. El código se ejecuta en entornos aislados (sandbox) por función.


🧩 Componentes clave

ComponenteDescripción
Función LambdaUnidad de ejecución: código + configuración.
Evento de activaciónFuente que invoca la función (S3, API Gateway, DynamoDB, etc).
Entorno de ejecuciónLenguaje + sistema base (Node.js, Python, Java, etc).
Roles IAMControlan lo que la función Lambda puede hacer dentro de AWS.
Variables de entornoParámetros configurables sin alterar el código fuente.
Layers (capas)Reutilización de dependencias comunes entre funciones.
DestinosDefine 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

TipoDescripción
SíncronaEspera respuesta (API Gateway, CLI, SDK).
AsíncronaDevuelve inmediatamente (S3, SNS). El resultado se gestiona en segundo plano.
Por streamProcesamiento continuo (Kinesis, DynamoDB Streams).
ProgramadaUsando 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

ServicioUso con Lambda
API GatewayExposición como API RESTful/HTTP.
S3Procesar archivos al cargarse.
DynamoDBReaccionar a cambios en tablas.
SNS/SQSProcesar mensajes.
EventBridgeDisparadores programados o eventos personalizados.
CloudWatchMonitoreo, logs, métricas y alarmas.
Step FunctionsOrquestació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.).