Verbindung zu Aurora DSQL-Clustern mit einem Ruby-Konnektor herstellen - Amazon Aurora DSQL

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 ist ein auf pg basierender Ruby-Connector, der die IAM-Authentifizierung für die Verbindung von Ruby-Anwendungen mit Amazon Aurora DSQL-Clustern integriert.

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_pool Gem 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. GitHub

Schnellstart-Anleitung

Voraussetzungen

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