MÓDULO 11 - Serverless: AWS Lambda
Visión General
este módulo introduce el serverless con AWS Lambda. Es un paradigma diferente donde usted no tiene servidores que administrar: solo escribe el código que se ejecuta bajo demanda.
Evaluación Sumativa
este módulo incluye la Evaluación 3 (25%) que cubre Lambda y la validación.
¡LocalStack Soporta Lambda!
Buenas noticias: LocalStack emula bien Lambda. ¡Podrá practicar realmente este módulo!
Objetivos de Aprendizaje
- Comprender el paradigma serverless
- Comparar Lambda vs máquinas virtuales
- Crear y desplegar funciones Lambda
- Configurar los permisos IAM mínimos
- Analizar los logs de CloudWatch
- Probar y validar funciones
Contenido de la Semana
1. Serverless vs VM
┌─────────────────────────────────────────────────────────────┐
│ SERVERLESS vs VM │
├─────────────────────────────────────────────────────────────┤
│ │
│ EC2 (VM) LAMBDA (Serverless) │
│ ──────── ──────────────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Instance │ │ Function │ │
│ │ (24/7) │ │ (on demand) │ │
│ │ │ │ │ │
│ │ OS + Runtime │ │ Code only │ │
│ │ + Application │ │ │ │
│ │ │ │ Triggered by │ │
│ │ Always UP │ │ event │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Usted gestiona: Usted gestiona: │
│ • OS • Code │
│ • Patching • Configuration │
│ • Scaling │
│ • Disponibilidad AWS gestiona el resto │
│ │
│ Facturación: Facturación: │
│ • Por hora • Por ejecución │
│ • Aunque esté idle • 0$ si no hay ejecución │
│ │
└─────────────────────────────────────────────────────────────┘
2. Anatomía de una Función Lambda
# Exemple Python
def handler(event, context):
"""
Handler = Punto de entrada de la función
event = Datos de entrada (JSON)
context = Información de runtime (timeout restante, memoria...)
"""
# Su lógica aquí
name = event.get('name', 'World')
message = f"Hello, {name}!"
# Retorno (el formato depende del trigger)
return {
'statusCode': 200,
'body': message
}
3. Triggers (Desencadenadores)
| Trigger | Descripción | Ejemplo |
|---|---|---|
| API Gateway | Solicitud HTTP | REST API |
| S3 | Carga de archivo | Procesamiento de imagen |
| DynamoDB | Cambio de datos | Sincronización, notificación |
| SQS | Mensaje en cola | Procesamiento asíncrono |
| CloudWatch Events | Programación | Tarea cron |
| SNS | Notificación | Fan-out |
4. Límites de Lambda
| Límite | Valor | Notas |
|---|---|---|
| Timeout máx | 15 minutos | Por ejecución |
| Memoria | 128 MB - 10 GB | CPU proporcional |
| Paquete | 50 MB (zip) / 250 MB (descomprimido) | Código + dependencias |
| Concurrencia | 1000 (por defecto) | Por cuenta/región |
| /tmp storage | 512 MB - 10 GB | Temporal |
Laboratorio Práctico con LocalStack
Crear una Función Lambda
# 1. Crear el archivo de función
cat > lambda_function.py << 'EOF'
def handler(event, context):
name = event.get('name', 'World')
return {
'statusCode': 200,
'body': f'Hello, {name}!'
}
EOF
# 2. Comprimir en zip
zip function.zip lambda_function.py
# 3. Crear la función en LocalStack
awslocal lambda create-function \
--function-name hello-function \
--runtime python3.9 \
--handler lambda_function.handler \
--zip-file fileb://function.zip \
--role arn:aws:iam::000000000000:role/lambda-role
# 4. Invocar la función
awslocal lambda invoke \
--function-name hello-function \
--payload '{"name": "AWS Student"}' \
output.txt
# 5. Ver el resultado
cat output.txt
Probar con API Gateway (LocalStack)
# Crear una API REST
awslocal apigateway create-rest-api \
--name 'Hello API'
# Listar las APIs
awslocal apigateway get-rest-apis
Evaluación 3 (25%)
Formato
- Laboratorio práctico LocalStack (60%)
- Preguntas teóricas (40%)
Contenido Cubierto
- Creación de funciones Lambda
- Invocación y pruebas
- Lectura de logs
- Casos de uso serverless
- Comparación con EC2
Entregable
Función Lambda documentada + pruebas:
- Código fuente comentado
- Capturas de pantalla de la invocación
- Análisis de logs
- Propuestas de mejora
Navegación
- Conceptos Lambda
- Creación de Funciones
- Quiz de Validación - 30 preguntas para validar sus conocimientos
- Lab: Lambda
Semana siguiente: MÓDULO 12 - Solución de Problemas Lambda