Nombre | Legajo | Participación |
---|---|---|
Ana Cruz | 60476 | 20% |
Matías Lombardi | 60527 | 20% |
Gian Luca Pecile | 59235 | 20% |
Salustiano Zavalía | 60312 | 20% |
Lucas Gomez | 60408 | 20% |
Para ejecutar los comandos de terraform necesarios se debe tener previamente instalado el CLI de AWS y configurado con las credenciales de la cuenta de AWS a utilizar en el archivo ~/.aws/credentials
.
Para ejecutar el comando de terraform que crea la infraestructura se debe ejecutar el siguiente comando:
terraform init
terraform apply -var-file=config.tfvars -auto-approve
El diagrama completo de la arquitectura se encuentra dentro de /assets/architecture.pdf
.
- VPC
- Security Group
- Route table
- Lambda
- Bucket S3
- CloudFront
- API Gateway
- DNS
- Route53
- ACM
Para la configuración del DNS se utilizó Route53 para la creación de los registros y ACM para la creación del certificado SSL.
Se hace uso de los módulos:
Para la configuración del bucket S3 se utilizó el módulo aws_s3_bucket
.
Para la configuración de CloudFront se utilizó el módulo aws_cloudfront_distribution
.
Para la configuración de API Gateway se utilizó el módulo aws_api_gateway_rest_api
.
Para la configuración de la VPC se creó un módulo custom-made vpc
que crea la VPC, subnets, internet gateway, route table, security groups, etc.
Se decidió que los únicos parámetros obligatorios son availability_zones
, public_subnet_count
y private_subnet_count
. Cada subred usará 8 bits para los hosts por defecto (configurable cambiando los subnet_bits
), mientras que la VPC usará 16. Tomamos esa decisión para abstraer la configuración del módulo de los CIDRs que va a tener cada subred, reduciendo la posibilidad del error humano y haciéndola menos engorrosa. También podemos configurar el CIDR de la VPC mediante la variable vpc_cidr_block
, pero por defecto usamos 10.0.0.0/16
.
Por cuestiones de completitud también configuramos un Internet Gateway, tablas de routing y asociamos las subredes a las tablas correspondientes. Además de eso, configuramos el security group de la VPC para que permita el tráfico entrante HTTPS.
Para la configuración de Lambda se hace uso del módulo aws_lambda_function
. En particular se utiliza el atributo lambda_function_in_vpc
que permite ejecutar la función dentro de la VPC.
A continuación se detallan las funciones de terraform y los meta argumentos.