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

È possibile connettersi a un cluster RDSper MariaDB, SQL My o SQL Postgre DB Aurora SQL My o DB con SQL AWS SDK for Python (Boto3) come descritto di seguito.

Prerequisiti

Di seguito sono riportati i prerequisiti per la connessione al di istanze DB tramite IAM l'autenticazione:

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, consulta Credenziali nella AWS SDK for Python (Boto3) 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 AWS SDK for Python (Boto3), trovato su AWS sito.

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— Il AWS Regione in cui è in esecuzione il di istanze DB

  • DBNAME – Database a cui accedere.

  • SSLCERTIFICATE— Il percorso completo del SSL certificato per Amazon RDS Amazon

    Perssl_ca, specifica un SSL certificato. Per scaricare un SSL certificato, consulta.

Nota

Non è possibile utilizzare un DNS record Route 53 personalizzato del di istanze DB per generare il token di autenticazione.

Questo codice si connette a un'istanza MariaDB o SQL My DB.

Prima di eseguire questo codice, installa il PyMy SQL driver 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) 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 DB di Postgre. SQL

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.