Introdução
Sua aplicação precisa de um espaço de endereçamento antes de poder ser executada. Você definirá uma VPC e uma sub-rede da AWS com o Terraform, comparará a rede implantada com o estado do Terraform e removerá apenas a rede da sua aplicação.
Você já deve conhecer o fluxo init/plan/apply do Terraform, endereços de recursos e os conceitos básicos de CIDR para VPCs e sub-redes da AWS. O Terminal, as ferramentas do Terraform, a AWS CLI e uma rede de referência separada estão preparados. Cada laboratório começa de forma independente; você não precisa de recursos de uma VM anterior.
Relação com certificações
| Certificação | Tarefa do exame | Prática |
|---|---|---|
| Solutions Architect – Associate (SAA-C03) | Tarefa 1.2 | Praticar os fundamentos de espaço de endereçamento de VPCs e sub-redes e de zonas de disponibilidade usados na segmentação de redes. |
Visão geral do laboratório

Defina e implante a VPC
Nesta etapa, você converterá o plano de endereçamento da aplicação em um recurso do Terraform e inspecionará a VPC resultante.
Abra o Terminal. O AWS View mostra os recursos de rede atuais; use-o para observar a topologia, enquanto a CLI fornece campos precisos e o Terraform gerencia as alterações. A rede existente reference-network pertence a outra aplicação e deve permanecer inalterada.
Uma VPC é um limite de rede regional. Seu bloco CIDR define seu intervalo de endereços: 10.62.0.0/16 reserva endereços para esta aplicação. aws_vpc.application do Terraform é um endereço de configuração, e não um ID da AWS. A AWS atribui o ID após a criação.
O diretório application-network contém a configuração preparada do provedor. Ela seleciona a conta fornecida e as versões testadas das ferramentas. Entre nesse diretório:
cd /home/labex/project/application-network
Crie main.tf. O heredoc com delimitador entre aspas escreve o HCL a seguir literalmente até HCL; > cria ou substitui esse arquivo. A tag Name facilita distinguir a rede da aplicação da rede de referência.
cat > main.tf <<'HCL'
resource "aws_vpc" "application" {
cidr_block = "10.62.0.0/16"
tags = {
Name = "application-network"
}
}
HCL
Inicialize o diretório de trabalho para selecionar o provedor necessário e, em seguida, formate e valide a configuração. A validação verifica a estrutura da configuração; ela não comprova que um recurso existe.
terraform init
terraform fmt
terraform validate
Se init informar Incomplete lock file information for providers, a mensagem descreve somas de verificação para outras plataformas. Esta VM preparada usa linux_amd64; continue depois que a inicialização e a validação forem concluídas com sucesso.
Revise um plano. O Terraform também descreve as configurações padrão da VPC; localize cidr_block e a tag Name na adição proposta.
terraform plan
O resumo final deve mostrar um recurso a adicionar. Aplique a configuração e digite yes quando o Terraform solicitar confirmação:
terraform apply
Consulte a VPC existente na AWS. --filters seleciona a tag da aplicação; --query exibe apenas o ID e o CIDR. O ID varia, enquanto o CIDR deve ser 10.62.0.0/16.
aws ec2 \
describe-vpcs \
--filters Name=tag:Name,Values=application-network \
--query 'Vpcs[].{ID:VpcId,CIDR:CidrBlock}'
Observe novamente o AWS View: a VPC da aplicação aparece ao lado da VPC de referência. A nova VPC ainda não tem uma sub-rede da aplicação.
Conecte uma sub-rede com uma referência a recurso
Nesta etapa, você criará uma sub-rede dentro da VPC da aplicação e verificará seu intervalo de endereços, sua zona de disponibilidade e seu mapeamento no Terraform.
Uma sub-rede pertence a exatamente uma VPC e uma zona de disponibilidade. Use 10.62.1.0/24, um intervalo menor dentro do /16 da VPC, em us-east-1a. Nem esse CIDR nem uma zona de disponibilidade, por si só, tornam uma sub-rede pública; o roteamento para a internet e as regras de acesso serão tratados depois.
Crie subnet.tf. A expressão aws_vpc.application.id faz referência ao recurso VPC. O Terraform usa essa dependência para criar a VPC antes da sub-rede e obtém o ID real automaticamente. Você não copia um ID da saída de um comando para o HCL.
cat > subnet.tf <<'HCL'
resource "aws_subnet" "application" {
vpc_id = aws_vpc.application.id
cidr_block = "10.62.1.0/24"
availability_zone = "us-east-1a"
tags = {
Name = "application-subnet"
}
}
output "vpc_id" {
value = aws_vpc.application.id
}
output "subnet_id" {
value = aws_subnet.application.id
}
HCL
Formate e valide o novo arquivo e, em seguida, revise o plano. Ele deve adicionar uma sub-rede e expor dois valores de saída, sem substituir sua VPC.
terraform fmt
terraform validate
terraform plan
Aplique e confirme com yes:
terraform apply
Salve e exiba os IDs gerados. $(...) captura a saída de um comando; terraform output -raw retorna uma string sem aspas.
VPC_ID=$(terraform output -raw vpc_id)
echo "$VPC_ID"
SUBNET_ID=$(terraform output -raw subnet_id)
echo "$SUBNET_ID"
Consulte a AWS de forma independente. O campo de VPC da sub-rede deve corresponder ao ID de VPC exibido, seu CIDR deve ser 10.62.1.0/24 e sua zona de disponibilidade deve ser us-east-1a.
aws ec2 \
describe-subnets \
--subnet-ids "$SUBNET_ID" \
--query 'Subnets[].{ID:SubnetId,VPC:VpcId,CIDR:CidrBlock,Zone:AvailabilityZone}'
O estado do Terraform mapeia endereços de configuração para recursos implantados. Inspecione esse mapeamento; compare os IDs da VPC e da sub-rede com a AWS, em vez de tratar uma entrada no estado como prova de uma rede funcional.
terraform state list
terraform state show aws_subnet.application
A lista inclui aws_vpc.application e aws_subnet.application. Agora verifique a convergência:
terraform plan
Espere No changes. No AWS View, a sub-rede da aplicação aparece dentro da VPC à qual ela de fato pertence, ao lado da rede de referência inalterada.

Remova apenas a rede da aplicação
Nesta etapa, você revisará a ordem de exclusão, destruirá sua pilha do Terraform e confirmará que a rede de referência permanece.
O Terraform usa o mesmo grafo de dependências em ordem inversa: ele remove a sub-rede antes da VPC. Um plano de destruição abrange os recursos gerenciados por este diretório de trabalho, portanto a rede de referência preparada separadamente não deve aparecer.
Revise as exclusões planejadas:
terraform plan -destroy
Espere dois recursos a destruir. Verifique os endereços dos recursos antes de continuar. Em seguida, destrua a rede da aplicação e digite yes:
terraform destroy
Consulte os recursos da aplicação por tag. As duas consultas devem retornar listas vazias; uma solicitação com falha não comprova a exclusão.
aws ec2 \
describe-vpcs \
--filters Name=tag:Name,Values=application-network \
--query 'Vpcs[].VpcId'
aws ec2 \
describe-subnets \
--filters Name=tag:Name,Values=application-subnet \
--query 'Subnets[].SubnetId'
Confirme que o Terraform não gerencia mais nenhum recurso:
terraform state list
O comando não imprime endereços de recursos. Por fim, inspecione a sub-rede de referência preservada:
aws ec2 \
describe-subnets \
--filters Name=tag:Name,Values=reference-subnet \
--query 'Subnets[].{CIDR:CidrBlock,Zone:AvailabilityZone}'
Seu CIDR permanece 10.90.1.0/24 em us-east-1b. O AWS View agora mostra apenas a rede de referência. Seus arquivos HCL continuam disponíveis para revisão, embora os recursos da aplicação tenham sido excluídos.
Resumo
Você definiu uma VPC e uma sub-rede em HCL, usou uma referência a recurso para conectá-las, comparou os campos reais da rede AWS com o estado do Terraform e confirmou um plano sem alterações. Em seguida, removeu apenas sua rede gerenciada e preservou uma rede de referência não relacionada. O roteamento e as regras de segurança são etapas separadas para tornar uma aplicação acessível.



