Connexion à votre d'instances de base de données à l'aide de IAM l'authentification et du AWS SDK for Python (Boto3) - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connexion à votre d'instances de base de données à l'aide de IAM l'authentification et du AWS SDK for Python (Boto3)

Vous pouvez vous connecter à une avec le SQL AWS SDK for Python (Boto3) comme décrit ci-dessous.

Prérequis

Les conditions requises pour se connecter à votre d'instances de base de données à l'aide de l'IAMauthentification sont les suivantes :

En outre, assurez-vous que les bibliothèques importées dans l'exemple de code existent sur votre système.

Exemples

Les exemples de code utilisent des profils pour les informations d'identification partagées. Pour plus d'informations sur la spécification des informations d'identification, consultez la section Informations d'identification dans le AWS SDK for Python (Boto3) .

Les exemples de code suivants montre comment générer un jeton d'authentification, puis comment l'utiliser pour se connecter à une instance de base de données.

Pour exécuter cet exemple de code, vous avez besoin du AWS SDK for Python (Boto3), qui se trouve sur le AWS site.

Modifiez la valeur des variables suivantes selon les besoins :

  • ENDPOINT – Le point de terminaison de l'instance de base de données à laquelle vous souhaitez accéder.

  • PORT – Le numéro du port utilisé lors de la connexion au d'instances de base de données.

  • USER – Le compte de base de données auquel vous souhaitez accéder.

  • REGION— Le AWS Région dans laquelle le d'instances de base de données est exécuté

  • DBNAME – La base de données à laquelle vous souhaitez accéder.

  • SSLCERTIFICATE— Le chemin complet vers le SSL certificat pour Amazon RDS

    Pourssl_ca, spécifiez un SSL certificat. Pour télécharger un SSL certificat, consultez.

Note

Vous ne pouvez pas utiliser un DNS enregistrement Route 53 personnalisé au lieu du point de terminaison du d'instances de base de données pour générer le jeton d'authentification.

Ce code se connecte à une instance MariaDB ou SQL My DB.

Avant d'exécuter ce code, installez le PyMy SQL pilote en suivant les instructions du 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))

Ce code se connecte à une SQL instance de base de données Postgre.

Avant d'exécuter ce code, installez psycopg2 en suivant les instructions de la documentation de 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))

Si vous souhaitez vous connecter à une instance de bases de données via un proxy, consultez Connexion à un proxy à l'aide de l'authentification IAM.