Conectar-se ao cluster de banco de dados usando a autenticação do IAM e o AWS SDK para Python (Boto3)
Você pode se conectar a um cluster de banco de dados Aurora MySQL ou Aurora PostgreSQL com a AWS SDK para Python (Boto3), conforme descrito a seguir.
Pré-requisitos
Veja a seguir os pré-requisitos para se conectar ao cluster de banco de dados usando a autenticação do IAM:
Além disso, verifique se as bibliotecas importadas no código de exemplo existem no sistema.
Exemplos
Os exemplos de código usam perfis para credenciais compartilhadas. Para obter informações sobre a especificação de credenciais, consulte Credenciais
O exemplo de código a seguir mostra como gerar um token de autenticação e usá-lo para se conectar a um cluster de banco de dados.
Para executar esse exemplo de código, você precisa do AWS SDK para Python (Boto3)
Modifique os valores das seguintes variáveis, conforme necessário:
-
ENDPOINT: o endpoint do cluster de banco de dados que você deseja acessar -
PORT: o número da porta usada para se conectar ao cluster de banco de dados -
USER: a conta de banco de dados que você deseja acessar -
REGION: a região da AWS na qual o cluster do banco de dados está em execução. -
DBNAME: o banco de dados que você deseja acessar -
SSLCERTIFICATE: o caminho completo para o certificado SSL do Amazon AuroraPara
ssl_ca, defina um certificado SSL. Para baixar um certificado SSL, consulte Usar SSL/TLS para criptografar uma conexão com um cluster de banco de dados.
nota
Não é possível usar um registro DNS personalizado do Route 53 ou um endpoint personalizado do Aurora em vez do endpoint do cluster da de banco de dados para gerar o token de autenticação.
Esse código se conecta a um cluster de banco de dados Aurora MySQL.
Antes de executar esse código, instale o driver PyMySQL seguindo as instruções no Python Package Index
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(auth_plugin_map={'mysql_clear_password':None},host=ENDPOINT, user=USER, password=token, port=PORT, database=DBNAME, ssl_ca='SSLCERTIFICATE', ssl_verify_identity=True, ssl_verify_cert=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))
Esse código se conecta a um cluster de banco de dados Aurora PostgreSQL.
Antes de executar esse código, instale psycopg2, seguindo as instruções na documentação 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))
Se você quiser se conectar a um cluster de banco de dados por meio de um proxy, consulte Conectar-se a um banco de dados usando autenticação do IAM.