Conexión al clúster de base de datos mediante la autenticación de IAM y el AWS SDK for Python (Boto3) - Amazon Aurora

Conexión al clúster de base de datos mediante la autenticación de IAM y el AWS SDK for Python (Boto3)

Puede conectarse a un clúster de bases de datos de Aurora MySQL o Aurora 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 clúster de 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 un clúster de bases de datos.

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 del clúster de bases de datos que desea acceder

  • PORT: el número de puerto que se utiliza para conectarse al clúster de bases de datos.

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

  • REGION: la región de AWS en la que se ejecuta el clúster de bases de datos

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

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

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

nota

No puede utilizar un registro DNS personalizado de Route 53 ni un punto de conexión personalizado de Aurora en lugar del punto de conexión del clúster de base de datos para generar el token de autenticación.

Este código se conecta a un clúster de bases de datos de Aurora 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="mysqlcluster.cluster-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(host=ENDPOINT, user=USER, passwd=token, port=PORT, database=DBNAME, ssl_ca='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))

Este código se conecta a un clúster de bases de datos de Aurora 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="postgresmycluster.cluster-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 un clúster de base de datos a través de un proxy, consulte Conexión a un proxy mediante autenticación de IAM.