Gestionar la VPC de AWS con aws-cli

La gestión de una VPC y de otros recursos como la subred, la tabla de rutas y la puerta de enlace a Internet desde el terminal usando aws-cli puede ser un poco confusa si no eres bueno en VPC. En este artículo, crearemos una VPC con 2 subredes, una tabla de rutas y una puerta de enlace a Internet, estas subredes serán subredes públicas. Una vez creada la VPC, intentaremos conectarnos a la instancia EC2 creada en esta VPC. El objetivo de este artículo es presentarte los comandos utilizados para gestionar la VPC desde el terminal.

Se aconseja entender primero muy bien la VPC, el objetivo de este artículo no es explicar la VPC. Para conocer las operaciones que se pueden realizar en la VPC, visita la documentación oficial aquí.

Requisitos previos

  1. Cuenta de AWS(Créala si no la tienes).
  2. Conocimiento básico de la VPC (Haz clicaquí para aprender a crear una VPC desde la consola de AWS).
  3. Usuario IAM de AWS con la políticaAmazonVPCFullAccess asociada a él y sus claves de acceso y secretas (Haz clic aquí para aprender a crear un usuario IAM).
  4. AWS CLI instalado en tu máquina local.
  5. Conocimiento básico de la Instancia EC2 (Haz clicaquí para aprender a crear una Instancia EC2 en Ubuntu)

¿Qué vamos a hacer?

  1. Comprobar aws cli y exportar la clave de acceso y secreta de AWS en tu máquina local.
  2. Gestiona la VPC con aws cli.

Comprueba aws cli y exporta la clave de acceso y secreta de aws en tu máquina local.

Si no tienes la utilidad aws-cli instalada en tu máquina, consulta la documentación oficial aquí para instalarla en tu máquina local y luego comprueba la versión de la misma mediante el siguiente comando.

aws --version

Si ejecutas el siguiente comando, obtendrás un error ya que no has configurado el acceso a tu cuenta de AWS en el terminal.

aws sts get-caller-identity

Exporta el acceso del usuario de AWS IAM y las claves secretas en tu terminal utilizando los siguientes comandos.

export AWS_ACCESS_KEY_ID=<aws-user-access-key>
export AWS_SECRET_ACCESS_KEY=<aws-user-secret-key>

Esta vez, puedes comprobar tu identidad ejecutando el siguiente comando

aws sts get-caller-identity

Gestiona la VPC con aws-cli

Crea una VPC utilizando el siguiente comando, no creará una VPC por defecto. 10.0.0.0/16 será el CIDR para la VPC que se creará. Puedes especificar un CIDR válido según tu elección y necesidad.

aws ec2 create-vpc --cidr-block 10.0.0.0/16

Crear VPC

Fíjate en el VpcId de la captura de pantalla anterior. Verás un VpcId diferente en tu salida. Anota el VpcId, lo necesitaremos en los próximos pasos.

Para describir todas las VPC de tu región actual, ejecuta el siguiente comando.

aws ec2 describe-vpcs

Especificando el VpcId, puedes describir la VPC específica

aws ec2 describe-vpcs --vpc-ids vpc-03c4278f3b75efd77

Ahora, vamos a crear 2 subredes en la VPC que hemos creado. Aquí, ambas subredes deben tener bloques CIDR únicos en la VPC.

aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.1.0/24
aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.2.0/24

Crear subredes

Para que las subredes sean públicas, debemos crear una puerta de enlace a Internet

aws ec2 create-internet-gateway

Adjunta la Pasarela de Internet con la VPC que hemos creado antes.

aws ec2 attach-internet-gateway --internet-gateway-id igw-04f1e4f13f92599c3 --vpc-id vpc-03c4278f3b75efd77

Crear una pasarela de Internet

Ahora, vamos a crear una Tabla de Rutas.

aws ec2 create-route-table --vpc-id vpc-03c4278f3b75efd77

Asociar la Tabla de Rutas a las dos subredes

aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0748ef7a26aefc7cc
aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0375b656eb64962e8

Crear tabla de rutas

La creación de una ruta desde la tabla de rutas a la puerta de enlace de Internet hará que las subredes asociadas a la tabla de rutas sean públicas

aws ec2 create-route --route-table-id rtb-0878d652f460dbf50 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-04f1e4f13f92599c3

Ruta de Creta

Ahora tenemos una VPC con 2 subredes, 1 tabla de rutas y una ruta desde la tabla de rutas a la puerta de enlace de Internet.

Si creamos una instancia EC2 en esta VPC y en cualquiera de las subredes, la instancia será accesible públicamente desde Internet. Consulta el documento mencionado en el requisito previo para aprender a crear una instancia EC2 de Ubuntu. Al crear una instancia, especifica la VPC que acabamos de crear.

aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep VpcId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep SubnetId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep PublicIpAddress
ssh -i ~/Downloads/aws-cli.pem [email protected]

Conectar con EC2

Conclusión

En este artículo, hemos visto los pasos para crear una VPC con 2 subredes, 1 tabla de rutas, una puerta de enlace a Internet y una ruta a la puerta de enlace a Internet desde la tabla de rutas. También hemos visto que la instancia creada en cualquiera de las subredes hace que la instanciapúblicamente disponible, ya que ambas subredes son subredes públicas.

También te podría gustar...