Crear una VPC con subredes de aplicación

AWSBeginner
Practicar Ahora

Introducción

Una aplicación de reparto de paquetes necesita rangos de direcciones separados para su servicio público y sus procesos internos. Crearás una VPC, colocarás dos subredes sin solapamiento en distintas zonas de disponibilidad y revisarás el plan de direcciones en AWS View.

Debes saber ejecutar comandos de AWS CLI y leer identificadores de recursos. La CLI está configurada para este entorno nuevo. Al terminar, eliminarás únicamente los recursos que hayas creado.

Relación con las certificaciones

Este laboratorio ofrece práctica de los siguientes temas de examen.

Crear la VPC de reparto

En este paso, elegirás el rango exterior de direcciones de la aplicación y crearás su VPC.

Una nube privada virtual (VPC) es una red aislada para recursos de una región de AWS. Su bloque CIDR define las direcciones que pueden usar sus subredes. La notación CIDR IPv4 combina una dirección inicial y una longitud de prefijo: 10.20.0.0/16 abarca desde 10.20.0.0 hasta 10.20.255.255. Un número de prefijo menor deja más bits para direcciones, por lo que /16 es mayor que /24.

Usa Terminal para los comandos y haz clic en la pestaña AWS View de al lado. La vista lee el mismo estado de recursos que la CLI y muestra los recursos de red que creas. Mantén ambas interfaces disponibles.

Empieza en tu directorio de trabajo:

cd /home/labex/project

Antes de cambiar nada, consulta el inventario de VPC existente. --query selecciona los campos ID y CIDR; --output table facilita su comparación:

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

Una red de referencia usa 10.99.0.0/16. También pueden aparecer otras VPC existentes. Déjalas intactas; crearás y después eliminarás tu propia red 10.20.0.0/16.

El grupo de comandos EC2 incluye operaciones de red VPC. --cidr-block establece el rango; --tag-specifications añade las etiquetas Name y Project al crear el recurso. Las comillas mantienen juntos los corchetes y las comas como un solo argumento.

La expresión de shell $(...) ejecuta un comando y captura su salida. Asignarla a VPC_ID guarda el ID para los comandos posteriores. --query 'Vpc.VpcId' --output text devuelve únicamente ese 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)

Un comando con salida capturada no imprime el resultado. Consulta el recurso con el ID guardado. "$VPC_ID" sustituye el valor como un solo argumento:

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

El CIDR es 10.20.0.0/16 y el estado es available. En AWS View, aparece delivery-network con ese CIDR y sin subredes de aplicación. Mantén abierto este Terminal para conservar los ID guardados.

Añadir la subred del servicio público

En este paso, asignarás un rango menor dentro de la VPC y lo colocarás en una zona de disponibilidad.

Una subred es una parte del rango de direcciones de una VPC. Cada subred pertenece a una sola zona de disponibilidad (AZ) de esa región; la VPC abarca la región. Un nombre como us-east-1a identifica dónde se ubicarán los recursos de la subred.

Reserva 10.20.1.0/24 para el futuro servicio público. Abarca de 10.20.1.0 a 10.20.1.255 y está dentro de 10.20.0.0/16. AWS reserva las primeras cuatro direcciones y la última de una subred IPv4 ordinaria, dejando 251 asignables en este /24. No asignes las direcciones reservadas a cargas de trabajo.

Consulta los nombres de las zonas disponibles. La región se configuró al iniciar el entorno:

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

Usarás us-east-1a para esta subred y us-east-1b para la siguiente. --vpc-id elige la red padre; --availability-zone, la ubicación. Guarda el nuevo ID para la limpieza:

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)

Consulta su red padre, rango y zona:

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

El ID de VPC coincide con el guardado, el rango es 10.20.1.0/24 y la zona, us-east-1a. AWS View coloca esta subred dentro de delivery-network.

El nombre delivery-public describe su uso previsto. El nombre por sí solo no convierte una subred en pública: necesita una ruta a una puerta de enlace de Internet, que configurarás en el siguiente laboratorio.

Añadir una subred separada para los procesos internos

En este paso, darás a los procesos internos su propia subred sin solapamiento y compararás el plan completo.

Dos subredes de la misma VPC no pueden solaparse. Usar 10.20.2.0/24 para los procesos internos separa su rango de 10.20.1.0/24. Ambos están dentro del /16 de la VPC.

Coloca esta subred en us-east-1b para observar que una VPC contiene subredes en distintas zonas. Esto demuestra la ubicación; todavía no has desplegado una aplicación redundante entre 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)

Usa un filtro del lado del servidor para seleccionar solo las subredes de tu VPC. En Name=vpc-id,Values=..., Name identifica el filtro y Values contiene el ID coincidente:

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

Las dos filas muestran este plan. Los ID generados y el orden pueden variar:

Uso CIDR Zona de disponibilidad
Servicio público 10.20.1.0/24 us-east-1a
Procesos internos 10.20.2.0/24 us-east-1b

Prueba a añadir 10.20.1.128/25 para observar el límite de solapamiento. Este rango menor ya está dentro de delivery-public, por lo que no puede ser otra subred de esta VPC:

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

El error esperado contiene InvalidSubnet.Conflict. No se crea una tercera subred. Conserva los dos rangos /24 válidos.

Compara esos rangos y zonas en AWS View. Ninguna subred tiene aún una ruta a Internet. Sus rangos distintos ofrecen lugares separados donde aplicar rutas y reglas de acceso en los siguientes laboratorios.

La VPC de reparto contiene dos subredes sin solapamiento en distintas zonas de disponibilidad

Resultado de ejemplo: ambos CIDR caben en el rango de la VPC; cada subred muestra su zona. Los ID de recursos varían en tu entorno.

Eliminar la red de práctica

En este paso, eliminarás tus dos subredes y la VPC, conservando la red de referencia existente.

Los recursos tienen dependencias: no puedes eliminar una VPC mientras contenga tus subredes. Elimina solo los ID que guardaste. Un comando de eliminación correcto no produce salida:

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

Ahora elimina la VPC vacía:

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

Vuelve a consultar el inventario completo, sin depender de una etiqueta modificable para demostrar la eliminación:

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

No hay ninguna VPC 10.20.0.0/16. La referencia 10.99.0.0/16 y las demás redes existentes permanecen. Una consulta fallida no demuestra la limpieza. AWS View indica que no hay VPC de aplicación.

Ejecuta la comprobación de este paso.

El siguiente laboratorio comienza en un entorno nuevo con su propia aplicación preparada. Enseña cómo una puerta de enlace de Internet, una ruta y una dirección pública permiten que una petición externa llegue a la aplicación.

Resumen

Creaste un rango de VPC, lo dividiste en dos subredes de aplicación sin solapamiento y colocaste cada una en una zona de disponibilidad. Revisaste las relaciones con la CLI y AWS View y eliminaste únicamente tu red de práctica.

Continúa con Conectar una subred pública a Internet para convertir el plan en una ruta de aplicación funcional.