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.
Connexion aux clusters SQL Aurora à l'aide d'un connecteur Ruby
Le connecteur Aurora DSQL pour Ruby
Le connecteur gère la génération de jetons, la configuration SSL et le regroupement des connexions afin que vous puissiez vous concentrer sur la logique de votre application.
À propos du connecteur
Amazon Aurora DSQL nécessite une authentification IAM avec des jetons à durée limitée que les pilotes Ruby PostgreSQL existants ne prennent pas en charge de manière native. Le connecteur Aurora DSQL pour Ruby ajoute une couche d'authentification au-dessus de la gem pg qui gère la génération de jetons IAM, vous permettant de vous connecter à Aurora DSQL sans modifier vos flux de travail pg existants.
Qu'est-ce que l'authentification SQL Aurora ?
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 : le connecteur génère des jetons d'authentification à l'aide AWS d'informations d'identification, et ces jetons ont une durée de vie configurable
Le connecteur Aurora DSQL pour Ruby comprend ces exigences et génère automatiquement des jetons d'authentification IAM lors de l'établissement de connexions.
Caractéristiques
-
Authentification IAM automatique : gère la génération et l'actualisation des jetons Aurora DSQL
-
Construit sur pg - Enveloppe la célèbre gemme PostgreSQL pour Ruby
-
Intégration parfaite - Fonctionne avec les flux de travail pg gem existants
-
Regroupement de connexions - Support intégré via le
connection_poolgem avec max_lifetime enforcement -
Détection automatique des régions : extrait AWS la région du nom d'hôte du cluster Aurora DSQL
-
AWS support des identifiants : prend en charge les AWS profils et les fournisseurs d'identifiants personnalisés
-
Nouvelle tentative OCC - Optez pour une nouvelle tentative de contrôle de simultanéité optimiste avec un recul exponentiel
Exemple d'application
Pour un exemple complet, consultez l'exemple d'application
Guide de démarrage rapide
Exigences
-
Ruby 3.1 ou version ultérieure
-
AWS informations d'identification configurées (via la AWS CLI, les variables d'environnement ou les rôles IAM)
Installation
Ajoutez à votre Gemfile :
gem "aurora-dsql-ruby-pg"
Ou installez directement :
gem install aurora-dsql-ruby-pg
Usage
Connexion à la piscine
require "aurora_dsql_pg" # Create a connection pool with OCC retry enabled pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", occ_max_retries: 3 ) # Read pool.with do |conn| result = conn.exec("SELECT 'Hello, DSQL!'") puts result[0]["?column?"] end # Write — you must wrap writes in a transaction pool.with do |conn| conn.transaction do conn.exec_params("INSERT INTO users (id, name) VALUES (gen_random_uuid(), $1)", ["Alice"]) end end pool.shutdown
Connexion simple
Pour les scripts simples ou lorsque le regroupement de connexions n'est pas nécessaire :
conn = AuroraDsql::Pg.connect(host: "your-cluster.dsql.us-east-1.on.aws") conn.exec("SELECT 1") conn.close
Utilisation avancée
Configuration de l'hôte
Le connecteur prend en charge à la fois les points de terminaison complets du cluster (région détectée automatiquement) et le cluster IDs (région requise) :
# Full endpoint (region auto-detected) pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws" ) # Cluster ID (region required) pool = AuroraDsql::Pg.create_pool( host: "your-cluster-id", region: "us-east-1" )
AWS profils
Spécifiez un AWS profil pour les informations d'identification :
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", profile: "production" )
Format de chaîne de connexion
Le connecteur prend en charge les formats de chaîne de connexion PostgreSQL :
postgres://[user@]host[:port]/[database][?param=value&...] postgresql://[user@]host[:port]/[database][?param=value&...]
Paramètres de requête pris en charge :region,profile,tokenDurationSecs.
# Full endpoint with profile pool = AuroraDsql::Pg.create_pool( "postgres://admin@cluster.dsql.us-east-1.on.aws/postgres?profile=dev" )
Réessayer OCC
Aurora DSQL utilise un contrôle de simultanéité optimiste (OCC). Lorsque deux transactions modifient les mêmes données, la première à valider gagne et la seconde reçoit une erreur OCC.
Une nouvelle tentative d'OCC est facultative. Configurez occ_max_retries lors de la création du pool pour activer la nouvelle tentative automatique avec un recul et une instabilité exponentiels : pool.with
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", occ_max_retries: 3 ) pool.with do |conn| conn.transaction do conn.exec_params("UPDATE accounts SET balance = balance - $1 WHERE id = $2", [100, from_id]) conn.exec_params("UPDATE accounts SET balance = balance + $1 WHERE id = $2", [100, to_id]) end end
Avertissement
pool.withn'intègre PAS automatiquement votre bloc dans une transaction. Vous devez conn.transaction vous appeler pour les opérations d'écriture. En cas de conflit OCC, le connecteur réexécute l'intégralité du bloc. Il doit donc contenir uniquement les opérations de base de données et pouvoir réessayer en toute sécurité.
Pour éviter de réessayer un appel individuel, passez retry_occ: false :
pool.with(retry_occ: false) do |conn| conn.exec("SELECT 1") end
Options de configuration
| Champ | Type | Par défaut | Description |
|---|---|---|---|
| hôte | String | (obligatoire) | Point de terminaison ou ID de cluster |
| Région | String | (détecté automatiquement) | AWS région ; obligatoire si l'hôte est un ID de cluster |
| user | String | « administrateur » | Utilisateur de la base de donnée |
| database | String | « postgres » | Nom de la base de données |
| port | Entier | 5432 | Port de la base de données |
| profile | String | néant | AWS nom de profil pour les informations d'identification |
| durée du jeton | Entier | 900 (15 minutes) | Durée de validité du jeton en secondes (maximum autorisé : 1 semaine, par défaut : 15 min) |
| credentials_provider | Aws : :Informations d'identification | néant | Fournisseur d'informations d'identification personnalisées |
| durée de vie maximale | Entier | 300 (55 minutes) | Durée de vie maximale de la connexion en secondes |
| application_name | String | néant | Préfixe ORM pour application_name |
| bûcheron | Logger | néant | Enregistreur pour les avertissements relatifs aux nouvelles tentatives d'OCC |
| occ_max_réessais | Entier | nil (désactivé) | Max OCC réessaie pool.with ; permet de réessayer une fois défini |
create_poolaccepte également un pool: mot clé avec un hachage d'options auquel vous passez directement. ConnectionPool.new Si vous omettezpool:, le connecteur est défini par défaut sur. {size: 5, timeout: 5} Les clés que vous fournissez remplacent uniquement ces valeurs par défaut spécifiques.
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", pool: { size: 10, timeout: 10 } )
Authentification
Le connecteur gère automatiquement l'authentification Aurora DSQL en générant des jetons à l'aide d' AWS informations d'identification. Si vous ne fournissez pas la AWS région, le connecteur l'analyse à partir du nom d'hôte.
Pour plus d'informations sur l'authentification dans Aurora DSQL, consultezAuthentification et autorisation pour Aurora DSQL.
Administrateur et utilisateurs réguliers
-
Les utilisateurs nommés « admin » utilisent automatiquement des jetons d'authentification d'administrateur
-
Tous les autres utilisateurs utilisent des jetons d'authentification ordinaires
-
Le connecteur génère des jetons de manière dynamique pour chaque connexion