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
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
NpgsqlDataSourcemit 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
Schnellstart-Anleitung
Voraussetzungen
-
.NET 8.0 oder höher
-
AWS konfigurierte Anmeldeinformationen (über AWS CLI, Umgebungsvariablen oder IAM-Rollen)
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