Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connecteur SQL Aurora pour Python
Le connecteur SQL Aurora pour Python
Le connecteur SQL Aurora pour Python est conçu comme un plug-in d'authentification qui étend les fonctionnalités des bibliothèques clientes psycopg, psycopg2 et asyncpg afin de permettre aux applications de s'authentifier auprès d'Amazon Aurora DSQL à l'aide des informations d'identification IAM. Le connecteur ne se connecte pas directement à la base de données mais fournit une authentification IAM fluide en plus des bibliothèques clientes sous-jacentes.
À propos du connecteur
Amazon Aurora DSQL est un service de base de données SQL distribué qui fournit une disponibilité et une évolutivité élevées aux applications compatibles avec PostgreSQL. Aurora DSQL nécessite une authentification basée sur IAM avec des jetons limités dans le temps que les bibliothèques Python existantes ne prennent pas en charge de manière native.
L'idée du connecteur Aurora DSQL pour Python est d'ajouter une couche d'authentification au-dessus des bibliothèques clientes psycopg, psycopg2 et asyncpg qui gère la génération de jetons IAM, permettant aux utilisateurs de se connecter à Aurora DSQL sans modifier leurs flux de travail existants.
Qu’est-ce que l’authentification Aurora DSQL ?
Dans Aurora DSQL, l’authentification implique :
-
Authentification IAM : toutes les connexions utilisent l’authentification basée sur IAM avec des jetons à durée limitée
-
Génération de jetons : les jetons d'authentification sont générés à l'aide des informations d'identification AWS et ont une durée de vie configurable
Le connecteur Aurora DSQL pour Python est conçu pour comprendre ces exigences et générer automatiquement des jetons d'authentification IAM lors de l'établissement de connexions.
Caractéristiques
-
Authentification IAM automatique : les jetons IAM sont générés automatiquement à l'aide des informations d'identification AWS
-
Construit sur psycopg, psycopg2 et asyncpg : exploite les bibliothèques clientes psycopg, psycopg2 et asyncpg
-
Intégration fluide : fonctionne avec les modèles de connexion psycopg, psycopg2 et asyncpg existants sans modification du flux de travail
-
Découverte automatique des régions : extrait la région AWS du nom d'hôte du cluster DSQL
-
Support des informations d'identification AWS : prend en charge différents fournisseurs d'informations d'identification AWS (par défaut, basé sur le profil, personnalisé)
-
Compatibilité avec le regroupement de connexions : fonctionne avec le regroupement de connexions intégré à psycopg, psycopg2 et asyncpg
Guide de démarrage rapide
Exigences
-
Python 3.10 ou supérieur
-
Configuration des autorisations IAM appropriées pour permettre à votre application de se connecter à Aurora DSQL.
-
Informations d'identification AWS configurées (via l'interface de ligne de commande AWS, les variables d'environnement ou les rôles IAM)
Installation
pip install aurora-dsql-python-connector
Installez psycopg ou psycopg2 ou asyncpg séparément
Le programme d'installation d'Aurora DSQL Connector pour Python n'installe pas les bibliothèques sous-jacentes. Ils doivent être installés séparément, par exemple :
# Install psycopg and psycopg pool pip install "psycopg[binary,pool]"
# Install psycopg2 pip install psycopg2-binary
# Install asyncpg pip install asyncpg
Remarque :
Seule la bibliothèque nécessaire doit être installée. Par conséquent, si le client doit utiliser psycopg, seul psycopg doit être installé. Si le client doit utiliser psycopg2, seul psycopg2 doit être installé. Si le client doit utiliser asyncpg, seul asyncpg doit être installé.
Si le client en a besoin de plusieurs, toutes les bibliothèques nécessaires doivent être installées.
Utilisation de base
psycopie
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)
En utilisant uniquement l'hôte
psycopie
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")
En utilisant uniquement l'ID du cluster
psycopie
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")
Remarque :
Dans le scénario « en utilisant uniquement l'identifiant du cluster », la région précédemment définie sur la machine est utilisée, par exemple :
aws configure set region us-east-1
Si la région n'a pas été définie ou si l'ID de cluster indiqué se trouve dans une autre région, la connexion échouera. Pour que cela fonctionne, indiquez la région en tant que paramètre, comme dans l'exemple ci-dessous :
psycopie
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)
Chaîne de connexion
psycopie
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")
Configuration avancée
psycopie
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)
Options de configuration
| Option | Type | Obligatoire | Description |
|---|---|---|---|
host
|
string
|
Oui | Nom d'hôte ou ID de cluster DSQL |
user
|
string
|
Non | Nom d'utilisateur DSQL. Par défaut : admin |
dbname
|
string
|
Non | Nom de la base de données. Par défaut : postgres |
region
|
string
|
Non | Région AWS (détectée automatiquement à partir du nom d'hôte s'il n'est pas fourni) |
port
|
int
|
Non | Par défaut : 5432 |
custom_credentials_provider
|
CredentialProvider
|
Non | Fournisseur d'informations d'identification AWS personnalisées |
profile
|
string
|
Non | Le nom du profil IAM. Par défaut : par défaut. |
token_duration_secs
|
int
|
Non | Délai d'expiration du jeton en secondes |
Toutes les options de connexion standard des bibliothèques psycopg, psycopg2 et asyncpg sous-jacentes sont également prises en charge, à l'exception des paramètres asyncpg krbsrvname et gsslib qui ne sont pas pris en charge par DSQL.
Utilisation du connecteur SQL Aurora pour Python avec regroupement de connexions
Le connecteur SQL Aurora pour Python fonctionne avec le regroupement de connexions intégré psycopg, psycopg2 et asyncpg. Le connecteur gère la génération de jetons IAM lors de l’établissement de la connexion, ce qui permet aux groupes de connexions de fonctionner normalement.
psycopie
Pour psycopg, le connecteur implémente une classe de connexion nommée DSQLConnection qui peut être transmise directement au psycopg_pool. ConnectionPool constructeur. Pour les opérations asynchrones, il existe également une version asynchrone de la classe nommée 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 )
Remarque : Configuration max_lifetime de la connexion
Le paramètre max_lifetime doit être défini sur moins de 3 600 secondes (une heure), car il s'agit de la durée de connexion maximale autorisée par la base de données Aurora DSQL. La définition d'une valeur max_lifetime inférieure permet au pool de connexions de gérer de manière proactive le recyclage des connexions, ce qui est plus efficace que la gestion des erreurs de délai de connexion provenant de la base de données.
psycopg2
Pour psycopg2, le connecteur fournit une classe nommée Aurora DSQLThreaded ConnectionPool qui hérite de psycopg2.pool. ThreadedConnectionPool. La DSQLThreaded ConnectionPool classe Aurora remplace uniquement la méthode interne _connect. Le reste de l'implémentation est fourni par psycopg2.pool. ThreadedConnectionPool inchangé.
import aurora_dsql_psycopg2 as dsql pool = dsql.AuroraDSQLThreadedConnectionPool( minconn=2, maxconn=8, **conn_params, )
asyncpg
Pour asyncpg, le connecteur fournit une fonction create_pool qui renvoie une instance de 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)
Authentification
Le connecteur gère automatiquement l'authentification DSQL en générant des jetons à l'aide du générateur de jetons du client DSQL. Si la région AWS n'est pas fournie, elle sera automatiquement analysée à partir du nom d'hôte fourni.
Pour plus d'informations sur l'authentification dans Aurora DSQL, consultez le guide de l'utilisateur.
Administrateur et utilisateurs réguliers
-
Les utilisateurs nommés utilisent
"admin"automatiquement des jetons d'authentification d'administrateur -
Tous les autres utilisateurs utilisent des jetons d'authentification non administrateurs
-
Les jetons sont générés dynamiquement pour chaque connexion
Exemples
Pour un exemple de code complet, reportez-vous aux exemples indiqués dans les sections ci-dessous. Pour savoir comment exécuter les exemples, reportez-vous aux exemples de fichiers READMDE.
psycopie
| Description | Exemples |
|---|---|
| Utilisation du connecteur Aurora DSQL pour Python pour les connexions de base | Exemple de connexion de base |
| Utilisation du connecteur Aurora DSQL pour Python pour les connexions asynchrones de base | Exemple de connexion asynchrone de base |
| Utilisation du connecteur Aurora DSQL pour Python avec un pool de connexions | Exemple de connexion de base avec un pool de connexions |
| Exemple de connexions simultanées avec pool de connexions |
|
| Utilisation du connecteur SQL Aurora pour Python avec un pool de connexions asynchrones | Exemple de connexion de base avec un pool de connexions asynchrones |
psycopg2
| Description | Exemples |
|---|---|
| Utilisation du connecteur Aurora DSQL pour Python pour les connexions de base | Exemple de connexion de base |
| Utilisation du connecteur Aurora DSQL pour Python avec un pool de connexions | Exemple de connexion de base avec un pool de connexions |
| Exemple de connexions simultanées avec pool de connexions |
asyncpg
| Description | Exemples |
|---|---|
| Utilisation du connecteur Aurora DSQL pour Python pour les connexions de base | Exemple de connexion de base |
| Utilisation du connecteur Aurora DSQL pour Python avec un pool de connexions | Exemple de connexion de base avec un pool de connexions |
| Exemple de connexions simultanées avec pool de connexions |