Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aurora DSQL-Konnektor für Python
Der Aurora DSQL Connector für Python
Der Aurora DSQL Connector für Python ist als Authentifizierungs-Plugin konzipiert, das die Funktionalität der Clientbibliotheken psycopg, psycopg2 und asyncpg erweitert, sodass Anwendungen sich mit Amazon Aurora DSQL mithilfe von IAM-Anmeldeinformationen authentifizieren können. Der Connector stellt keine direkte Verbindung zur Datenbank her, sondern bietet zusätzlich zu den zugrunde liegenden Client-Bibliotheken eine nahtlose IAM-Authentifizierung.
Über den Connector
Amazon Aurora DSQL ist ein verteilter SQL-Datenbankservice, der hohe Verfügbarkeit und Skalierbarkeit für PostgreSQL-kompatible Anwendungen bietet. Aurora DSQL erfordert eine IAM-basierte Authentifizierung mit zeitlich begrenzten Token, die bestehende Python-Bibliotheken nicht nativ unterstützen.
Die Idee hinter dem Aurora DSQL Connector für Python besteht darin, zusätzlich zu den Clientbibliotheken psycopg, psycopg2 und asyncpg eine Authentifizierungsebene hinzuzufügen, die die IAM-Token-Generierung übernimmt und es Benutzern ermöglicht, sich mit Aurora DSQL zu verbinden, ohne ihre bestehenden Workflows zu ändern.
Was ist Aurora DSQL-Authentifizierung?
In Aurora DSQL umfasst die Authentifizierung:
-
IAM-Authentifizierung: alle Verbindungen verwenden eine IAM-basierte Authentifizierung mit zeitlich begrenzten Token
-
Token-Generierung: Authentifizierungstoken werden mithilfe von AWS-Anmeldeinformationen generiert und haben konfigurierbare Lebensdauern
Der Aurora DSQL Connector für Python wurde entwickelt, um diese Anforderungen zu verstehen und beim Verbindungsaufbau automatisch IAM-Authentifizierungstoken zu generieren.
Features
-
Automatische IAM-Authentifizierung — IAM-Token werden automatisch mithilfe von AWS-Anmeldeinformationen generiert
-
Basiert auf psycopg, psycopg2 und asyncpg — nutzt die Clientbibliotheken psycopg, psycopg2 und asyncpg
-
Nahtlose Integration — Funktioniert mit bestehenden Verbindungsmustern von psycopg, psycopg2 und asyncpg, ohne dass Änderungen am Arbeitsablauf erforderlich sind
-
Automatische Erkennung der Region — Extrahiert die AWS-Region aus dem DSQL-Cluster-Hostnamen
-
Support für AWS-Anmeldeinformationen — Unterstützt verschiedene AWS-Anmeldeinformationsanbieter (Standard, profilbasiert, benutzerdefiniert)
-
Kompatibilität mit Verbindungspooling — Funktioniert mit dem integrierten Verbindungspooling von psycopg, psycopg2 und asyncpg
Schnellstart-Anleitung
Voraussetzungen
-
Python 3.10 oder höher
-
Richten Sie die entsprechenden IAM-Berechtigungen ein, damit Ihre Anwendung eine Verbindung zu Aurora DSQL herstellen kann.
-
AWS-Anmeldeinformationen konfiguriert (über AWS-CLI, Umgebungsvariablen oder IAM-Rollen)
Installation
pip install aurora-dsql-python-connector
Installieren Sie psycopg oder psycopg2 oder asyncpg separat
Das Aurora DSQL Connector for Python-Installationsprogramm installiert die zugrunde liegenden Bibliotheken nicht. Sie müssen separat installiert werden, z. B.:
# Install psycopg and psycopg pool pip install "psycopg[binary,pool]"
# Install psycopg2 pip install psycopg2-binary
# Install asyncpg pip install asyncpg
Hinweis:
Nur die Bibliothek, die benötigt wird, muss installiert werden. Wenn der Client psycopg verwenden möchte, muss daher nur psycopg installiert werden. Wenn der Client psycopg2 verwenden soll, muss nur psycopg2 installiert werden. Wenn der Client asyncpg verwenden soll, muss nur asyncpg installiert werden.
Wenn der Client mehr als eine benötigt, müssen alle benötigten Bibliotheken installiert werden.
Grundlegende Verwendung
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)
Benutze nur den Host
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")
Nur Cluster-ID verwenden
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")
Hinweis:
Im Szenario „Nur Cluster-ID verwenden“ wird die Region verwendet, die zuvor auf dem Computer festgelegt wurde, z. B.:
aws configure set region us-east-1
Wenn die Region nicht festgelegt wurde oder sich die angegebene Cluster-ID in einer anderen Region befindet, schlägt die Verbindung fehl. Damit es funktioniert, geben Sie Region als Parameter an, wie im folgenden Beispiel:
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)
Verbindungszeichenfolge
Psychopg
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")
Erweiterte Konfiguration
Psychopg
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)
Konfigurationsoptionen
| Option | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
host
|
string
|
Ja | Hostname oder Cluster-ID des DSQL-Clusters |
user
|
string
|
Nein | DSQL-Benutzername. Standard: admin |
dbname
|
string
|
Nein | Datenbankname. Standard: Postgres |
region
|
string
|
Nein | AWS-Region (automatisch anhand des Hostnamens erkannt, falls nicht angegeben) |
port
|
int
|
Nein | Die Standardeinstellung ist 5432 |
custom_credentials_provider
|
CredentialProvider
|
Nein | Anbieter für benutzerdefinierte AWS-Anmeldeinformationen |
profile
|
string
|
Nein | Der Name des IAM-Profils. Standard: Standard. |
token_duration_secs
|
int
|
Nein | Ablaufzeit des Tokens in Sekunden |
Alle Standardverbindungsoptionen der zugrunde liegenden Bibliotheken psycopg, psycopg2 und asyncpg werden ebenfalls unterstützt, mit Ausnahme der asyncpg-Parameter krbsrvname und gsslib, die von DSQL nicht unterstützt werden.
Verwenden des Aurora DSQL-Konnektors für Python mit Verbindungspooling
Der Aurora DSQL Connector für Python funktioniert mit dem integrierten Verbindungspooling von psycopg, psycopg2 und asyncpg. Der Konnektor übernimmt die Generierung von IAM-Tokens während des Verbindungsaufbaus, sodass die Verbindungspools normal funktionieren können.
psycopg
Für psycopg implementiert der Konnektor eine Verbindungsklasse namens DSQLConnection , die direkt an den psycopg_pool übergeben werden kann. ConnectionPool Konstruktor. Für asynchrone Operationen gibt es auch eine asynchrone Version der Klasse namens 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 )
Hinweis: Max_Lifetime-Konfiguration der Verbindung
Der Parameter max_lifetime sollte auf weniger als 3600 Sekunden (eine Stunde) gesetzt werden, da dies die maximale Verbindungsdauer ist, die von der Aurora DSQL-Datenbank zulässig ist. Wenn Sie einen niedrigeren Wert für max_lifetime festlegen, kann der Verbindungspool die Wiederverwendung von Verbindungen proaktiv verwalten. Dies ist effizienter als die Behandlung von Verbindungs-Timeout-Fehlern in der Datenbank.
psycopg2
Für psycopg2 stellt der Konnektor eine Klasse namens Aurora bereit, die von DSQLThreaded ConnectionPool psycopg2.pool erbt. ThreadedConnectionPool. Die DSQLThreaded ConnectionPool Aurora-Klasse überschreibt nur die interne _connect-Methode. Der Rest der Implementierung wird von psycopg2.pool bereitgestellt. ThreadedConnectionPool unverändert.
import aurora_dsql_psycopg2 as dsql pool = dsql.AuroraDSQLThreadedConnectionPool( minconn=2, maxconn=8, **conn_params, )
asyncpg
Für asyncpg stellt der Konnektor eine create_pool-Funktion bereit, die eine Instanz von asyncPG.Pool zurückgibt.
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)
Authentifizierung
Der Connector verarbeitet die DSQL-Authentifizierung automatisch, indem er mithilfe des DSQL-Client-Token-Generators Token generiert. Wenn die AWS-Region nicht angegeben wird, wird sie automatisch anhand des angegebenen Hostnamens analysiert.
Weitere Informationen zur Authentifizierung in Aurora DSQL finden Sie im Benutzerhandbuch.
Admin im Vergleich zu regulären Benutzern
-
Benannte Benutzer verwenden
"admin"automatisch Administratorauthentifizierungstoken -
Alle anderen Benutzer verwenden Authentifizierungstoken, die keine Administratorrechte haben
-
Token werden dynamisch für jede Verbindung generiert
Beispiele
Den vollständigen Beispielcode finden Sie in den Beispielen, die in den folgenden Abschnitten angegeben sind. Anweisungen zur Ausführung der Beispiele finden Sie in den READMDE-Beispieldateien.
psycopg
| Description | Beispiele |
|---|---|
| Verwenden des Aurora DSQL Connectors für Python für grundlegende Verbindungen | Beispiel für eine grundlegende Verbindung |
| Verwenden des Aurora DSQL Connectors für Python für grundlegende asynchrone Verbindungen | Grundlegendes Beispiel für eine asynchrone Verbindung |
| Verwenden des Aurora DSQL Connectors für Python mit Verbindungspool | Einfaches Verbindungsbeispiel mit Verbindungspool |
| Beispiel für gleichzeitige Verbindungen mit Verbindungspool |
|
| Verwenden des Aurora DSQL Connectors für Python mit asynchronem Verbindungspool | Einfaches Verbindungsbeispiel mit asynchronem Verbindungspool |
psycopg2
| Description | Beispiele |
|---|---|
| Verwenden des Aurora DSQL Connectors für Python für grundlegende Verbindungen | Beispiel für eine grundlegende Verbindung |
| Verwenden des Aurora DSQL Connectors für Python mit Verbindungspool | Einfaches Verbindungsbeispiel mit Verbindungspool |
| Beispiel für gleichzeitige Verbindungen mit Verbindungspool |
asyncpg
| Description | Beispiele |
|---|---|
| Verwenden des Aurora DSQL Connectors für Python für grundlegende Verbindungen | Beispiel für eine grundlegende Verbindung |
| Verwenden des Aurora DSQL Connectors für Python mit Verbindungspool | Einfaches Verbindungsbeispiel mit Verbindungspool |
| Beispiel für gleichzeitige Verbindungen mit Verbindungspool |