使用證和 AWS SDK for Python (Boto3) - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用和 AWS SDK for Python (Boto3)

您可以使RDS用以下方式連接到 Maria SQL DB SQL、我的或 Postgre 資料庫執行個體 的資料庫叢集 SQL AWS SDK for Python (Boto3) 如下所述。

必要條件

以下是使用IAM驗證連線到資料庫執行個體的先決條件:

此外,請確定範例程式碼中匯入的程式庫存在於您的系統上。

範例

程式碼範例使用設定檔進行共用登入資料。如需有關指定認證的資訊,請參閱 AWS SDK for Python (Boto3) 文件中)。

以下程式碼範例顯示如何產生身分驗證字符,然後用來連線至資料庫執行個體

若要執行此程式碼範例,您需要 AWS SDK for Python (Boto3),發現在 AWS 網站。

視需要修改下列變數的值:

  • ENDPOINT – 您想要存取之資料庫執行個體的端點

  • PORT – 用於連線資料庫執行個體的連接埠號碼

  • USER – 您想要存取的資料庫帳戶

  • REGION— 該 AWS 執行資料庫執行個體的區域

  • DBNAME – 您想要存取的資料庫

  • SSLCERTIFICATEAmazon RDS Amazon 證書的完整路徑

    對於ssl_ca,指定SSL憑證。若要下載SSL憑證,請參閱使用 SSL/TLS 加密與資料庫執行個體或叢集的連線

注意

您無法使用自訂 Route 53 DNS 記錄而非資料庫執行個體端點來產生驗證權杖。

此程式碼會連線至 Maria SQL DB 或我的資料庫執行個體。

在運行此代碼之前,請按照 Python Package 索引中的說明安裝 PyMySQL驅動程序。

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))

此程式碼會連線至 Postgre SQL 資料庫執行個體。

在執行此程式碼之前,請按照 Psycopg 文件中的指示來安裝 psycopg2

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))

如果要透過 Proxy 連線到資料庫執行個體,請參閱 使用 IAM 身分驗證連線到代理