Cómo crear una VPC usando Python Boto3 en Ubuntu

Boto3 es el SDK de Amazon Web Services (AWS) para Python. Es la biblioteca de Python que permite a los usuarios o desarrolladores crear, configurar y gestionar los servicios y recursos de AWS. Boto3 proporciona una API para los servicios de AWS que puede utilizarse para gestionar servicios y recursos de AWS como EC2, RDS, S3, etc.

Para saber más sobre Boto3, puedes visitar su sitio oficial aquí.

Antes de continuar, asumo que estás familiarizado con la VPC.

En este artículo, veremos cómo instalar la biblioteca Boto3 y utilizarla para crear una VPC sencilla junto con sus componentes dependientes en AWS. Crearemos una subred pública en la VPC.

Requisitos previos

  1. Cuenta de AWS (Crea si no tienes una)
  2. Conocimiento básico de la VPC
  3. Conocimientos básicos de Python
  4. Python disponible en el sistema

Qué vamos a hacer

  1. Instalar Boto3
  2. Conocer el método requerido
  3. Crear una VPC con Boto3 de Python

Instalar Boto3

Python viene por defecto en Ubuntu 18.04 Server, por lo que no necesitas instalarlo.

Para comprobar la versión de Python en tu sistema, utiliza el siguiente comando

que python
/usr/bin/python--version

O

python --version

Comprueba la versión de Python

Si no tienes pip y estás usando Ubuntu 18.04, ejecuta el siguiente comando para actualizar primero el repo local.

sudo apt update

Actualizar paquetes

Para instalar pip utiliza el siguiente comando

sudo apt install python-pip

Instalar python Pip

Para comprobar la versión de Pip instalada, ejecuta el siguiente comando

pip --version

Comprueba la versión PIP

Una vez que tengas python y pip, puedes instalar Boto3.

La instalación de Boto3 es muy sencilla y directa. Para instalar Boto3 utiliza el siguiente comando.

pip install boto3

Instalar Boto3 con pip

Para comprobar si Boto3 está instalado y comprobar su versión, ejecuta el siguiente comando

pip show boto3

pip mostrar boto3

Conoce los métodos necesarios

Para crear una VPC y sus componentes dependientes utilizaremos los siguientes métodos.

  1. crear_vpc
  2. crear_tabla_de_ruta
  3. crear_puerta_de_internet
  4. crear_subred
  5. asociar_con_subred

Ahora vamos a ver los métodos con su lista de parámetros aceptables. No utilizaremos todos los parámetros, pero puedes probarlo si quieres.

Sintaxis de solicitud del método create_vpc

response = client.create_vpc(
    CidrBlock='string',
    AmazonProvidedIpv6CidrBlock=True|False,
    Ipv6Pool='string',
    Ipv6CidrBlock='string',
    DryRun=True|False,
    InstanceTenancy='default'|'dedicated'|'host',
    Ipv6CidrBlockNetworkBorderGroup='string'
)
  1. CidrBlock: El rango de red IPv4 para la VPC, en notación CIDR. Es un campo obligatorio y no se puede crear una VPC sin él.

Sintaxis de solicitud del método create_route_table

route_table = ec2.create_route_table(
    DryRun=True|False,
    VpcId='string'
)
  1. VpcId: El ID de la VPC. Es un campo obligatorio y se utiliza para crear una tabla de rutas en la VPC especificada

Sintaxis de la solicitud del método create_internet_gateway

response = client.create_internet_gateway(
    DryRun=True|False
)

Cada VPC tiene una única puerta de enlace de Internet. Ésta se adjuntará a la VPC

Sintaxis de la solicitud del método crear_subred

subnet = ec2.create_subnet(
    AvailabilityZone='string',
    AvailabilityZoneId='string',
    CidrBlock='string',
    Ipv6CidrBlock='string',
    OutpostArn='string',
    VpcId='string',
    DryRun=True|False
)
  1. CidrBlock: El rango de red IPv4 para la subred, en notación CIDR. Se utiliza para subdividir la VPC.
  2. VpcId: El ID de la VPC.

Sintaxis de solicitud del método asociar_con_subred

route_table_association = route_table.associate_with_subnet(
    DryRun=True|False,
    SubnetId='string',
    GatewayId='string'
)
  1. SubnetId : El ID de la subred.
    O
  2. GatewayId : El ID de la pasarela de Internet o de la pasarela privada virtual.

Crear una VPC con Python Boto3

Para crear una VPC, crea «vpc.py» con el siguiente bloque de código.

Asegúrate decambiar el valor de «aws_access_key_id_value» y «aws_secret_access_key_value» por tus propios access_key_id y access_key_value respectivamente. Cambia también el valor de «region_name».

Si quieres puedes cambiar los valores de CidrBlock para «create_vpc» y «create_subnet» o puedes mantenerlos como están.

vim vpc.py

import boto3

ec2 = boto3.resource('ec2', aws_access_key_id='ACCESS-KEY-OF-THE-AWS-ACCOUNT',
                     aws_secret_access_key='SECRETE-KEY-OF-THE-AWS-ACCOUNT',
                     region_name='AWS-Region')

vpc = ec2.create_vpc(CidrBlock='192.168.0.0/16')
# Assign a name to the VPC
vpc.create_tags(Tags=[{"Key": "Name", "Value": "my_vpc"}])
vpc.wait_until_available()
print(vpc.id)

# Create and Attach the Internet Gateway
ig = ec2.create_internet_gateway()
vpc.attach_internet_gateway(InternetGatewayId=ig.id)
print(ig.id)

# Create a route table and a public route to Internet Gateway
route_table = vpc.create_route_table()
route = route_table.create_route(
    DestinationCidrBlock='0.0.0.0/0',
    GatewayId=ig.id
)
print(route_table.id)

# Create a Subnet
subnet = ec2.create_subnet(CidrBlock='192.168.1.0/24', VpcId=vpc.id)
print(subnet.id)

# associate the route table with the subnet
route_table.associate_with_subnet(SubnetId=subnet.id)

Crear AWS VPS con Boto3

Ahora, para crear una VPC con la configuración especificada anteriormente, ejecuta el script de python con el siguiente comando.

python vpc.py

Ejecutar el script de Python

Puedes verificar si la VPC se ha creado desde la consola de AWS.

VPC creada en AWS con Python

En la captura de pantalla anterior, puedes ver que se ha creado la VPC con el CIDR y el Nombre especificados. Puedes comprobar los componentes como la subred, la puerta de enlace de Internet y la tabla de rutas.

Conclusión

En este artículo hemos visto cómo crear una VPC con una subred pública. Hemos creado una tabla de rutas, una puerta de enlace a Internet y una subred en la VPC. Hemos visto cómo se puede asociar una subred a la Tabla de Rutas que tiene una ruta pública a una puerta de enlace de Internet. Ahora puedes personalizar este código y crear una VPC con múltiples subredes, asociarlas a la Tabla de Rutas y tener subredes públicas o privadas según tus necesidades. Para crear una subred privada, tendrás que crear una puerta de enlace Nat y asociarla a la subred. Esta asociación hará que la subred sea privada con una conexión saliente a Internet.

También te podría gustar...