Cómo crear una Instancia RDS usando Python Boto3 en AWS
En este artículo, veremos cómo crear una Instancia RDS MySql utilizando la Biblioteca Boto3. Utilizaremos el método «create_db_instance» para crear una Instancia.
Antes de continuar, asumo que estás familiarizado con el servicio RDS de AWS. Si no estás familiarizado con él y quieres aprender primero a crear una Instancia RDS MySql desde la Consola de AWS, busca«¿Cómo configurar una instancia RDS MySql (Base de Datos de Relaciones MySql ) en AWS?«.
Requisitos previos
- Cuenta de AWS (Crea si no tienes una)
- Conocimiento básico de RDS.
- Conocimientos básicos de Python.
- Python está disponible en el sistema.
Qué vamos a hacer
- Instalar las dependencias.
- Conocer el método requerido.
- Crear una Instancia RDS MySql utilizando Python Boto3.
Instalar las dependencias
Python viene por defecto en Ubuntu 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–versión
O
python –versión
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 –versión
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 su versión, ejecuta el siguiente comando
pip show boto3
Conoce el método requerido
Para crear una Instancia RDS, utilizaremos el método «create_db_instance». A continuación se muestra la sintaxis del método con todos los parámetros que acepta. No utilizaremos todos estos parámetros para crear una instancia, pero puedes probarlo si quieres. Si quieres saber más sobre todos los parámetros disponibles, puedes visitar la página oficial de Boto3 aquí.
Sintaxis de la solicitud
response = client.create_db_instance( DBName='string', DBInstanceIdentifier='string', AllocatedStorage=123, DBInstanceClass='string', Engine='string', MasterUsername='string', MasterUserPassword='string', DBSecurityGroups=[ 'string', ], VpcSecurityGroupIds=[ 'string', ], AvailabilityZone='string', DBSubnetGroupName='string', PreferredMaintenanceWindow='string', DBParameterGroupName='string', BackupRetentionPeriod=123, PreferredBackupWindow='string', Port=123, MultiAZ=True|False, EngineVersion='string', AutoMinorVersionUpgrade=True|False, LicenseModel='string', Iops=123, OptionGroupName='string', CharacterSetName='string', PubliclyAccessible=True|False, Tags=[ { 'Key': 'string', 'Value': 'string' }, ], DBClusterIdentifier='string', StorageType='string', TdeCredentialArn='string', TdeCredentialPassword='string', StorageEncrypted=True|False, KmsKeyId='string', Domain='string', CopyTagsToSnapshot=True|False, MonitoringInterval=123, MonitoringRoleArn='string', DomainIAMRoleName='string', PromotionTier=123, Timezone='string', EnableIAMDatabaseAuthentication=True|False, EnablePerformanceInsights=True|False, PerformanceInsightsKMSKeyId='string', PerformanceInsightsRetentionPeriod=123, EnableCloudwatchLogsExports=[ 'string', ], ProcessorFeatures=[ { 'Name': 'string', 'Value': 'string' }, ], DeletionProtection=True|False, MaxAllocatedStorage=123 )
- DBName: El significado de este parámetro difiere según el motor de base de datos que utilices.
- DBInstanceIdentifier : Es un parámetro obligatorio. Es un identificador de la instancia de la base de datos. Este parámetro se almacena como una cadena en minúsculas.
- DBInstanceClass : Es un parámetro obligatorio. Especifica la capacidad de cálculo y de memoria de la instancia de la BD.
- Motor : Es el nombre del motor de la base de datos que se va a utilizar para la instancia que se va a crear. Es un campo obligatorio
- MasterUsername: El nombre del usuario maestro. Este es el usuario de la BD en la Instancia
- MasterUserPassword: La contraseña del usuario maestro que creamos en la instancia.
- VpcSecurityGroupIds : Una lista de grupos de seguridad de la VPC de Amazon EC2 para asociar a esta instancia de BD. Este Grupo de Seguridad tiene reglas que permiten la conexión en los puertos especificados en él.
- Puerto : El número de puerto en el que la base de datos acepta conexiones. Si quieres permitir la conexión en este puerto, tienes que especificar este puerto en el Grupo de Seguridad.
Crear una Instancia RDS MySql utilizando Python Boto3
Para crear una Instancia RDS, crea un archivo «create-rds-instance.py» y copia-pega el siguiente código en él.
No olvides cambiar los valores de «aws_access_key_id_value» y «aws_secret_access_key_value» por tus propios access_key_id y access_key_value respectivamente.
Si quieres crear la instancia en una región de tu elección, cambiatambién el valor de «nombre_región» o mantenlo sin cambios.
Además, asegúrate de asignar el identificador del grupo de seguridad existente a «VpcSecurityGroupIds».
import boto3 conn = boto3.client('rds', aws_access_key_id='ACCESS-KEY-OF-THE-AWS-ACCOUNT', aws_secret_access_key='SECRETE-KEY-OF-THE-AWS-ACCOUNT', region_name='eu-west-3') response = conn.create_db_instance( AllocatedStorage=10, DBName="test", DBInstanceIdentifier="my-first-rds-instance", DBInstanceClass="db.t2.micro", Engine="mysql", MasterUsername="root", MasterUserPassword="pass1234", Port=3306, VpcSecurityGroupIds=["sg-7fa4d512"], ) print (response)
Ahora ya estás preparado para crear una Instancia. Ejecuta el script de python con el siguiente comando.
python crear-rds-instancia.py
Verás la respuesta en el terminal.
Para verificar el estado de la instancia desde la consola de AWS, ve a RDS Dashboard.
Conclusión
Hemos aprendido a crear una Instancia RDS MySql en este artículo utilizando la Biblioteca Boto3 en Python. Puedes personalizar el código y crear una instancia a tu gusto. También hemos visto cómo instalar las dependencias necesarias para escribir y ejecutar el código Python.