Connessione al cluster tramite Autenticazione IAM e AWS SDK for Python (Boto3) - Amazon Relational Database Service

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 cluster tramite Autenticazione IAM e AWS SDK for Python (Boto3)

Puoi connetterti a un'istanza database RDS for MariaDB, MySQL o PostgreSQL con la AWS SDK for Python (Boto3) come descritto di seguito.

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 specifica delle credenziali, vedere Credenziali nella documentazione di AWS SDK for Python (Boto3).

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 codice di esempio è necessario AWS SDK for Python (Boto3), disponibile sul sito AWS.

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 regione AWS in cui è in esecuzione l'istanza

  • DBNAME – Database a cui accedere.

  • SSLCERTIFICATE - Percorso completo del certificato SSL per Amazon RDS

    Per 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 PyMySQL seguendo le istruzioni in Python Package Index (Indice dei pacchetti Python).

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

Questo codice si connette a un'istanza database PostgreSQL.

Prima di eseguire questo codice, installapsycopg2seguendo 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.