Saltar al contenido principal

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)​

TriggerDescripciónEjemplo
API GatewaySolicitud HTTPREST API
S3Carga de archivoProcesamiento de imagen
DynamoDBCambio de datosSincronización, notificación
SQSMensaje en colaProcesamiento asíncrono
CloudWatch EventsProgramaciónTarea cron
SNSNotificaciónFan-out

4. Límites de Lambda​

LímiteValorNotas
Timeout máx15 minutosPor ejecución
Memoria128 MB - 10 GBCPU proporcional
Paquete50 MB (zip) / 250 MB (descomprimido)Código + dependencias
Concurrencia1000 (por defecto)Por cuenta/región
/tmp storage512 MB - 10 GBTemporal

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
  1. Conceptos Lambda
  2. Creación de Funciones
  3. Quiz de Validación - 30 preguntas para validar sus conocimientos
  4. Lab: Lambda

Semana siguiente: MÓDULO 12 - Solución de Problemas Lambda