Módulos Terraform para AWS Serverless
Colección de módulos Terraform para desplegar aplicaciones serverless y basadas en contenedores en AWS, siguiendo el Well-Architected Framework.
evergreen#terraform#aws#serverless#ecs#lambda#api-gateway#dynamodb#well-architected
¿Qué es?
Una colección de 13 módulos Terraform reutilizables para desplegar arquitecturas serverless en AWS. Publicados en el Terraform Registry y disponibles como open source.
El objetivo es demostrar patrones de arquitectura serverless con las mejores prácticas del AWS Well-Architected Framework: seguridad, confiabilidad, excelencia operacional, rendimiento y optimización de costos.
Módulos
| Módulo | Descripción |
|---|---|
| vpc | VPC Multi-AZ con NAT gateways, VPC endpoints, flow logs |
| ecr | Container registry con encriptación, lifecycle policies, image scanning |
| ecs | Fargate service con auto-scaling, Container Insights, soporte Spot |
| lambda | Funciones Lambda con container images, DLQ, retry policies |
| alb | Application Load Balancer con access logs, HTTPS, health checks |
| sqs | Colas de mensajes FIFO, DLQ, encriptación, long polling |
| sns | Pub/sub con suscripciones a Email, SQS, Lambda y filtrado |
| dynamodb | Base de datos NoSQL con encriptación, PITR, auto-scaling |
| api-gateway | HTTP API (v2) con throttling, logging, X-Ray |
| api-gateway-v1 | REST API con soporte OpenAPI/Swagger, VPC Link |
| cloudfront-s3 | CDN + hosting estático con SPA routing, OAC |
| waf | Web Application Firewall con rate limiting, IP filtering |
| cloudwatch-alarms | Monitoreo de CPU, memoria, response time, error rates |
Patrones de arquitectura
ECS con ALB:
graph LR
A[Client] --> B[ALB]
B --> C[ECS Tasks 1-N]
C --> D[ECR]
API Gateway con VPC Link:
graph LR
A[Client] --> B[API Gateway]
B --> C[VPC Link]
C --> D[Private ALB]
D --> E[ECS Tasks]
CRUD API:
graph LR
A[Client] --> B[API Gateway]
B --> C[ECS Fargate]
C --> D[DynamoDB]
A --> E[CloudFront]
E --> F[S3 Static Site]
Uso
module "vpc" {
source = "jonmatum/serverless-modules/aws//modules/vpc"
version = "~> 2.0"
project_name = "my-app"
cidr_block = "10.0.0.0/16"
}
module "ecs" {
source = "jonmatum/serverless-modules/aws//modules/ecs"
version = "~> 2.0"
cluster_name = "my-cluster"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnet_ids
}Costos estimados
| Ambiente | Costo mensual | Configuración |
|---|---|---|
| Desarrollo | $70-90 | Single NAT, Fargate Spot, 1 task |
| Staging | $150-200 | Single NAT, On-Demand, 2 tasks |
| Producción | $200-400 | Multi-AZ NAT, Auto-scaling 2-10 tasks |
Links
- Repositorio en GitHub — Código fuente de los módulos.
- Terraform Registry — Módulos publicados en el registro oficial de Terraform.
- Documentación Well-Architected — Mapeo de decisiones al Well-Architected Framework.