Connessione ai cluster Aurora DSQL con un connettore Ruby - Amazon Aurora DSQL

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 basato su pg che integra l'autenticazione IAM per connettere le applicazioni Ruby ai cluster DSQL di Amazon Aurora.

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 su GitHub.

Guida rapida di avvio

Requisiti

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