Introducción
Una aplicación de entregas está preparada dentro de una VPC, pero su servicio público todavía no puede recibir solicitudes externas. Crearás la ruta de acceso que falta: una puerta de enlace de Internet conectada a la VPC, una ruta predeterminada en la tabla de rutas de la subred de la aplicación y una dirección pública asociada a su interfaz de red.
Completa primero Crear una VPC con subredes para aplicaciones. Este entorno nuevo proporciona su propia VPC, subredes, aplicación y reglas de acceso; no reutiliza tu VM anterior. La CLI ya está configurada. Conserva la red de referencia ajena a la tarea y todos los recursos proporcionados para la aplicación.
Relación con las certificaciones
Este laboratorio ofrece práctica de los siguientes temas de examen.
- Cloud Practitioner (CLF-C02) · Tarea 3.5: Componentes de puerta de enlace de VPC y su finalidad.
- Solutions Architect – Associate (SAA-C03) · Tarea 3.4: Condiciones básicas de enrutamiento y direccionamiento de una subred pública.
- CloudOps Engineer – Associate (SOA-C03) · Tareas 5.1 y 5.3: Configuración básica de puertas de enlace de Internet y rutas, y diagnóstico de una ruta de VPC ausente.
- Advanced Networking – Specialty (ANS-C01) · Tarea 2.2: Práctica fundamental de configuración de rutas en un diseño de conectividad con una sola VPC.
Conectar una puerta de enlace de Internet
En este paso, inspeccionarás la red de la aplicación proporcionada y conectarás una puerta de enlace de Internet a su VPC.
Usa Terminal para los comandos y haz clic en AWS View a su lado. La vista lee el mismo estado de recursos que la CLI. La VPC application-network contiene public-subnet y private-subnet; la aplicación proporcionada usa la dirección privada 10.20.1.10 en public-subnet.
cd /home/labex/project
Selecciona la VPC de la aplicación mediante su etiqueta Name. --filters limita los resultados del servidor; --query selecciona el ID. $(...) captura ese ID en una variable de shell para los pasos restantes:
VPC_ID=$(aws ec2 describe-vpcs \
--filters Name=tag:Name,Values=application-network \
--query 'Vpcs[0].VpcId' \
--output text)
Consulta las subredes de la red seleccionada:
aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=$VPC_ID" \
--query 'Subnets[].{CIDR:CidrBlock,ID:SubnetId}' \
--output table
Los rangos son 10.20.1.0/24 y 10.20.2.0/24. La red de referencia independiente 10.99.0.0/16 no participa en la tarea; consérvala.
HTTP es el protocolo de solicitud y respuesta que usa el punto de acceso de esta aplicación. Un puerto identifica el servicio receptor; esta aplicación escucha en el puerto TCP 80. En AWS View, haz clic en Request application · client A. Esto envía una solicitud externa desde el cliente proporcionado 198.51.100.10. El resultado es Connection failed con No public address. La aplicación existe, pero su ruta de acceso pública está incompleta.
Una puerta de enlace de Internet (IGW) conecta la ruta de enrutamiento público de una VPC a Internet. Crear la puerta y conectarla son operaciones independientes. Etiqueta la nueva puerta para identificar tu recurso de práctica; la especificación de etiquetas entre comillas es un ú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)
Conecta únicamente esa puerta a la VPC seleccionada de la aplicación:
aws ec2 attach-internet-gateway --internet-gateway-id "$IGW_ID" --vpc-id "$VPC_ID"
Una conexión correcta no produce salida del comando. Consulta la relación:
aws ec2 describe-internet-gateways \
--internet-gateway-ids "$IGW_ID" \
--query 'InternetGateways[].{ID:InternetGatewayId,Attachments:Attachments}' \
--output json
La conexión identifica tu VPC y tiene el estado available. AWS View muestra ahora esa puerta de enlace debajo de la VPC. La conexión por sí sola no proporciona una ruta de subred ni una dirección pública para la aplicación. Mantén abierto este Terminal para conservar los ID guardados.
Añadir la ruta predeterminada de la subred pública
En este paso, dirigirás el tráfico de Internet de la subred pública hacia la puerta conectada.
Una tabla de rutas asigna rangos de destino a objetivos. Cada subred usa su tabla asociada, o la tabla principal de la VPC si no tiene una asociación explícita. Aquí, la preparación proporcionó tablas asociadas por separado: public-routes y private-routes. Selecciona public-routes dentro de la VPC de tu aplicación:
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)
Consulta sus rutas y asociaciones:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].{ID:RouteTableId,Routes:Routes,Associations:Associations}' \
--output json
La asociación identifica public-subnet; la ruta existente 10.20.0.0/16 tiene el objetivo local, que mantiene el tráfico de la VPC dentro de ella. No elimines esa ruta local ni cambies private-routes.
Una ruta predeterminada, 0.0.0.0/0, cubre los destinos IPv4 que no coinciden con una ruta más específica. --gateway-id establece la puerta de enlace de Internet como objetivo:
aws ec2 create-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id "$IGW_ID"
La respuesta contiene Return: true. Vuelve a consultar la tabla:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].Routes[].{Destination:DestinationCidrBlock,Target:GatewayId,State:State}' \
--output table
La ruta predeterminada apunta a tu igw-... y está active; la ruta local permanece. AWS View muestra 0.0.0.0/0 bajo public-routes, apuntando a la misma puerta. Haz clic de nuevo en Request application · client A. Todavía falla con No public address. La subred ya tiene una ruta pública, pero la aplicación necesita su propia dirección IPv4 pública.
Asociar una dirección pública y probar HTTP
En este paso, asociarás una IP elástica a la aplicación proporcionada y enviarás una solicitud externa correcta.
Una IP elástica es una dirección IPv4 pública asignada a tu cuenta que puede asociarse a un recurso compatible. Su ID de asignación identifica la dirección reservada; su ID de asociación identifica el vínculo con un recurso. Durante la limpieza eliminarás tanto el vínculo como la asignación.
Una interfaz de red (ENI) proporciona la conexión de red y la IP privada de una aplicación. Este laboratorio proporciona la interfaz de la aplicación; no necesitas crear una instancia ni configurar su sistema operativo. Selecciónala por VPC y nombre:
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)
Asigna una dirección para usarla en una VPC y guarda su ID de asignación:
ALLOCATION_ID=$(aws ec2 allocate-address \
--domain vpc \
--query 'AllocationId' \
--output text)
Asóciala a la interfaz de la aplicación y guarda el ID de asociación:
ASSOCIATION_ID=$(aws ec2 associate-address \
--allocation-id "$ALLOCATION_ID" \
--network-interface-id "$ENI_ID" \
--query 'AssociationId' \
--output text)
Consulta el estado resultante de la interfaz:
aws ec2 describe-network-interfaces \
--network-interface-ids "$ENI_ID" \
--query 'NetworkInterfaces[].{ID:NetworkInterfaceId,PrivateIP:PrivateIpAddress,PublicIP:Association.PublicIp}' \
--output table
La dirección privada sigue siendo 10.20.1.10; el campo público contiene ahora una dirección. En AWS View, la tarjeta de la aplicación muestra esa dirección pública junto con la ruta a la puerta. Haz clic en Request application · client A.
El resultado es Success, con dirección de origen 198.51.100.10, puerto de destino 80 y cuerpo Application online. Es una respuesta HTTP de la aplicación proporcionada. Una lista de recursos configurados por sí sola no demostraría que la solicitud funciona.

Resultado de ejemplo: la subred pública muestra la ruta a la puerta y la dirección de la aplicación; la solicitud devuelve Application online. Los ID y las direcciones asignadas varían.
Las reglas de acceso preparadas permiten este cliente y puerto. El siguiente laboratorio enseñará a controlar esas reglas; no las cambies aquí.
Observar y restaurar una ruta interrumpida
En este paso, eliminarás una ruta, observarás una solicitud fallida y restaurarás la ruta de acceso operativa.
Una dirección pública no sustituye al enrutamiento. Elimina únicamente la ruta predeterminada que creaste; conserva la ruta local proporcionada:
aws ec2 delete-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0
Confirma que la dirección pública sigue asociada:
aws ec2 describe-addresses \
--allocation-ids "$ALLOCATION_ID" \
--query 'Addresses[].{PublicIP:PublicIp,Interface:NetworkInterfaceId}' \
--output table
En AWS View, public-routes contiene ahora únicamente la ruta local. Una respuesta anterior puede aparecer como Previous request; no describe la configuración modificada. Haz clic en Request application · client A para enviar una nueva solicitud. El resultado pasa a Connection failed, aunque la dirección pública permanece.

Diagnóstico de ejemplo: la aplicación conserva su dirección pública, public-routes solo tiene su ruta local y la nueva solicitud falla.
Restaura la ruta hacia la misma puerta conectada:
aws ec2 create-route \
--route-table-id "$PUBLIC_ROUTE_TABLE_ID" \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id "$IGW_ID"
La respuesta contiene Return: true. Cuando la ruta vuelva a aparecer en AWS View, haz clic de nuevo en Request application · client A. Regresan Success y Application online. Has aislado el enrutamiento como condición modificada, en lugar de cambiar varios ajustes a la vez.
Eliminar tu ruta de acceso pública
En este paso, eliminarás únicamente la dirección, la ruta y la puerta que creaste, conservando las redes proporcionadas para la aplicación y de referencia.
Los recursos tienen dependencias. Primero desvincula la dirección de la interfaz:
aws ec2 disassociate-address --association-id "$ASSOCIATION_ID"
Después libera la asignación; desvincularla por sí solo deja un recurso asignado:
aws ec2 release-address --allocation-id "$ALLOCATION_ID"
Elimina tu ruta predeterminada antes de desconectar su puerta:
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 último, elimina la puerta desconectada:
aws ec2 delete-internet-gateway --internet-gateway-id "$IGW_ID"
Estos comandos de eliminación no producen salida cuando funcionan. Consulta los inventarios completos para demostrar la ausencia de recursos, en vez de depender de etiquetas:
aws ec2 describe-addresses --query 'Addresses' --output json
aws ec2 describe-internet-gateways --query 'InternetGateways' --output json
Ambos devuelven [] en este entorno nuevo. Revisa las rutas de la subred proporcionada:
aws ec2 describe-route-tables \
--route-table-ids "$PUBLIC_ROUTE_TABLE_ID" \
--query 'RouteTables[].Routes[].{Destination:DestinationCidrBlock,Target:GatewayId}' \
--output table
Solo queda la ruta local. La VPC, las subredes y la interfaz proporcionadas para la aplicación siguen existiendo. AWS View ya no muestra tu puerta ni la dirección pública. Haz clic una vez más en Request application · client A; la ruta de acceso pública eliminada no puede atender la solicitud. Una consulta de inventario fallida no demuestra que los recursos se hayan eliminado.
Ejecuta la comprobación de este paso.
Resumen
Conectaste una puerta de enlace de Internet, añadiste una ruta predeterminada en la tabla asociada de la subred de la aplicación y asociaste una IP elástica. Probaste el acceso HTTP real, demostraste que eliminar la ruta interrumpe la solicitud pese a mantener la dirección pública, la restauraste y eliminaste únicamente tus recursos de práctica.
Continúa con Controlar el acceso a aplicaciones con grupos de seguridad para limitar qué solicitudes externas pueden llegar a la aplicación.



