Criar uma VPC com sub-redes de aplicação

AWSBeginner
Pratique Agora

Introdução

Uma aplicação de entrega de pacotes precisa de intervalos de endereços separados para o serviço público e os processos internos. Você criará uma VPC, posicionará duas sub-redes sem sobreposição em zonas de disponibilidade diferentes e examinará o plano de endereços no AWS View.

Você já deve saber executar comandos da AWS CLI e ler IDs de recursos. A CLI está configurada para este ambiente novo. Ao terminar, você removerá somente os recursos que criou.

Relação com certificações

Este laboratório oferece prática dos seguintes tópicos de exame.

Criar a VPC de entregas

Nesta etapa, você escolherá o intervalo geral de endereços da aplicação e criará sua VPC.

Uma Virtual Private Cloud (VPC) é uma rede isolada para recursos de uma região da AWS. Seu bloco CIDR define os endereços que as sub-redes podem usar. A notação CIDR IPv4 combina endereço inicial e tamanho do prefixo: 10.20.0.0/16 inclui de 10.20.0.0 a 10.20.255.255. Um número de prefixo menor deixa mais bits para endereços; portanto, /16 é maior que /24.

Use o Terminal preparado para os comandos e clique na aba AWS View ao lado. A visualização lê o mesmo estado de recursos que a CLI e mostra os recursos de rede criados. Mantenha ambas as interfaces disponíveis.

Comece no diretório de trabalho:

cd /home/labex/project

Antes de alterar algo, consulte o inventário de VPCs existentes. --query seleciona ID e CIDR; --output table facilita a comparação:

aws ec2 describe-vpcs --query 'Vpcs[].{ID:VpcId,CIDR:CidrBlock}' --output table

Uma rede de referência usa 10.99.0.0/16. Outras VPCs existentes também podem aparecer. Preserve essas redes; você criará e depois removerá sua própria rede 10.20.0.0/16.

O grupo de comandos EC2 inclui operações de rede VPC. --cidr-block define o intervalo; --tag-specifications adiciona as tags Name e Project na criação. As aspas mantêm colchetes e vírgulas juntos em um único argumento.

A expressão de shell $(...) executa um comando e captura sua saída. Atribuí-la a VPC_ID salva o ID gerado para os próximos comandos. --query 'Vpc.VpcId' --output text retorna apenas esse ID:

VPC_ID=$(aws ec2 create-vpc \
  --cidr-block 10.20.0.0/16 \
  --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=delivery-network},{Key=Project,Value=parcel}]' \
  --query 'Vpc.VpcId' \
  --output text)

Um comando cuja saída é capturada não imprime o resultado. Leia novamente o recurso usando o ID salvo. "$VPC_ID" substitui o valor como um único argumento:

aws ec2 describe-vpcs \
  --vpc-ids "$VPC_ID" \
  --query 'Vpcs[].{ID:VpcId,CIDR:CidrBlock,State:State}' \
  --output table

O CIDR é 10.20.0.0/16 e o estado é available. No AWS View, aparece delivery-network com o mesmo CIDR e sem sub-redes de aplicação. Mantenha esse Terminal aberto para preservar os IDs salvos.

Adicionar a sub-rede do serviço público

Nesta etapa, você alocará um intervalo menor dentro da VPC e o posicionará em uma zona de disponibilidade.

Uma sub-rede é uma parte do intervalo de endereços da VPC. Cada sub-rede pertence a exatamente uma zona de disponibilidade (AZ) da região; a VPC abrange a região. Um nome como us-east-1a identifica onde os recursos da sub-rede serão posicionados.

Reserve 10.20.1.0/24 para o futuro serviço público. O intervalo inclui de 10.20.1.0 a 10.20.1.255 e está dentro de 10.20.0.0/16. A AWS reserva os primeiros quatro endereços e o último de uma sub-rede IPv4 comum, deixando 251 endereços atribuíveis neste /24. Não atribua os endereços reservados às cargas de trabalho.

Examine os nomes das zonas disponíveis. A região foi configurada quando o ambiente iniciou:

aws ec2 describe-availability-zones \
  --query 'AvailabilityZones[].{Zone:ZoneName,State:State}' \
  --output table

Use us-east-1a nesta sub-rede e us-east-1b na próxima. --vpc-id escolhe a rede pai; --availability-zone, o posicionamento. Salve o novo ID para a limpeza:

PUBLIC_SUBNET_ID=$(aws ec2 create-subnet \
  --vpc-id "$VPC_ID" \
  --cidr-block 10.20.1.0/24 \
  --availability-zone us-east-1a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=delivery-public},{Key=Project,Value=parcel}]' \
  --query 'Subnet.SubnetId' \
  --output text)

Leia novamente a rede pai, o intervalo e a zona:

aws ec2 describe-subnets \
  --subnet-ids "$PUBLIC_SUBNET_ID" \
  --query 'Subnets[].{ID:SubnetId,VPC:VpcId,CIDR:CidrBlock,Zone:AvailabilityZone}' \
  --output table

O ID da VPC corresponde ao salvo, o intervalo é 10.20.1.0/24 e a zona é us-east-1a. AWS View coloca essa sub-rede dentro de delivery-network.

O nome delivery-public descreve o uso pretendido. Um nome sozinho não torna a sub-rede pública: ela ainda precisa de uma rota para um gateway de Internet, que você configurará no próximo laboratório.

Adicionar uma sub-rede separada para os processos internos

Nesta etapa, você dará aos processos internos uma sub-rede própria sem sobreposição e comparará o plano completo.

Duas sub-redes da mesma VPC não podem se sobrepor. Usar 10.20.2.0/24 para os processos internos separa seu intervalo de 10.20.1.0/24. Ambos estão dentro do /16 da VPC.

Posicione a sub-rede em us-east-1b para observar que uma VPC contém sub-redes em zonas diferentes. Isso demonstra o posicionamento; você ainda não implantou uma aplicação redundante entre as zonas.

PRIVATE_SUBNET_ID=$(aws ec2 create-subnet \
  --vpc-id "$VPC_ID" \
  --cidr-block 10.20.2.0/24 \
  --availability-zone us-east-1b \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=delivery-private},{Key=Project,Value=parcel}]' \
  --query 'Subnet.SubnetId' \
  --output text)

Use um filtro no servidor para selecionar somente as sub-redes da sua VPC. Em Name=vpc-id,Values=..., Name identifica o filtro e Values contém o ID correspondente:

aws ec2 describe-subnets \
  --filters "Name=vpc-id,Values=$VPC_ID" \
  --query 'Subnets[].{ID:SubnetId,CIDR:CidrBlock,Zone:AvailabilityZone}' \
  --output table

As duas linhas mostram o plano abaixo. Os IDs gerados e a ordem podem variar:

Uso CIDR Zona de disponibilidade
Serviço público 10.20.1.0/24 us-east-1a
Processos internos 10.20.2.0/24 us-east-1b

Tente adicionar 10.20.1.128/25 para observar o limite de sobreposição. Esse intervalo menor já está dentro de delivery-public, portanto não pode ser outra sub-rede desta VPC:

aws ec2 create-subnet \
  --vpc-id "$VPC_ID" \
  --cidr-block 10.20.1.128/25 \
  --availability-zone us-east-1a

O erro esperado contém InvalidSubnet.Conflict. Nenhuma terceira sub-rede é criada. Preserve os dois intervalos /24 válidos.

Compare os mesmos intervalos e zonas no AWS View. Nenhuma sub-rede tem uma rota para a Internet ainda. Os intervalos distintos oferecem locais separados para aplicar rotas e regras de acesso nos próximos laboratórios.

A VPC de entregas contém duas sub-redes sem sobreposição em zonas de disponibilidade diferentes

Exemplo: ambos os CIDRs estão dentro do intervalo da VPC; cada sub-rede mostra sua zona. Os IDs variam no seu ambiente.

Remover a rede de prática

Nesta etapa, você removerá suas duas sub-redes e a VPC, preservando a rede de referência existente.

Os recursos têm dependências: uma VPC não pode ser removida enquanto contém suas sub-redes. Exclua apenas os IDs que você salvou. Um comando de exclusão bem-sucedido não produz saída:

aws ec2 delete-subnet --subnet-id "$PUBLIC_SUBNET_ID"
aws ec2 delete-subnet --subnet-id "$PRIVATE_SUBNET_ID"

Agora remova a VPC vazia:

aws ec2 delete-vpc --vpc-id "$VPC_ID"

Leia novamente o inventário completo de VPCs em vez de depender de uma tag editável para provar a exclusão:

aws ec2 describe-vpcs --query 'Vpcs[].{ID:VpcId,CIDR:CidrBlock}' --output table

Não há VPC 10.20.0.0/16. A referência 10.99.0.0/16 e as demais redes existentes permanecem. Uma consulta de inventário que falha não comprova a limpeza. AWS View mostra que não há VPC de aplicação.

Execute a verificação de conclusão desta etapa.

O próximo laboratório começa em um ambiente novo com sua própria aplicação preparada. Ele ensina como um gateway de Internet, uma rota e um endereço público permitem que uma solicitação externa alcance a aplicação.

Resumo

Você criou um intervalo de VPC, dividiu-o em duas sub-redes de aplicação sem sobreposição e posicionou cada uma em uma zona de disponibilidade. Conferiu as relações com a CLI e AWS View e removeu somente sua rede de prática.

Continue com Conectar uma sub-rede pública à Internet para transformar o plano de endereços em um caminho de aplicação funcional.