Connessione ai cluster Aurora DSQL con un connettore.NET - 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.NET

Amazon Aurora DSQL Connector for .NET è un connettore.NET basato su Npgsql che integra l'autenticazione IAM per connettere applicazioni.NET ai cluster DSQL di Amazon Aurora.

Il connettore gestisce la generazione di token, la configurazione SSL e il pool di connessioni in modo da poterti concentrare sulla logica dell'applicazione.

Informazioni sul connettore

Amazon Aurora DSQL richiede l'autenticazione IAM con token a tempo limitato che i driver.NET PostgreSQL esistenti non supportano nativamente. L'Aurora DSQL Connector for .NET aggiunge un livello di autenticazione a Npgsql che gestisce la generazione di token IAM, consentendoti di connetterti ad Aurora DSQL senza modificare i flussi di lavoro Npgsql esistenti.

Cos'è l'autenticazione Aurora SQL?

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 for .NET comprende questi requisiti e genera automaticamente token di autenticazione IAM quando si stabiliscono connessioni.

Funzionalità

  • Autenticazione IAM automatica: gestisce la generazione e l'aggiornamento dei token Aurora DSQL

  • Basato su Npgsql: racchiude il popolare driver PostgreSQL per.NET

  • Integrazione perfetta: funziona con i flussi di lavoro Npgsql esistenti

  • Connessione in pool - Supporto integrato tramite With Max Lifetime Enforcement NpgsqlDataSource

  • 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

  • Applicazione SSL: utilizza sempre SSL con negoziazione TLS modale e diretta verify-full

Applicazione di esempio

Per un esempio completo, vedi l'applicazione di esempio su GitHub.

Guida rapida di avvio

Requisiti

Installazione

Aggiungi il pacchetto al tuo progetto:

dotnet add package Amazon.AuroraDsql.Npgsql

Utilizzo

Connessione alla piscina

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(); });

Connessione singola

Per script semplici o quando non è necessario il pool di connessioni:

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();

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. Impostato OccMaxRetries nella configurazione per abilitare il nuovo tentativo automatico con backoff e jitter esponenziali. WithTransactionRetryAsyncUso per le scritture transazionali:

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(); });

Per le istruzioni DDL o singole, usa: ExecWithRetryAsync

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

WithTransactionRetryAsyncgestisceBEGIN/COMMIT/ROLLBACKinternamente e apre una nuova connessione per ogni tentativo. Il callback deve contenere solo le operazioni del database ed essere sicuro da riprovare.

Opzioni di configurazione

Il connettore accetta anche stringhe postgres:// di postgresql:// connessione con region parametri di interrogazione. profile

Campo Tipo Predefinita Description
Host string (obbligatorio) Endpoint del cluster o ID del cluster a 26 caratteri
Region string? (rilevato automaticamente) AWS regione; obbligatorio se Host è un ID del cluster
User string "admin" Utente del database
Database string "postgres" Nome del database
Port int 5432 Database port (Porta del database)
Profile string? null AWS nome del profilo per le credenziali
CustomCredentialsProvider AWSCredentials? null fornitore di AWS credenziali personalizzate
TokenDurationSecs int? null(SDK predefinito, 900s) Durata della validità del token in secondi
OccMaxRetries int? null(disabilitato) Numero massimo di tentativi OCC predefinito per i metodi di ripetizione sull'origine dati
OrmPrefix string? null Prefisso ORM preceduto da application_name
LoggerFactory ILoggerFactory? null Logger Factory per avvisi e diagnosi di nuovi tentativi
ConfigureConnectionString Action<NpgsqlConnectionStringBuilder>? null Richiamata per sovrascrivere le impostazioni del pool o impostare proprietà aggiuntive della stringa di connessione Npgsql. SSL e Enlist sono invarianti di sicurezza e non possono essere sovrascritti.

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