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
- Cuenta de AWS (Crea si no tienes una)
- Conocimiento básico de la VPC
- Conocimientos básicos de Python
- Python disponible en el sistema
Qué vamos a hacer
- Instalar Boto3
- Conocer el método requerido
- 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
Si no tienes pip y estás usando Ubuntu 18.04, ejecuta el siguiente comando para actualizar primero el repo local.
sudo apt update
Para instalar pip utiliza el siguiente comando
sudo apt install python-pip
Para comprobar la versión de Pip instalada, ejecuta el siguiente comando
pip --version
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
Para comprobar si Boto3 está instalado y comprobar su versión, ejecuta el siguiente comando
pip show boto3
Conoce los métodos necesarios
Para crear una VPC y sus componentes dependientes utilizaremos los siguientes métodos.
- crear_vpc
- crear_tabla_de_ruta
- crear_puerta_de_internet
- crear_subred
- 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' )
- 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' )
- 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
)
- CidrBlock: El rango de red IPv4 para la subred, en notación CIDR. Se utiliza para subdividir la VPC.
- 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' )
- SubnetId : El ID de la subred.
O - 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)
Ahora, para crear una VPC con la configuración especificada anteriormente, ejecuta el script de python con el siguiente comando.
python vpc.py
Puedes verificar si la VPC se ha creado desde la consola de AWS.
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.