Skip to content

Repositorio correspondiente al G2023Q1-G4

Notifications You must be signed in to change notification settings

itba-cloud/2023Q1-G4

Repository files navigation

Cloud Computing

Integrantes

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%

Ejecución

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 

Arquitectura

El diagrama completo de la arquitectura se encuentra dentro de /assets/architecture.pdf.

Módulos

  • VPC
    • Security Group
    • Route table
  • Lambda
  • Bucket S3
  • CloudFront
  • API Gateway
  • DNS
    • Route53
    • ACM

DNS

DNS

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:

S3

S3

Para la configuración del bucket S3 se utilizó el módulo aws_s3_bucket.

CloudFront

CloudFront

Para la configuración de CloudFront se utilizó el módulo aws_cloudfront_distribution.

API Gateway

API Gateway

Para la configuración de API Gateway se utilizó el módulo aws_api_gateway_rest_api.

VPC

VPC

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.

Lambda

Lambda

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.

Referencias

A continuación se detallan las funciones de terraform y los meta argumentos.

Funciones

  1. floor()
  2. jsonencode()
  3. sha1()
  4. cidrsubnet()

Meta Argumentos

  1. depends_on
  2. for_each
  3. count