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

Connessione al cluster tramite Autenticazione IAM e AWS SDK per Python (Boto3)

Puoi connetterti a un'istanza database RDS for MariaDB, MySQL o PostgreSQL con la AWS SDK per 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 per 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 per 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 Utilizzo di SSL/TLS per crittografare una connessione a un’istanza database o un cluster di database

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(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, 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.