Conexión la instancia de base de datos mediante la autenticación de IAM y el AWS SDK for Python (Boto3) - Amazon Relational Database Service

Conexión la instancia de base de datos mediante la autenticación de IAM y el AWS SDK for Python (Boto3)

Puede conectarse a una instancia de base de datos de RDS for MariaDB, MySQL o PostgreSQL con el AWS SDK for Python (Boto3) como se describe a continuación.

Requisitos previos

A continuación, se muestran requisitos previos para conectarse al de instancia de base de datos mediante la autenticación de IAM:

Además, debe asegurarse de que las bibliotecas importadas en el código de muestra existen en el sistema.

Ejemplos

Los ejemplos de código utilizan perfiles para credenciales compartidas. Para obtener información acerca de la especificación de credenciales, consulte Credenciales en la documentación de AWS SDK for Python (Boto3).

En los siguientes ejemplos de código, se muestra cómo se genera un token de autenticación y cómo se utiliza para conectarse a una instancia.

Para ejecutar este ejemplo de código, necesita AWS SDK for Python (Boto3), que se encuentra en el sitio de AWS.

Modifique los valores de las siguientes variables según sea necesario:

  • ENDPOINT: el punto de enlace de la instancia que desea acceder

  • PORT: el número de puerto que se utiliza para conectarse a la instancia.

  • USER: la cuenta de base de datos a la que desea acceder.

  • REGION: la región de AWS en la que se ejecuta la instancia

  • DBNAME: la base de datos a la que desea obtener acceso.

  • SSLCERTIFICATE: la ruta completa al certificado SSL de Amazon RDS

    Para ssl_ca, especifique un certificado SSL. Para descargar un certificado SSL, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos.

nota

No puede utilizar un registro DNS personalizado de Route 53 en lugar del punto de conexión de la instancia de base de datos para generar el token de autenticación.

Este código se conecta a una instancia de base de datos de MariaDB o MySQL.

Antes de ejecutar este código, siga las instrucciones del índice del paquete de Python para instalar el controlador PyMySQL.

import pymysql import sys import boto3 import os ENDPOINT="mysqldb.123456789012.us-east-1.rds.amazonaws.com" PORT="3306" USER="jane_doe" REGION="us-east-1" DBNAME="mydb" os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1' #gets the credentials from .aws/credentials session = boto3.Session(profile_name='default') client = session.client('rds') token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION) try: conn = pymysql.connect(auth_plugin_map={'mysql_clear_password':None},host=ENDPOINT, user=USER, password=token, port=PORT, database=DBNAME, ssl_ca='SSLCERTIFICATE', ssl_verify_identity=True) cur = conn.cursor() cur.execute("""SELECT now()""") query_results = cur.fetchall() print(query_results) except Exception as e: print("Database connection failed due to {}".format(e))

Este código se conecta a una instancia de base de datos de PostgreSQL.

Antes de ejecutar este código, instale psycopg2 y siga las instrucciones en Psycopg documentation (Documentación de Psycopg).

import psycopg2 import sys import boto3 import os ENDPOINT="postgresmydb.123456789012.us-east-1.rds.amazonaws.com" PORT="5432" USER="jane_doe" REGION="us-east-1" DBNAME="mydb" #gets the credentials from .aws/credentials session = boto3.Session(profile_name='RDSCreds') client = session.client('rds') token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION) try: conn = psycopg2.connect(host=ENDPOINT, port=PORT, database=DBNAME, user=USER, password=token, sslrootcert="SSLCERTIFICATE") cur = conn.cursor() cur.execute("""SELECT now()""") query_results = cur.fetchall() print(query_results) except Exception as e: print("Database connection failed due to {}".format(e))

Si desea conectarse a una instancia de base de datos a través de un proxy, consulte Conexión a un proxy mediante autenticación de IAM.