Provisiona a VPC customizada da Sizebay com subnets públicas e privadas, NAT Gateway e Internet Gateway.
Os recursos eram provisionados na VPC default da AWS, que atribui IPs públicos às instâncias EC2 automaticamente. Essa VPC customizada resolve dois problemas:
- Custo: instâncias EC2 em subnets privadas não precisam de IPv4 público, eliminando a cobrança de ~$0.005/hora por IP
- Segurança: instâncias sem IP público não são acessíveis diretamente da internet; o acesso de saída é feito via NAT Gateway
VPC (10.0.0.0/16)
├── Subnet pública us-east-1a (10.1.0.0/24) ← ALB + NAT Gateway
├── Subnet pública us-east-1b (10.1.1.0/24) ← ALB
├── Subnet privada us-east-1a (10.1.2.0/24) ← EC2 instances
└── Subnet privada us-east-1b (10.1.3.0/24) ← EC2 instances
Internet Gateway → Route Table pública
NAT Gateway → Route Table privada (saída para internet sem IP público)
As subnets são tagueadas com Tier = "public" e Tier = "private", permitindo que os projetos descubram as subnets corretas via data "aws_subnets" sem precisar hardcodar IDs.
# Staging
terraform init
terraform apply -var-file="env-staging.tfvars"
# Production
terraform init
terraform apply -var-file="env-production.tfvars"| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| aws_region | AWS region | string | "us-east-1" |
no |
| environment | Environment identifier (e.g. staging, production) | string | n/a | yes |
| project | Project/company name for tagging and naming | string | n/a | yes |
| vpc_cidr | CIDR block for the VPC | string | "10.1.0.0/16" |
no |
| public_subnet_cidrs | CIDRs for public subnets, one per AZ | list(string) | n/a | yes |
| private_subnet_cidrs | CIDRs for private subnets, one per AZ | list(string) | n/a | yes |
| availability_zones | Availability zones (must match number of CIDRs) | list(string) | n/a | yes |
| Name | Description |
|---|---|
| vpc_id | ID da VPC criada |
| vpc_cidr | CIDR da VPC |
| public_subnet_ids | IDs das subnets públicas |
| private_subnet_ids | IDs das subnets privadas |
| nat_gateway_id | ID do NAT Gateway |
| nat_gateway_public_ip | IP público do NAT Gateway |
Copie o vpc_id do output e atualize o aws_vpc_id no env-staging.tfvars dos projetos que usam o módulo terraform-ha-ec2-shared.