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

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

Vous pouvez vous connecter à une instance de base de données RDS for MySQL ou RDS for PostgreSQL MySQL avec AWS SDK for Python (Boto3), comme décrit ci-après.

Les conditions préalables à la connexion à votre instance de base de données à l'aide de l'authentification IAM sont les suivantes :

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

Les exemples de code utilisent des profils pour les informations d'identification partagées. Pour de plus amples informations sur les informations d'identification spécifiant, veuillez consulter Informations d'identification dans la documentation AWS SDK for Python (Boto3).

Création d'un jeton d'authentification IAM

Vous pouvez appeler la méthode generate_db_auth_token pour obtenir un jeton signé. Fournissez le point de terminaison du d'instance de base de données, le port, le nom d'utilisateur, la région AWS et le moteur de base de données pour générer le jeton pour la connexion à un d'instances de base de données avec des informations d'identification IAM.

Ce code génère un jeton d'authentification IAM pour une instance de base de données MySQL.

import sys import boto3 import os ENDPOINT="mysqldb.123456789012.us-east-1.rds.amazonaws.com" PORT="3306" USR="jane_doe" REGION="us-east-1" os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1' #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=USR, Region=REGION)

Ce code génère un jeton d'authentification IAM pour une instance de base de données PostgreSQL.

import sys import boto3 import os ENDPOINT="postgresmydb.123456789012.us-east-1.rds.amazonaws.com" PORT="5432" USR="jane_doe" REGION="us-east-1" #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=USR, Region=REGION)

Connexion à votre instance de base de données

L'exemple de code suivant montre comment créer un jeton d'authentification, puis l'utiliser pour se connecter à un d'instances de base de données.

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

Modifiez la valeur des variables suivantes selon les besoins :

  • ENDPOINT – Le point de terminaison du d’instances de base de données auquel 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 – La région AWS où le d'instances de base de données s'exécute.

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

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

import mysql.connector import sys import boto3 import os ENDPOINT="mysqldb.123456789012.us-east-1.rds.amazonaws.com" PORT="3306" USR="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=USR, Region=REGION) try: conn = mysql.connector.connect(host=ENDPOINT, user=USR, passwd=token, port=PORT, database=DBNAME, ssl_ca='[full path]rds-combined-ca-bundle.pem') 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 instance de base de données PostgreSQL.

import psycopg2 import sys import boto3 import os ENDPOINT="postgresmydb.123456789012.us-east-1.rds.amazonaws.com" PORT="5432" USR="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=USR, Region=REGION) try: conn = psycopg2.connect(host=ENDPOINT, port=PORT, database=DBNAME, user=USR, password=token, ssl_ca='[full path]rds-combined-ca-bundle.pem') 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))