Python용 Aurora DSQL 커넥터 - Amazon Aurora DSQL

Python용 Aurora DSQL 커넥터

Python용 Aurora DSQL 커넥터는 Python 애플리케이션을 Amazon Aurora DSQL 클러스터에 연결하기 위한 IAM 인증을 통합합니다. 내부적으로는 psycopg, psycopg2asyncpg 클라이언트 라이브러리를 활용합니다.

Python용 Aurora DSQL 커넥터는 psycopg, psycopg2, 및 asyncpg 클라이언트 및 라이브러리를 확장하는 인증 플러그인으로 설계되어 애플리케이션이 IAM 자격 증명을 사용하여 Amazon Aurora DSQL과 인증할 수 있도록 합니다. 커넥터는 데이터베이스에 직접 연결되지 않지만 기본 클라이언트 라이브러리를 기반으로 원활한 IAM 인증을 제공합니다.

커넥터 정보

Amazon Aurora DSQL은 PostgreSQL 호환 애플리케이션에 고가용성과 확장성을 제공하는 분산된 SQL 데이터베이스 서비스입니다. Aurora DSQL에는 기존 Python 라이브러리가 기본적으로 지원하지 않는 시간 제한 토큰을 사용한 IAM 기반 인증이 필요합니다.

Python용 Aurora DSQL 커넥터의 개념은 IAM 토큰 생성을 처리하는 psycopg, psycopg2 및 asyncpg 클라이언트 라이브러리 위에 인증 계층을 추가하여 사용자가 기존 워크플로를 변경하지 않고도 Aurora DSQL에 연결할 수 있도록 하는 것입니다.

Aurora DSQL 인증이란 무엇입니까?

Aurora DSQL에서 인증에는 다음이 포함됩니다.

  • IAM 인증: 모든 연결은 시간 제한 토큰이 있는 IAM 기반 인증을 사용합니다.

  • 토큰 생성: 인증 토큰은 AWS 자격 증명을 사용하여 생성되며 구성 가능한 수명이 있습니다.

Python용 Aurora DSQL 커넥터는 이러한 요구 사항을 이해하고 연결을 설정할 때 IAM 인증 토큰을 자동으로 생성하도록 설계되었습니다.

특성

  • 자동 IAM 인증 - IAM 토큰은 AWS 자격 증명을 사용하여 자동으로 생성됩니다.

  • psycopg, psycopg2 및 asyncpg 기반 - psycopg, psycopg2 및 asyncpg 클라이언트 라이브러리 활용

  • 원활한 통합 - 워크플로 변경 없이 기존 psycopg, psycopg2 및 asyncpg 연결 패턴과 함께 작동

  • 리전 자동 검색 - DSQL 클러스터 호스트 이름에서 AWS 리전 추출

  • AWS 자격 증명 지원 - 다양한 AWS 자격 증명 공급자(기본값, 프로필 기반, 사용자 지정) 지원

  • 연결 풀링 호환성 - psycopg, psycopg2 및 asyncpg 내장 연결 풀링과 함께 사용 가능

빠른 시작 설명서

요구 사항

  • Python 3.10 이상

  • Aurora DSQL 클러스터에 대한 액세스

  • 애플리케이션이 Aurora DSQL에 연결할 수 있도록 적절한 IAM 권한 설정

  • AWS CLI, 환경 변수 또는 IAM 역할을 통해 AWS 자격 증명 구성

설치

pip install aurora-dsql-python-connector

psycopg 또는 psycopg2 또는 asyncpg를 별도로 설치

Python용 Aurora DSQL 커넥터 설치 관리자는 기본 라이브러리를 설치하지 않습니다. 별도로 설치해야 합니다. 예:

# Install psycopg and psycopg pool pip install "psycopg[binary,pool]"
# Install psycopg2 pip install psycopg2-binary
# Install asyncpg pip install asyncpg

참고:

필요한 라이브러리만 설치해야 합니다. 따라서 클라이언트가 psycopg를 사용할 경우 psycopg만 설치하면 됩니다. 클라이언트가 psycopg2를 사용하려는 경우 psycopg2만 설치하면 됩니다. 클라이언트가 asyncpg를 사용하려는 경우 asyncpg만 설치하면 됩니다.

클라이언트에 둘 이상 필요한 경우 필요한 모든 라이브러리를 설치해야 합니다.

기본 사용법

psycopg

import aurora_dsql_psycopg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

psycopg2

import aurora_dsql_psycopg2 as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = await dsql.connect(**config) result = await conn.fetchrow("SELECT 1") await conn.close() print(result)

호스트만 사용

psycopg
import aurora_dsql_psycopg as dsql conn = dsql.connect("your-cluster.dsql.us-east-1.on.aws")
psycopg2
import aurora_dsql_psycopg2 as dsql conn = dsql.connect("your-cluster.dsql.us-east-1.on.aws")
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("your-cluster.dsql.us-east-1.on.aws")

클러스터 ID만 사용

psycopg
import aurora_dsql_psycopg as dsql conn = dsql.connect("your-cluster")
psycopg2
import aurora_dsql_psycopg2 as dsql conn = dsql.connect("your-cluster")
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("your-cluster")

참고:

"클러스터 ID만 사용" 시나리오에서는 시스템에 이전에 설정된 리전이 사용됩니다. 예:

aws configure set region us-east-1

리전이 설정되지 않았거나 지정된 클러스터 ID가 다른 리전에 있는 경우 연결이 실패합니다. 작동하려면 아래 예제와 같이 리전을 파라미터로 제공합니다.

psycopg
import aurora_dsql_psycopg as dsql config = { "region": "us-east-1", } conn = dsql.connect("your-cluster", **config)
psycopg2
import aurora_dsql_psycopg2 as dsql config = { "region": "us-east-1", } conn = dsql.connect("your-cluster", **config)
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql config = { "region": "us-east-1", } conn = await dsql.connect("your-cluster", **config)

연결 문자열

psycopg

import aurora_dsql_psycopg as dsql conn = dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

psycopg2

import aurora_dsql_psycopg2 as dsql conn = dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

고급 구성

psycopg

import aurora_dsql_psycopg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

psycopg2

import aurora_dsql_psycopg2 as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = await dsql.connect(**config) result = await conn.fetchrow("SELECT 1") await conn.close() print(result)

구성 옵션

옵션 Type 필수 설명
host string DSQL 클러스터 호스트 이름 또는 클러스터 ID
user string 아니요 DSQL 사용자 이름입니다. 기본값: admin
dbname string 아니요 데이터베이스 이름. 기본값: postgres
region string 아니요 AWS 리전(제공되지 않은 경우 호스트 이름에서 자동 감지됨)
port int 아니요 기본값: 5432
custom_credentials_provider CredentialProvider 아니요 사용자 지정 AWS 자격 증명 공급자
profile string 아니요 IAM 프로파일 이름입니다. 기본값: default
token_duration_secs int 아니요 초 단위의 토큰 만료 시간

DSQL에서 지원되지 않는 asyncpg 파라미터 krbsrvnamegsslib를 제외하고 기본 psycopg, psycopg2 및 asyncpg 라이브러리의 모든 표준 연결 옵션도 지원됩니다.

연결 풀링과 함께 Python용 Aurora DSQL 커넥터 사용

Python용 Aurora DSQL 커넥터는 psycopg, psycopg2 및 asyncpg 내장 연결 풀링과 함께 작동합니다. 커넥터는 연결 설정 중에 IAM 토큰 생성을 처리하여 연결 풀이 정상적으로 작동할 수 있도록 합니다.

psycopg

psycopg의 경우 커넥터는 psycopg_pool.ConnectionPool 생성자로 직접 전달할 수 있는 DSQLConnection ConnectionPool 이라는 연결 클래스를 구현합니다. 비동기 작업의 경우 DSQLAsyncConnection 버전도 있습니다.

from psycopg_pool import ConnectionPool as PsycopgPool ... pool = PsycopgPool( "", connection_class=dsql.DSQLConnection, kwargs=conn_params, min_size=2, max_size=8, max_lifetime=3300 )

참고: 연결 max_lifetime 구성

max_lifetime 파라미터는 Aurora DSQL 데이터베이스에서 허용되는 최대 연결 기간이므로 3600초(1시간) 미만으로 설정해야 합니다. max_lifetime을 낮게 설정하면 연결 풀이 연결 재활용을 사전에 관리할 수 있으므로 데이터베이스의 연결 제한 시간 오류를 처리하는 것보다 더 효율적입니다.

psycopg2

psycopg2의 경우 커넥터는 psycopg2.pool.ThreadedConnectionPool에서 상속되는 AuroraDSQLThreadedConnectionPool이라는 클래스를 제공합니다. AuroraDSQLThreadedConnectionPool 클래스는 내부 _connect 메서드만 재정의합니다. 나머지 구현은 psycopg2.pool.ThreadedConnectionPool에서 변경 없이 제공됩니다.

import aurora_dsql_psycopg2 as dsql pool = dsql.AuroraDSQLThreadedConnectionPool( minconn=2, maxconn=8, **conn_params, )

asyncpg

asyncpg의 경우 커넥터는 asyncpg.Pool의 인스턴스를 반환하는 create_pool 함수를 제공합니다.

import asyncio import os import aurora_dsql_asyncpg as dsql pool_params = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'user': "admin", "min_size": 2, "max_size": 5, } pool = await dsql.create_pool(**pool_params)

Authentication

커넥터는 DSQL 클라이언트 토큰 생성기를 사용하여 토큰을 생성하여 DSQL 인증을 자동으로 처리합니다. AWS 리전이 제공되지 않으면 제공된 호스트 이름에서 자동으로 구문 분석됩니다.

Aurora DSQL의 인증에 대한 자세한 내용은 사용 설명서를 참조하세요.

관리자 및 일반 사용자

  • "admin"이라는 사용자가 관리자 인증 토큰을 자동으로 사용

  • 다른 모든 사용자는 관리자가 아닌 인증 토큰을 사용합니다.

  • 토큰은 각 연결에 대해 동적으로 생성됩니다.

예제

전체 예제 코드는 아래 섹션에 표시된 예제를 참조하세요. 예제를 실행하는 방법에 대한 지침은 예제 READMDE 파일을 참조하세요.

psycopg

예제 README

설명 예제
기본 연결에 Python용 Aurora DSQL 커넥터 사용 기본 연결 예제
기본 비동기식 연결에 Python용 Aurora DSQL 커넥터 사용 기본 비동기 연결 예제
연결 풀링과 함께 Python용 Aurora DSQL 커넥터 사용 연결 풀을 사용하는 기본 연결 예제
연결 풀을 사용하는 동시 연결 예제
비동기 연결 풀과 함께 Python용 Aurora DSQL 커넥터 사용 비동기 연결 풀을 사용한 기본 연결 예제

psycopg2

예제 README

설명 예제
기본 연결에 Python용 Aurora DSQL 커넥터 사용 기본 연결 예제
연결 풀링과 함께 Python용 Aurora DSQL 커넥터 사용 연결 풀을 사용하는 기본 연결 예제
연결 풀을 사용하는 동시 연결 예제

asyncpg

예제 README

설명 예제
기본 연결에 Python용 Aurora DSQL 커넥터 사용 기본 연결 예제
연결 풀링과 함께 Python용 Aurora DSQL 커넥터 사용 연결 풀을 사용하는 기본 연결 예제
연결 풀을 사용하는 동시 연결 예제