Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connessione al di istanze DB utilizzando l'autenticazione IAM e il AWS SDK per Python (Boto3)
È possibile connettersi a un cluster RDS per MariaDB, MySQL o PostgreSQL DB con Aurora MySQL o DB come descritto di seguito. AWS SDK per Python (Boto3)
Prerequisiti
Di seguito sono riportati i prerequisiti per la connessione al di istanzaDB utilizzando l'autenticazione IAM:
Inoltre, assicurarsi che le librerie importate nel codice di esempio esistano nel sistema.
Esempi
Gli esempi di codice utilizzano i profili per le credenziali condivise. Per informazioni sulla specificazione delle credenziali, AWS SDK per Python (Boto3) consulta Credenziali nella documentazione.
Il seguente esempio di codice mostra come generare un token di autenticazione e utilizzarlo per eseguire la connessione a un'istanza del database.
Per eseguire questo esempio di codice, è necessario il file AWS SDK per Python (Boto3)
Modifica i valori delle variabili seguenti in base alle esigenze.
-
ENDPOINT
: l'endpoint dell'istanza cui vuoi accedere -
PORT
– Numero di porta usato per la connessione al cluster -
USER
– L'account database cui vuoi accedere. -
REGION
— La AWS regione in cui è in esecuzione il di istanze DB -
DBNAME
– Database a cui accedere. -
SSLCERTIFICATE
- Percorso completo del certificato SSL per Amazon RDSPer
ssl_ca
, specificare un certificato SSL. Per scaricare un certificato SSL consulta
Nota
Non è possibile utilizzare un record DNS Route 53 personalizzato anziché l'endpoint dell'istanza database per generare il token di autenticazione.
Questo codice si connette a un'istanza database MariaDB o MySQL.
Prima di eseguire questo codice, installa il driver PyMy SQL seguendo le istruzioni nel Python Package
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, 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))
Questo codice si connette a un'istanza database PostgreSQL.
Prima di eseguire questo codice, installapsycopg2
seguendo le istruzioni in Documentazione di 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))
Se desideri connetterti a un'istanza database tramite un proxy, consulta Connessione a un proxy mediante autenticazione IAM.