Connecteur SQL Aurora pour Python - Amazon Aurora DSQL

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 intègre l'authentification IAM pour connecter les applications Python aux clusters Amazon Aurora DSQL. En interne, il utilise les bibliothèques clientes psycopg, psycopg2 et asyncpg.

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

  • Accès à un cluster SQL Aurora

  • 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

Exemples README

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

Exemples README

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

Exemples README

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