Connettore Aurora DSQL per Python - Amazon Aurora DSQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connettore Aurora DSQL per Python

Il connettore Aurora DSQL per Python integra l'autenticazione IAM per connettere le applicazioni Python ai cluster DSQL di Amazon Aurora. Internamente, utilizza le librerie client psycopg, psycopg2 e asyncpg.

L'Aurora DSQL Connector per Python è progettato come un plug-in di autenticazione che estende la funzionalità delle librerie client psycopg, psycopg2 e asyncpg per consentire alle applicazioni di autenticarsi con Amazon Aurora DSQL utilizzando credenziali IAM. Il connettore non si connette direttamente al database ma fornisce un'autenticazione IAM senza interruzioni in aggiunta alle librerie client sottostanti.

Informazioni sul connettore

Amazon Aurora DSQL è un servizio di database SQL distribuito che offre disponibilità e scalabilità elevate per applicazioni compatibili con PostgreSQL. Aurora DSQL richiede l'autenticazione basata su IAM con token a tempo limitato che le librerie Python esistenti non supportano nativamente.

L'idea alla base di Aurora DSQL Connector for Python è quella di aggiungere un livello di autenticazione alle librerie client psycopg, psycopg2 e asyncpg che gestiscono la generazione di token IAM, permettendo agli utenti di connettersi ad Aurora DSQL senza modificare i flussi di lavoro esistenti.

Che cos’è l’autenticazione di Aurora DSQL?

In Aurora DSQL, l’autenticazione prevede:

  • Autenticazione IAM: tutte le connessioni utilizzano l’autenticazione basata su IAM con token a tempo limitato

  • Generazione di token: i token di autenticazione vengono generati utilizzando credenziali AWS e hanno una durata configurabile

Il connettore Aurora DSQL per Python è progettato per comprendere questi requisiti e generare automaticamente token di autenticazione IAM quando si stabiliscono connessioni.

Funzionalità

  • Autenticazione IAM automatica: i token IAM vengono generati automaticamente utilizzando le credenziali AWS

  • Basato su psycopg, psycopg2 e asyncpg, sfrutta le librerie client psycopg, psycopg2 e asyncpg

  • Integrazione perfetta: funziona con i pattern di connessione psycopg, psycopg2 e asyncpg esistenti senza richiedere modifiche al flusso di lavoro

  • Region Auto-Discovery: estrae la regione AWS dal nome host del cluster DSQL

  • AWS Credentials Support: supporta vari provider di credenziali AWS (predefiniti, basati su profili, personalizzati)

  • Compatibilità con il pool di connessioni: funziona con il pool di connessioni integrato psycopg, psycopg2 e asyncpg

Guida rapida di avvio

Requisiti

  • Python 3.10 o versioni successive

  • Accesso a un cluster Aurora DSQL

  • Configurazione delle autorizzazioni IAM appropriate per consentire all’applicazione di connettersi ad Aurora DSQL.

  • Credenziali AWS configurate (tramite CLI AWS, variabili di ambiente o ruoli IAM)

Installazione

pip install aurora-dsql-python-connector

Installa psycopg o psycopg2 o asyncpg separatamente

Il programma di installazione di Aurora DSQL Connector for Python non installa le librerie sottostanti. Devono essere installate separatamente, ad esempio:

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

Nota:

È necessario installare solo la libreria necessaria. Pertanto, se il client intende utilizzare psycopg, deve essere installato solo psycopg. Se il client intende utilizzare psycopg2, è necessario installare solo psycopg2. Se il client intende utilizzare asyncpg, deve essere installato solo asyncpg.

Se il client ne ha bisogno di più di una, è necessario installare tutte le librerie necessarie.

Utilizzo di base

psicocopia

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)

Usando just host

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

Utilizzando solo l'ID del cluster

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

Nota:

Nello scenario «using just cluster ID», viene utilizzata la regione precedentemente impostata sulla macchina, ad esempio:

aws configure set region us-east-1

Se la regione non è stata impostata o l'ID del cluster specificato si trova in una regione diversa, la connessione avrà esito negativo. Per farlo funzionare, fornisci la regione come parametro come nell'esempio seguente:

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

Stringa di connessione

psicocopia

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

Configurazione avanzata

psicocopia

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)

Opzioni di configurazione

Opzione Tipo Campo obbligatorio Descrizione
host string nome host o ID del cluster DSQL
user string No Nome utente DSQL. Predefinito: admin
dbname string No Nome del database. Predefinito: postgres
region string No Regione AWS (rilevata automaticamente dal nome host se non fornita)
port int No L'impostazione predefinita è 5432
custom_credentials_provider CredentialProvider No Provider di credenziali AWS personalizzate
profile string No Il nome del profilo IAM. Predefinito: predefinito.
token_duration_secs int No Tempo di scadenza del token in secondi

Sono supportate anche tutte le opzioni di connessione standard delle librerie psycopg, psycopg2 e asyncpg sottostanti, ad eccezione dei parametri asyncpg krbsrvname e gsslib che non sono supportati da DSQL.

Utilizzo del connettore Aurora DSQL per Python con pool di connessioni

Il connettore Aurora DSQL per Python funziona con il pool di connessioni integrato psycopg, psycopg2 e asyncpg. Il connettore gestisce la generazione di token IAM durante la creazione della connessione, consentendo ai pool di connessioni di funzionare normalmente.

psicocopia

Per psycopg, il connettore implementa una classe di connessione denominata DSQLConnection che può essere passata direttamente a psycopg_pool. ConnectionPool costruttore. Per le operazioni asincrone, esiste anche una versione asincrona della classe denominata Connection. DSQLAsync

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 )

Nota: configurazione max_lifetime della connessione

Il parametro max_lifetime deve essere impostato su meno di 3600 secondi (un'ora), poiché questa è la durata massima della connessione consentita dal database Aurora DSQL. L'impostazione di un valore max_lifetime inferiore consente al pool di connessioni di gestire in modo proattivo il riciclo delle connessioni, il che è più efficiente della gestione degli errori di timeout di connessione dal database.

psycopg2

Per psycopg2, il connettore fornisce una classe chiamata DSQLThreaded ConnectionPool Aurora che eredita da psycopg2.pool. ThreadedConnectionPool. La DSQLThreaded ConnectionPool classe Aurora sovrascrive solo il metodo interno _connect. Il resto dell'implementazione è fornito da psycopg2.pool. ThreadedConnectionPool immutato.

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

asincrono

Per asyncpg, il connettore fornisce una funzione create_pool che restituisce un'istanza di Asyncpg.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)

Autenticazione

Il connettore gestisce automaticamente l'autenticazione DSQL generando token utilizzando il generatore di token client DSQL. Se la regione AWS non viene fornita, verrà analizzata automaticamente a partire dal nome host fornito.

Per ulteriori informazioni sull'autenticazione in Aurora DSQL, consulta la guida per l'utente.

Amministratore e utenti regolari

  • Gli utenti nominati utilizzano "admin" automaticamente i token di autenticazione dell'amministratore

  • Tutti gli altri utenti utilizzano token di autenticazione non amministrativi

  • I token vengono generati dinamicamente per ogni connessione

Esempi

Per un codice di esempio completo, fate riferimento agli esempi indicati nelle sezioni seguenti. Per istruzioni su come eseguire gli esempi, fate riferimento ai file READMDE di esempio.

psicocopia

Esempi README

Description Esempi
Utilizzo del connettore Aurora DSQL per Python per connessioni di base Esempio di connessione di base
Utilizzo del connettore Aurora DSQL per Python per connessioni asincrone di base Esempio di connessione asincrona di base
Utilizzo del connettore Aurora DSQL per Python con pool di connessioni Esempio di connessione di base con pool di connessioni
Esempio di connessioni simultanee con pool di connessioni
Utilizzo del connettore Aurora DSQL per Python con pool di connessioni asincrone Esempio di connessione di base con pool di connessioni asincrone

psycopg2

Esempi README

Description Esempi
Utilizzo del connettore Aurora DSQL per Python per connessioni di base Esempio di connessione di base
Utilizzo del connettore Aurora DSQL per Python con pool di connessioni Esempio di connessione di base con pool di connessioni
Esempio di connessioni simultanee con pool di connessioni

asyncpg

Esempi README

Description Esempi
Utilizzo del connettore Aurora DSQL per Python per connessioni di base Esempio di connessione di base
Utilizzo del connettore Aurora DSQL per Python con pool di connessioni Esempio di connessione di base con pool di connessioni
Esempio di connessioni simultanee con pool di connessioni