Herstellen einer Verbindung zu Aurora DSQL-Clustern mit einem .NET-Connector - 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.

Herstellen einer Verbindung zu Aurora DSQL-Clustern mit einem .NET-Connector

Der Amazon Aurora DSQL Connector for .NET ist ein auf Npgsql basierender .NET-Connector, der die IAM-Authentifizierung für die Verbindung von.NET-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 vorhandene.NET-PostgreSQL-Treiber nicht nativ unterstützen. Der Aurora DSQL Connector for .NET fügt zusätzlich zu Npgsql eine Authentifizierungsebene hinzu, die die IAM-Token-Generierung übernimmt, sodass Sie eine Verbindung zu Aurora DSQL herstellen können, ohne Ihre bestehenden Npgsql-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 .NET versteht diese Anforderungen und generiert beim Verbindungsaufbau automatisch IAM-Authentifizierungstoken.

Features

  • Automatische IAM-Authentifizierung — Übernimmt die Generierung und Aktualisierung von Aurora DSQL-Tokens

  • Basiert auf Npgsql — Umschließt den beliebten PostgreSQL-Treiber für.NET

  • Nahtlose Integration — Funktioniert mit bestehenden Npgsql-Workflows

  • Verbindungspooling — Integrierte Unterstützung NpgsqlDataSource mit maximaler Nutzungsdauer

  • 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

  • SSL-Durchsetzung — Verwendet immer SSL mit Modus und direkter TLS-Aushandlung verify-full

Beispiel

Ein vollständiges Beispiel finden Sie in der Beispielanwendung unter GitHub.

Schnellstart-Anleitung

Voraussetzungen

Installation

Fügen Sie das Paket zu Ihrem Projekt hinzu:

dotnet add package Amazon.AuroraDsql.Npgsql

Usage

Verbindung zum Pool

using Amazon.AuroraDsql.Npgsql; // Create a connection pool await using var ds = await AuroraDsql.CreateDataSourceAsync(new DsqlConfig { Host = "your-cluster.dsql.us-east-1.on.aws", OccMaxRetries = 3 }); // Read await using (var conn = await ds.OpenConnectionAsync()) { await using var cmd = conn.CreateCommand(); cmd.CommandText = "SELECT 'Hello, DSQL!'"; var greeting = await cmd.ExecuteScalarAsync(); Console.WriteLine(greeting); } // Transactional write with OCC retry await ds.WithTransactionRetryAsync(async conn => { await using var cmd = conn.CreateCommand(); cmd.CommandText = "INSERT INTO users (id, name) VALUES (gen_random_uuid(), @name)"; cmd.Parameters.AddWithValue("name", "Alice"); await cmd.ExecuteNonQueryAsync(); });

Einzelne -Verbindung

Für einfache Skripte oder wenn Sie kein Verbindungspooling benötigen:

await using var conn = await AuroraDsql.ConnectAsync(new DsqlConfig { Host = "your-cluster.dsql.us-east-1.on.aws" }); await using var cmd = conn.CreateCommand("SELECT 1"); await cmd.ExecuteScalarAsync();

OCC-Versuch wiederholen

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. OccMaxRetriesIn der Konfiguration so eingestellt, dass automatische Wiederholungen mit exponentiellem Backoff und Jitter aktiviert werden. Für transaktionale Schreibvorgänge verwenden: WithTransactionRetryAsync

await ds.WithTransactionRetryAsync(async conn => { await using var cmd = conn.CreateCommand(); cmd.CommandText = "UPDATE accounts SET balance = balance - 100 WHERE id = @from"; cmd.Parameters.AddWithValue("from", fromId); await cmd.ExecuteNonQueryAsync(); cmd.CommandText = "UPDATE accounts SET balance = balance + 100 WHERE id = @to"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("to", toId); await cmd.ExecuteNonQueryAsync(); });

Verwenden Sie für DDL- oder Einzelanweisungen: ExecWithRetryAsync

await ds.ExecWithRetryAsync("CREATE TABLE IF NOT EXISTS users (id UUID PRIMARY KEY, name TEXT)");
Wichtig

WithTransactionRetryAsyncverwaltetBEGIN/COMMIT/ROLLBACKintern und öffnet für jeden Versuch eine neue Verbindung. Ihr Rückruf sollte nur Datenbankoperationen enthalten und sicher sein, dass Sie es erneut versuchen können.

Konfigurationsoptionen

Der Konnektor akzeptiert auch postgresql:// Verbindungszeichenfolgen mit postgres:// region und profile Abfrageparametern.

Feld Typ Standard Description
Host string (erforderlich) Cluster-Endpunkt oder Cluster-ID mit 26 Zeichen
Region string? (automatisch erkannt) AWS Region; erforderlich, wenn Host es sich um eine Cluster-ID handelt
User string "admin" Datenbankbenutzer
Database string "postgres" Datenbankname
Port int 5432 Datenbankport
Profile string? null AWS Profilname für Anmeldeinformationen
CustomCredentialsProvider AWSCredentials? null Anbieter AWS für benutzerdefinierte Anmeldeinformationen
TokenDurationSecs int? null(SDK-Standard, 900s) Gültigkeitsdauer des Tokens in Sekunden
OccMaxRetries int? null(deaktiviert) Standardmäßige maximale Anzahl an OCC-Wiederholungen für Wiederholungsmethoden in der Datenquelle
OrmPrefix string? null ORM-Präfix wird vorangestellt application_name
LoggerFactory ILoggerFactory? null Logger-Fabrik für Wiederholungswarnungen und Diagnosen
ConfigureConnectionString Action<NpgsqlConnectionStringBuilder>? null Callback, um Pool-Einstellungen zu überschreiben oder zusätzliche Eigenschaften der Npgsql-Verbindungszeichenfolge festzulegen. SSL und Enlist sind Sicherheitsinvarianten und können nicht außer Kraft gesetzt werden.

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