IAM 인증 및 AWS SDK for Python (Boto3)를 사용하여 DB 클러스터에 연결 - Amazon Aurora

IAM 인증 및 AWS SDK for Python (Boto3)를 사용하여 DB 클러스터에 연결

아래 설명과 같이 AWS SDK for Python (Boto3)를 사용하여 Aurora MySQL 또는 Aurora PostgreSQL DB 클러스터에 연결할 수 있습니다.

필수 조건

다음은 IAM 인증을 사용하여 DB 클러스터에 연결하기 위한 사전 조건입니다.

또한 샘플 코드에서 가져온 라이브러리가 시스템에 있는지 확인합니다.

예시

코드 예제에서는 공유 자격 증명에 프로필을 사용합니다. 자격 증명 지정에 대한 자세한 내용은 AWS SDK for Python (Boto3) 설명서의 자격 증명을 참조하십시오.

다음 코드 예제는 인증 토큰을 생성한 다음 이 토큰을 사용하여 DB 클러스터에 연결하는 방법을 보여줍니다.

이 코드 예제를 실행하려면 AWS SDK for Python (Boto3)가 필요하며 이는 AWS 사이트에서 받을 수 있습니다.

필요하다면 다음 변수 값을 변경합니다.

  • ENDPOINT - 액세스할 DB 클러스터의 엔드포인트입니다.

  • PORT – DB 클러스터에 연결할 때 사용할 포트 번호입니다.

  • USER – 액세스할 데이터베이스 계정입니다.

  • REGION - DB 클러스터가 실행되는 AWS 리전입니다.

  • DBNAME – 액세스할 데이터베이스입니다.

  • SSLCERTIFICATE - Amazon Aurora에 대한 SSL 인증서의 전체 경로입니다.

    ssl_ca의 경우 SSL 인증서를 지정합니다. SSL 인증서를 다운로드하려면 SSL/TLS를 사용하여 DB 클러스터에 대한 연결 암호화 섹션을 참조하세요.

참고

인증 토큰을 생성할 때는 DB 클러스터 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드 또는 Aurora 사용자 지정 엔드포인트를 사용할 수 없습니다.

이 코드는 Aurora MySQL DB 클러스터에 연결됩니다.

이 코드를 실행하기 전에 Python Package 색인에 있는 지침에 따라 PyMySQL 드라이버를 설치하세요.

import pymysql import sys import boto3 import os ENDPOINT="mysqlcluster.cluster-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(host=ENDPOINT, user=USER, passwd=token, port=PORT, database=DBNAME, ssl_ca='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))

이 코드는 Aurora PostgreSQL DB 클러스터에 연결됩니다.

이 코드를 실행하기 전에 Psycopg 설명서의 지침에 따라 psycopg2를 설치하세요.

import psycopg2 import sys import boto3 import os ENDPOINT="postgresmycluster.cluster-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))

프록시를 통해 DB 클러스터 연결하려는 경우 IAM 인증을 사용하여 프록시에 연결을 참조하세요.