Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connessione ai cluster Aurora DSQL con un connettore Ruby
L'Aurora DSQL Connector for Ruby è un connettore Ruby
Il connettore gestisce la generazione di token, la configurazione SSL e il pool di connessioni in modo che tu possa concentrarti sulla logica dell'applicazione.
Informazioni sul connettore
Amazon Aurora DSQL richiede l'autenticazione IAM con token a tempo limitato che i driver Ruby PostgreSQL esistenti non supportano nativamente. L'Aurora DSQL Connector per Ruby aggiunge un livello di autenticazione alla gemma pg che gestisce la generazione di token IAM, consentendoti di connetterti ad Aurora DSQL senza modificare i flussi di lavoro pg esistenti.
Cos'è l'autenticazione Aurora DSQL?
In Aurora DSQL, l’autenticazione prevede:
-
Autenticazione IAM: tutte le connessioni utilizzano l’autenticazione basata su IAM con token a tempo limitato
-
Generazione di token: il connettore genera token di autenticazione utilizzando AWS credenziali e questi token hanno una durata configurabile
L'Aurora DSQL Connector per Ruby comprende questi requisiti e genera automaticamente token di autenticazione IAM quando stabilisce le connessioni.
Funzionalità
-
Autenticazione IAM automatica: gestisce la generazione e l'aggiornamento dei token Aurora DSQL
-
Costruito su pg: racchiude la famosa gemma PostgreSQL per Ruby
-
Integrazione perfetta: funziona con i flussi di lavoro pg gem esistenti
-
Connessione condivisa - Supporto integrato tramite gem con max_lifetime enforcement
connection_pool -
Rilevamento automatico della regione: estrae la AWS regione dal nome host del cluster Aurora DSQL
-
AWS supporto per le credenziali: supporta profili e fornitori di credenziali personalizzate AWS
-
Riprova OCC: attiva un nuovo tentativo ottimistico di controllo della concorrenza con backoff esponenziale
Esempio di applicazione
Per un esempio completo, vedi l'applicazione di esempio
Guida rapida di avvio
Requisiti
-
Ruby 3.1 o versione successiva
-
AWS credenziali configurate (tramite AWS CLI, variabili di ambiente o ruoli IAM)
Installazione
Aggiungi al tuo Gemfile:
gem "aurora-dsql-ruby-pg"
Oppure installa direttamente:
gem install aurora-dsql-ruby-pg
Utilizzo
Connessione alla piscina
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
Connessione singola
Per script semplici o quando non è necessario il pool di connessioni:
conn = AuroraDsql::Pg.connect(host: "your-cluster.dsql.us-east-1.on.aws") conn.exec("SELECT 1") conn.close
Utilizzo avanzato
Configurazione dell'host
Il connettore supporta sia gli endpoint completi del cluster (regione rilevata automaticamente) che il cluster IDs (regione richiesta):
# 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 profili
Specificare un AWS profilo per le credenziali:
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", profile: "production" )
Formato della stringa di connessione
Il connettore supporta i formati di stringhe di connessione PostgreSQL:
postgres://[user@]host[:port]/[database][?param=value&...] postgresql://[user@]host[:port]/[database][?param=value&...]
Parametri di interrogazione supportati:region,,. profile tokenDurationSecs
# Full endpoint with profile pool = AuroraDsql::Pg.create_pool( "postgres://admin@cluster.dsql.us-east-1.on.aws/postgres?profile=dev" )
Riprova OCC
Aurora DSQL utilizza il controllo ottimistico della concorrenza (OCC). Quando due transazioni modificano gli stessi dati, la prima che esegue il commit vince e la seconda riceve un errore OCC.
Il nuovo tentativo OCC è facoltativo. Imposta al occ_max_retries momento della creazione del pool per abilitare i nuovi tentativi automatici con backoff e jitter esponenziali attivi: 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
avvertimento
pool.withNON inserisce automaticamente il blocco in una transazione. È necessario chiamare se conn.transaction stessi per le operazioni di scrittura. In caso di conflitto OCC, il connettore riesegue l'intero blocco, quindi dovrebbe contenere solo le operazioni del database ed essere sicuro di riprovare.
Per evitare di ripetere le singole chiamate, inserisci: retry_occ: false
pool.with(retry_occ: false) do |conn| conn.exec("SELECT 1") end
Opzioni di configurazione
| Campo | Tipo | Predefinita | Description |
|---|---|---|---|
| host | Stringa | (richiesto) | Endpoint o ID del cluster |
| region | Stringa | (rilevato automaticamente) | AWS regione; richiesto se l'host è un ID del cluster |
| user | Stringa | «amministratore» | Utente del database |
| database | Stringa | «postgres» | Nome del database |
| port | Numero intero | 5432 | Database port (Porta del database) |
| profile | Stringa | zero | AWS nome del profilo per le credenziali |
| token_duration | Numero intero | 900 (15 min) | Durata della validità del token in secondi (massimo consentito: 1 settimana, impostazione predefinita: 15 min) |
| credentials_provider | Aws: :Credentials | zero | Provider di credenziali personalizzate |
| max_lifetime | Numero intero | 3300 (55 min) | Durata massima della connessione in secondi |
| application_name | Stringa | zero | Prefisso ORM per application_name |
| boscaiolo | Logger | zero | Logger per avvisi di nuovi tentativi OCC |
| occ_max_retries | Numero intero | nil (disabilitato) | Numero massimo di tentativi OCC attivipool.with; abilita i nuovi tentativi quando impostato |
create_poolaccetta anche una pool: parola chiave con un hash di opzioni a cui passi direttamente. ConnectionPool.new Se si omettepool:, per impostazione predefinita il connettore è. {size: 5, timeout: 5} Le chiavi fornite sostituiscono solo quelle impostazioni predefinite specifiche.
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", pool: { size: 10, timeout: 10 } )
Autenticazione
Il connettore gestisce automaticamente l'autenticazione Aurora DSQL generando token utilizzando credenziali. AWS Se non fornite la AWS regione, il connettore la analizza a partire dal nome host.
Per ulteriori informazioni sull'autenticazione in Aurora DSQL, vedere. Autenticazione e autorizzazione per Aurora DSQL
Amministratore e utenti normali
-
Gli utenti denominati «admin» utilizzano automaticamente i token di autenticazione dell'amministratore
-
Tutti gli altri utenti utilizzano token di autenticazione regolari
-
Il connettore genera i token in modo dinamico per ogni connessione