Módulo 6 · Serverless/Lección 42
Una aplicación serverless completa
Frontend en S3 y CloudFront, usuarios en Cognito, API Gateway, Lambda y DynamoDB. Cómo encajan las piezas.
Las piezas sueltas ya las conoces. Ahora toca armarlas: una aplicación web completa donde no hay una sola instancia EC2. El ejemplo es una app para reportar daños en un conjunto: los residentes inician sesión, crean un reporte con foto y la administración recibe un aviso.
Pasa el mouse para ver qué es cada pieza; haz clic para abrir su ficha. En el celular, usa los botones de abajo.
Amazon API Gateway
API Gateway
AnalogíaLa ventanilla que recibe las solicitudes, revisa el carné y las pasa a quien corresponde.
Cada ruta de la API (por ejemplo, POST /pedidos) se conecta con una función Lambda. API Gateway valida el token de Cognito antes de llamar a la función, y limita cuántas peticiones acepta.
Escala solo y se paga por petición.
Las piezas y su papel
Amazon S3
Guarda el frontend ya compilado (HTML, CSS, JavaScript) y las fotos de los reportes en buckets distintos.Amazon CloudFront
Sirve el frontend desde ubicaciones de borde cercanas al usuario, con HTTPS y caché.Amazon Cognito
Registro, inicio de sesión y tokens de los usuarios de la app. No guardas contraseñas en tu base.Amazon API Gateway
La API de la app: valida el token de Cognito y enruta cada petición a su función.AWS Lambda
La lógica: crear un reporte, listar reportes, generar URLs para subir fotos.Amazon DynamoDB
Guarda los reportes. Escala con las peticiones y no tiene servidores que parchar.Amazon SQS
Deja trabajos pendientes, como generar miniaturas, para que la API responda rápido.Amazon EventBridge
Publica el evento «reporte creado» para que otros procesos reaccionen sin acoplarse.
Sigue una petición
Un residente abre la app y crea un reporte con foto. Esto es lo que pasa, paso a paso:
- 1
Carga la app
El navegador pideapp.ejemplo.com. Route 53 resuelve el nombre hacia CloudFront, que entrega el HTML y el JavaScript desde S3. - 2
Inicia sesión
El frontend envía usuario y contraseña a Cognito. Cognito devuelve tokens firmados que identifican al residente. - 3
Pide permiso para subir la foto
El frontend llama aPOST /fotoscon el token. API Gateway lo valida y una función Lambda genera una URL prefirmada de S3, válida por pocos minutos. - 4
Sube la foto directo a S3
El navegador sube el archivo a esa URL. La foto no pasa por API Gateway ni por Lambda, así que no consume su tiempo ni su límite de carga. - 5
Crea el reporte
El frontend llama aPOST /reportes. Lambda guarda el reporte en DynamoDB con la llave de la foto y responde de inmediato. - 6
Lo lento, en segundo plano
Lambda deja un mensaje en SQS para generar la miniatura y publica «reporte creado» en EventBridge. Otra función avisa a la administración.
Qué ganas y qué cuidas
- Sin servidores que operar: nada que parchar ni dimensionar. Todo escala por pieza.
- Costo proporcional al uso: si el conjunto está tranquilo un domingo, casi no hay cómputo que pagar.
- Disponibilidad: cada servicio ya está repartido en varias zonas de la región.
- Lo que sigue siendo tuyo: los permisos de cada función, la validación de datos, los límites de cada servicio y la observabilidad. Con muchas piezas, necesitas logs y trazas (CloudWatch y X-Ray).
Dónde encaja AWS Amplify
Armar todo lo anterior a mano lleva trabajo. AWS Amplify es un conjunto de herramientas para crear aplicaciones web y móviles de pila completa. Tiene dos partes:
Amplify Hosting
Conectas tu repositorio y Amplify compila y publica el frontend con HTTPS y CDN en cada cambio.Backend de Amplify
Defines autenticación, datos, almacenamiento y funciones desde tu proyecto. Por debajo crea Cognito, DynamoDB, S3, Lambda y otros servicios.
Repasa las piezas por separado: S3, DynamoDB, Lambda y API Gateway.
Quiz
Pon a prueba lo que aprendiste
0 de 5 correctas · 5 sin responder
1.¿Cuál es la forma más común de alojar el frontend estático de una aplicación serverless en AWS?
2.Los usuarios deben subir fotos grandes sin que pasen por Lambda. ¿Qué usas?
3.Un equipo de desarrollo web quiere publicar su frontend y crear autenticación y datos con la menor configuración posible. ¿Qué servicio usa?
4.Después de crear un pedido, la app debe generar una factura en PDF, lo cual tarda. ¿Qué diseño mantiene la API rápida?
5.En la arquitectura de esta lección, ¿qué servicio valida quién es el usuario antes de que la petición llegue a Lambda?