Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verbindung zu Aurora DSQL-Clustern mit einem Ruby-Konnektor herstellen
Der Aurora DSQL Connector für Ruby
Der Connector kümmert sich um die Token-Generierung, die SSL-Konfiguration und das Verbindungspooling, sodass Sie sich auf Ihre Anwendungslogik konzentrieren können.
Über den Konnektor
Amazon Aurora DSQL erfordert eine IAM-Authentifizierung mit zeitlich begrenzten Token, die von vorhandenen Ruby PostgreSQL-Treibern nicht nativ unterstützt werden. Der Aurora DSQL Connector für Ruby fügt dem PG-Gem eine Authentifizierungsebene hinzu, die die IAM-Token-Generierung übernimmt, sodass Sie eine Verbindung zu Aurora DSQL herstellen können, ohne Ihre bestehenden pg-Workflows zu ändern.
Was ist Aurora DSQL-Authentifizierung?
In Aurora DSQL umfasst die Authentifizierung:
-
IAM-Authentifizierung: alle Verbindungen verwenden eine IAM-basierte Authentifizierung mit zeitlich begrenzten Token
-
Token-Generierung: Der Connector generiert Authentifizierungstoken mithilfe von AWS Anmeldeinformationen, und diese Token haben eine konfigurierbare Lebensdauer
Der Aurora DSQL Connector for Ruby versteht diese Anforderungen und generiert beim Verbindungsaufbau automatisch IAM-Authentifizierungstoken.
Features
-
Automatische IAM-Authentifizierung — Übernimmt die Generierung und Aktualisierung von Aurora DSQL-Tokens
-
Built on pg — Umschließt das beliebte PostgreSQL-Gem für Ruby
-
Nahtlose Integration — Funktioniert mit bestehenden PG-Gem-Workflows
-
Verbindungspooling — Integrierte Unterstützung über das
connection_poolGem mit max_lifetime-Durchsetzung -
Automatische Erkennung von Regionen — Extrahiert die AWS Region aus dem Hostnamen des Aurora DSQL-Clusters
-
AWS Unterstützung für Anmeldeinformationen — Unterstützt AWS Profile und Anbieter von benutzerdefinierten Anmeldeinformationen
-
OCC-Wiederholung — Opt-In für optimistische Parallelitätssteuerung mit exponentiellem Backoff
Beispiel
Ein vollständiges Beispiel finden Sie in der Beispielanwendung unter.
Schnellstart-Anleitung
Voraussetzungen
-
Ruby 3.1 oder höher
-
AWS konfigurierte Anmeldeinformationen (über AWS CLI, Umgebungsvariablen oder IAM-Rollen)
Installation
Fügen Sie zu Ihrem Gemfile hinzu:
gem "aurora-dsql-ruby-pg"
Oder direkt installieren:
gem install aurora-dsql-ruby-pg
Usage
Verbindung zum Pool
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
Einzelne -Verbindung
Für einfache Skripte oder wenn kein Verbindungspooling benötigt wird:
conn = AuroraDsql::Pg.connect(host: "your-cluster.dsql.us-east-1.on.aws") conn.exec("SELECT 1") conn.close
Fortgeschrittene Nutzung
Host-Konfiguration
Der Connector unterstützt sowohl vollständige Cluster-Endpunkte (Region automatisch erkannt) als auch Cluster IDs (Region erforderlich):
# 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 Profile
Geben Sie ein AWS Profil für Anmeldeinformationen an:
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", profile: "production" )
Format der Verbindungszeichenfolge
Der Konnektor unterstützt PostgreSQL-Verbindungszeichenfolgenformate:
postgres://[user@]host[:port]/[database][?param=value&...] postgresql://[user@]host[:port]/[database][?param=value&...]
Unterstützte Abfrageparameter:region,,profile. tokenDurationSecs
# Full endpoint with profile pool = AuroraDsql::Pg.create_pool( "postgres://admin@cluster.dsql.us-east-1.on.aws/postgres?profile=dev" )
OCC-Wiederholung
Aurora DSQL verwendet Optimistic Concurrency Control (OCC). Wenn zwei Transaktionen dieselben Daten ändern, gewinnt die erste Transaktion, die einen Commit durchführt, und die zweite erhält einen OCC-Fehler.
Die OCC-Wiederholung ist optional. occ_max_retriesWird bei der Erstellung des Pools so eingestellt, dass automatische Wiederholungen mit exponentiellem Backoff und aktiviertem Jitter aktiviert sind: 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
Warnung
pool.withwickelt Ihren Block NICHT automatisch in eine Transaktion ein. Für Schreiboperationen müssen Sie conn.transaction sich selbst anrufen. Bei einem OCC-Konflikt führt der Konnektor den gesamten Block erneut aus, sodass er nur Datenbankoperationen enthalten sollte und ein erneuter Versuch sicher sein sollte.
Um den Wiederholungsversuch bei einzelnen Aufrufen zu überspringen, übergeben Sie: retry_occ: false
pool.with(retry_occ: false) do |conn| conn.exec("SELECT 1") end
Konfigurationsoptionen
| Feld | Typ | Standard | Description |
|---|---|---|---|
| Host | Zeichenfolge | (erforderlich) | Cluster-Endpunkt oder Cluster-ID |
| Region | Zeichenfolge | (automatisch erkannt) | AWS Region; erforderlich, wenn es sich bei dem Host um eine Cluster-ID handelt |
| user | Zeichenfolge | „Administrator“ | Datenbankbenutzer |
| Datenbank | Zeichenfolge | „Postgres“ | Datenbankname |
| port | Ganzzahl | 5432 | Datenbankport |
| Profil | Zeichenfolge | Null | AWS Profilname für Anmeldeinformationen |
| token_duration | Ganzzahl | 900 (15 Minuten) | Gültigkeitsdauer des Tokens in Sekunden (maximal zulässig: 1 Woche, Standard: 15 Minuten) |
| credentials_provider | Aws:: Anmeldeinformationen | Null | Anbieter für benutzerdefinierte Anmeldeinformationen |
| max_lifetime | Ganzzahl | 3300 (55 Minuten) | Maximale Verbindungslebensdauer in Sekunden |
| application_name | Zeichenfolge | Null | ORM-Präfix für application_name |
| Logger | Logger | Null | Logger für OCC-Wiederholungswarnungen |
| occ_max_retries | Ganzzahl | nil (deaktiviert) | Max. OCC-Wiederholungsversuche aktiviertpool.with; aktiviert Wiederholungsversuche, wenn diese Einstellung gesetzt ist |
create_poolakzeptiert auch ein pool: Schlüsselwort mit einem Hash von Optionen, an die Sie direkt übergeben werden. ConnectionPool.new Wenn Sie es weglassenpool:, ist der Connector standardmäßig auf. {size: 5, timeout: 5} Schlüssel, die Sie angeben, haben nur Vorrang vor diesen spezifischen Standardwerten.
pool = AuroraDsql::Pg.create_pool( host: "your-cluster.dsql.us-east-1.on.aws", pool: { size: 10, timeout: 10 } )
Authentifizierung
Der Connector verarbeitet automatisch die Aurora-DSQL-Authentifizierung, indem er mithilfe von AWS Anmeldeinformationen Token generiert. Wenn Sie die AWS Region nicht angeben, analysiert der Connector sie anhand des Hostnamens.
Weitere Informationen zur Authentifizierung in Aurora DSQL finden Sie unterAuthentifizierung und Autorisierung für Aurora DSQL.
Admin im Vergleich zu normalen Benutzern
-
Benutzer mit dem Namen „admin“ verwenden automatisch Admin-Authentifizierungstoken
-
Alle anderen Benutzer verwenden reguläre Authentifizierungstoken
-
Der Connector generiert dynamisch Token für jede Verbindung