View a markdown version of this page

Connessione al tuo DB istanza utilizzando l'autenticazione IAM e il 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 tuo DB istanza utilizzando l'autenticazione IAM e il AWS SDK for Python (Boto3)

È possibile connettersi a un cluster DB RDS per MariaDB, MySQL o PostgreSQL Aurora MySQL o AWS SDK for 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 sulle https://docs.aws.amazon.com/boto3/latest/guide/credentials.html credenziali da specificare, AWS SDK for 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 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 AWS regione in cui istanze DB

  • 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 SSL/TLS per crittografare una connessione a un DB istanza o cluster

Nota

Non è possibile utilizzare un record DNS Route 53 personalizzato anziché l'endpoint dell'istanza databaseper 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 Index.

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 database tramite l'autenticazione IAM.