Experimentos

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óduloDescripción
vpcVPC Multi-AZ con NAT gateways, VPC endpoints, flow logs
ecrContainer registry con encriptación, lifecycle policies, image scanning
ecsFargate service con auto-scaling, Container Insights, soporte Spot
lambdaFunciones Lambda con container images, DLQ, retry policies
albApplication Load Balancer con access logs, HTTPS, health checks
sqsColas de mensajes FIFO, DLQ, encriptación, long polling
snsPub/sub con suscripciones a Email, SQS, Lambda y filtrado
dynamodbBase de datos NoSQL con encriptación, PITR, auto-scaling
api-gatewayHTTP API (v2) con throttling, logging, X-Ray
api-gateway-v1REST API con soporte OpenAPI/Swagger, VPC Link
cloudfront-s3CDN + hosting estático con SPA routing, OAC
wafWeb Application Firewall con rate limiting, IP filtering
cloudwatch-alarmsMonitoreo 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

AmbienteCosto mensualConfiguración
Desarrollo$70-90Single NAT, Fargate Spot, 1 task
Staging$150-200Single NAT, On-Demand, 2 tasks
Producción$200-400Multi-AZ NAT, Auto-scaling 2-10 tasks

Links

Experimentos