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
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
-
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
|
Sì | 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
| 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
| 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
| 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 |