Aurora DSQL-Konnektor für Python - Amazon Aurora DSQL

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 integriert die IAM-Authentifizierung für die Verbindung von Python-Anwendungen mit Amazon Aurora DSQL-Clustern. Intern verwendet er die Clientbibliotheken psycopg, psycopg2 und asyncpg.

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

  • Zugriff auf einen Aurora DSQL-Cluster

  • 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

Beispiele README

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

Beispiele README

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

Beispiele README

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