Introdução
Uma aplicação de entregas está pronta dentro de uma VPC, mas seu serviço público ainda não consegue receber uma solicitação externa. Você criará o caminho que falta: um gateway da Internet anexado à VPC, uma rota padrão na tabela de rotas da sub-rede da aplicação e um endereço público associado à interface de rede da aplicação.
Conclua primeiro Criar uma VPC com sub-redes para aplicações. Este ambiente novo fornece sua própria VPC, sub-redes, aplicação e regras de acesso; ele não reutiliza sua VM anterior. A CLI já está configurada. Preserve a rede de referência não relacionada à tarefa e todos os recursos fornecidos para a aplicação.
Relação com certificações
Este laboratório oferece prática dos seguintes tópicos de exame.
- Cloud Practitioner (CLF-C02) · Tarefa 3.5: Componentes de gateway de VPC e sua finalidade.
- Solutions Architect – Associate (SAA-C03) · Tarefa 3.4: Condições básicas de roteamento e endereçamento de sub-redes públicas.
- CloudOps Engineer – Associate (SOA-C03) · Tarefas 5.1 e 5.3: Configuração básica de gateway da Internet e rotas, e diagnóstico de uma rota de VPC ausente.
- Advanced Networking – Specialty (ANS-C01) · Tarefa 2.2: Prática fundamental de configuração de roteamento em um projeto de conectividade com uma única VPC.
Anexar um gateway da Internet
Nesta etapa, você inspecionará a rede fornecida para a aplicação e anexará um gateway da Internet à sua VPC.
Use Terminal para os comandos e clique em AWS View ao lado. A visualização lê o mesmo estado de recursos que a CLI. A VPC application-network contém public-subnet e private-subnet; a aplicação fornecida usa o endereço privado 10.20.1.10 em public-subnet.
cd /home/labex/project
Selecione a VPC da aplicação pela tag Name. --filters limita os resultados do servidor; --query seleciona o ID. $(...) captura esse ID em uma variável do shell para as próximas etapas:
VPC_ID=$(aws ec2 describe-vpcs \
--filters Name=tag:Name,Values=application-network \
--query 'Vpcs[0].VpcId' \
--output text)
Consulte as sub-redes da rede selecionada:
aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=$VPC_ID" \
--query 'Subnets[].{CIDR:CidrBlock,ID:SubnetId}' \
--output table
Os intervalos são 10.20.1.0/24 e 10.20.2.0/24. A rede de referência separada 10.99.0.0/16 não participa da tarefa; preserve-a.
HTTP é o protocolo de solicitação e resposta usado pelo endpoint desta aplicação. Uma porta identifica o serviço receptor; esta aplicação escuta na porta TCP 80. Em AWS View, clique em Request application · client A. Isso envia uma solicitação externa a partir do cliente fornecido 198.51.100.10. O resultado é Connection failed com No public address. A aplicação existe, mas seu caminho público está incompleto.
Um gateway da Internet (IGW) conecta o caminho de roteamento público de uma VPC à Internet. Criar e anexar o gateway são operações separadas. Adicione tags ao novo gateway para identificar seu recurso de prática; a especificação de tags entre aspas é um único argumento:
IGW_ID=$(aws ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=parcel-internet},{Key=Project,Value=parcel}]' \
--query 'InternetGateway.InternetGatewayId' \
--output text)
Anexe apenas esse gateway à VPC selecionada da aplicação:
aws ec2 attach-internet-gateway --internet-gateway-id "$IGW_ID" --vpc-id "$VPC_ID"
Um anexo bem-sucedido não produz saída do comando. Consulte a relação:
aws ec2 describe-internet-gateways \
--internet-gateway-ids "$IGW_ID" \
--query 'InternetGateways[].{ID:InternetGatewayId,Attachments:Attachments}' \
--output json
O anexo identifica sua VPC e tem o estado available. AWS View agora mostra esse gateway abaixo da VPC. O anexo, por si só, não fornece uma rota de sub-rede nem um endereço público para a aplicação. Mantenha este Terminal aberto para preservar os IDs salvos.
Adicionar a rota padrão da sub-rede pública
Nesta etapa, você direcionará o tráfego de Internet da sub-rede pública ao gateway anexado.
Uma tabela de rotas associa intervalos de destino a alvos. Cada sub-rede usa sua tabela associada, ou a tabela principal da VPC caso não tenha uma associação explícita. Aqui, a preparação forneceu tabelas associadas separadamente: public-routes e private-routes. Selecione public-routes dentro da VPC da sua aplicação:
PUBLIC_ROUTE_TABLE_ID=$(aws ec2 describe-route-tables \
--filters "Name=vpc-id,Values=$VPC_ID" Name=tag:Name,Values=public-routes \
--query 'RouteTables[0].RouteTableId' \
--output text)
Consulte suas rotas e associações:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].{ID:RouteTableId,Routes:Routes,Associations:Associations}' \
--output json
A associação identifica public-subnet; a rota existente 10.20.0.0/16 tem o alvo local, que mantém o tráfego da VPC dentro dela. Não remova essa rota local nem altere private-routes.
Uma rota padrão, 0.0.0.0/0, cobre destinos IPv4 que não correspondem a uma rota mais específica. --gateway-id define o gateway da Internet como alvo:
aws ec2 create-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id "$IGW_ID"
A resposta contém Return: true. Consulte a tabela novamente:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].Routes[].{Destination:DestinationCidrBlock,Target:GatewayId,State:State}' \
--output table
A rota padrão aponta para seu igw-... e está active; a rota local permanece. AWS View mostra 0.0.0.0/0 sob public-routes, apontando para o mesmo gateway. Clique novamente em Request application · client A. A solicitação ainda falha com No public address. A sub-rede já possui uma rota pública, mas a aplicação precisa de seu próprio endereço IPv4 público.
Associar um endereço público e testar HTTP
Nesta etapa, você associará um IP elástico à aplicação fornecida e enviará uma solicitação externa bem-sucedida.
Um IP elástico é um endereço IPv4 público alocado à sua conta que pode ser associado a um recurso compatível. Seu ID de alocação identifica o endereço reservado; seu ID de associação identifica o vínculo com um recurso. Durante a limpeza, você removerá o vínculo e a alocação.
Uma interface de rede (ENI) fornece a conexão de rede e o IP privado de uma aplicação. Este laboratório fornece a interface da aplicação; você não precisa criar uma instância nem configurar seu sistema operacional. Selecione-a por VPC e nome:
ENI_ID=$(aws ec2 describe-network-interfaces \
--filters "Name=vpc-id,Values=$VPC_ID" Name=tag:Name,Values=application-interface \
--query 'NetworkInterfaces[0].NetworkInterfaceId' \
--output text)
Aloque um endereço para uso em uma VPC e salve seu ID de alocação:
ALLOCATION_ID=$(aws ec2 allocate-address \
--domain vpc \
--query 'AllocationId' \
--output text)
Associe-o à interface da aplicação e salve o ID de associação:
ASSOCIATION_ID=$(aws ec2 associate-address \
--allocation-id "$ALLOCATION_ID" \
--network-interface-id "$ENI_ID" \
--query 'AssociationId' \
--output text)
Consulte o estado resultante da interface:
aws ec2 describe-network-interfaces \
--network-interface-ids "$ENI_ID" \
--query 'NetworkInterfaces[].{ID:NetworkInterfaceId,PrivateIP:PrivateIpAddress,PublicIP:Association.PublicIp}' \
--output table
O endereço privado continua sendo 10.20.1.10; o campo público agora contém um endereço. Em AWS View, o cartão da aplicação mostra esse endereço público junto com a rota para o gateway. Clique em Request application · client A.
O resultado é Success, com endereço de origem 198.51.100.10, porta de destino 80 e corpo Application online. Esta é uma resposta HTTP da aplicação fornecida. Uma lista de recursos configurados, por si só, não comprovaria que a solicitação funciona.

Exemplo de resultado: a sub-rede pública mostra a rota para o gateway e o endereço da aplicação; a solicitação retorna Application online. Os IDs e endereços alocados variam.
As regras de acesso preparadas permitem esse cliente e porta. O próximo laboratório ensinará a controlar essas regras; mantenha-as inalteradas aqui.
Observar e restaurar uma rota interrompida
Nesta etapa, você removerá uma rota, observará uma solicitação com falha e restaurará o caminho funcional.
Um endereço público não substitui o roteamento. Remova apenas a rota padrão que você criou; preserve a rota local fornecida:
aws ec2 delete-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0
Confirme que o endereço público continua associado:
aws ec2 describe-addresses \
--allocation-ids "$ALLOCATION_ID" \
--query 'Addresses[].{PublicIP:PublicIp,Interface:NetworkInterfaceId}' \
--output table
Em AWS View, public-routes agora contém apenas a rota local. Uma resposta antiga pode ser identificada como Previous request; ela não descreve a configuração modificada. Clique em Request application · client A para enviar uma nova solicitação. O resultado muda para Connection failed, mesmo com o endereço público preservado.

Exemplo de diagnóstico: a aplicação ainda tem um endereço público, public-routes contém apenas sua rota local e a nova solicitação falha.
Restaure a rota para o mesmo gateway anexado:
aws ec2 create-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id "$IGW_ID"
A resposta contém Return: true. Depois que a rota reaparecer em AWS View, clique novamente em Request application · client A. Success e Application online retornam. Você isolou o roteamento como condição alterada, em vez de modificar várias configurações ao mesmo tempo.
Remover seu caminho público
Nesta etapa, você removerá apenas o endereço, a rota e o gateway que criou, preservando as redes fornecidas para a aplicação e de referência.
Os recursos possuem dependências. Primeiro desassocie o endereço da interface:
aws ec2 disassociate-address --association-id "$ASSOCIATION_ID"
Depois libere a alocação; a desassociação sozinha deixa um recurso alocado:
aws ec2 release-address --allocation-id "$ALLOCATION_ID"
Remova sua rota padrão antes de desanexar o gateway:
aws ec2 delete-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0
aws ec2 detach-internet-gateway --internet-gateway-id "$IGW_ID" --vpc-id "$VPC_ID"
Por fim, exclua o gateway desanexado:
aws ec2 delete-internet-gateway --internet-gateway-id "$IGW_ID"
Esses comandos de remoção não produzem saída quando são bem-sucedidos. Consulte inventários completos para comprovar a ausência dos recursos, em vez de depender de tags:
aws ec2 describe-addresses --query 'Addresses' --output json
aws ec2 describe-internet-gateways --query 'InternetGateways' --output json
Ambos retornam [] neste ambiente novo. Verifique novamente as rotas da sub-rede fornecida:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].Routes[].{Destination:DestinationCidrBlock,Target:GatewayId}' \
--output table
Apenas a rota local permanece. A VPC, as sub-redes e a interface fornecidas para a aplicação ainda existem. AWS View não mostra mais seu gateway nem o endereço público. Clique mais uma vez em Request application · client A; o caminho público removido não pode atender à solicitação. Uma consulta de inventário que falha não comprova a limpeza dos recursos.
Execute a verificação de conclusão desta etapa.
Resumo
Você anexou um gateway da Internet, adicionou uma rota padrão à tabela associada da sub-rede da aplicação e associou um IP elástico. Testou acesso HTTP real, demonstrou que remover a rota interrompe a solicitação apesar do endereço público, restaurou a rota e removeu apenas seus recursos de prática.
Continue com Controlar o acesso à aplicação com grupos de segurança para limitar quais solicitações externas podem chegar à aplicação.



