Conectar-se ao cluster de banco de dados usando a autenticação do IAM e o AWS SDK for Python (Boto3) - Amazon Aurora

Conectar-se ao cluster de banco de dados usando a autenticação do IAM e o AWS SDK for Python (Boto3)

Você pode se conectar a um cluster de banco de dados Aurora MySQL ou Aurora PostgreSQL com a AWS SDK for 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 na documentação AWS SDK for Python (Boto3).

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 for Python (Boto3), encontrado no site AWS.

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 Aurora

    Para 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 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(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))

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 proxy usando autenticação do IAM.