View a markdown version of this page

Conexión a clústeres de Aurora DSQL con un conector de .NET - Amazon Aurora DSQL

Conexión a clústeres de Aurora DSQL con un conector de .NET

El conector de Amazon Aurora DSQL para .NET es un conector de .NET basado en Npgsql que integra la autenticación de IAM para conectar aplicaciones .NET a clústeres de Amazon Aurora DSQL.

El conector se encarga de la generación de tokens, la configuración SSL y la agrupación de conexiones para que usted pueda centrarse en la lógica de su aplicación.

Acerca del conector

Amazon Aurora DSQL requiere una autenticación de IAM con tokens de duración limitada que los controladores PostgreSQL para .NET existentes no admiten de forma nativa. El conector de Aurora DSQL para .NET añade una capa de autenticación sobre Npgsql, que gestiona la generación de tokens de IAM, lo que le permite conectarse a Aurora DSQL sin cambiar sus flujos de trabajo de Npgsql existentes.

¿Qué es la autenticación de Aurora DSQL?

En Aurora DSQL, la autenticación implica:

  • Autenticación de IAM: todas las conexiones utilizan la autenticación basada en IAM con tokens de tiempo limitado

  • Generación de tokens: el conector genera tokens de autenticación utilizando credenciales de AWS, y estos tokens tienen una duración configurable.

El conector de Aurora DSQL para .NET tiene en cuenta estos requisitos y genera automáticamente tokens de autenticación de IAM al establecer conexiones.

Características

  • Autenticación automática de IAM: gestiona la generación y la actualización de token de Aurora DSQL.

  • Basado en Npgsql: incluye el popular controlador de PostgreSQL para.NET.

  • Integración perfecta: funciona con los flujos de trabajo de Npgsql existentes.

  • Agrupación de conexiones: soporte integrado a través de NpgsqlDataSource con aplicación de la duración máxima.

  • Detección automática de regiones: extrae la región de AWS del nombre de host del clúster de DSQL.

  • Compatibilidad con credenciales de AWS: admite perfiles de AWS y proveedores de credenciales personalizadas.

  • Reintento de OCC: reintento opcional del control de simultaneidad optimista con retroceso exponencial.

  • Aplicación de SSL: siempre utiliza SSL con el modo verify-full y negociación de TLS directa.

Aplicación de ejemplo

Para ver un ejemplo completo, consulte la aplicación de ejemplo en GitHub.

Guía de inicio rápido

Requisitos

Instalación

Añada el paquete a su proyecto:

dotnet add package Amazon.AuroraDsql.Npgsql

Uso

Conexión de grupo

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

Conexión única de

Para scripts sencillos o cuando no se necesita el uso de un grupo de conexiones:

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

Reintento de OCC

Aurora DSQL utiliza control de simultaneidad optimista (OCC). Cuando dos transacciones modifican los mismos datos, la primera en confirmarse tiene prioridad y la segunda recibe un error de OCC.

El reintento de OCC es opcional. Establezca OccMaxRetries en la configuración para habilitar el reintento automático con retroceso exponencial y fluctuación. Use WithTransactionRetryAsync para escrituras transaccionales:

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

Para instrucciones DDL o simples, use ExecWithRetryAsync:

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

WithTransactionRetryAsync administra BEGIN/COMMIT/ROLLBACK internamente y abre una nueva conexión para cada intento. Su devolución de llamada debe contener solo operaciones de base de datos, además de ser segura para reintentarlo.

Opciones de configuración

El conector también admite las cadenas de conexión postgres:// y postgresql:// con los parámetros de consulta region y profile.

Campo Tipo Predeterminado Descripción
Host string (obligatorio) Punto de conexión de clúster o ID de clúster de 26 caracteres
Region string? (detectado automáticamente) Región de AWS; obligatorio si el Host es un ID de clúster
User string "admin" Usuario de base de datos
Database string "postgres" Nombre de base de datos
Port int 5432 Database port (Puerto de base de datos)
Profile string? null Nombre de perfil de AWS para las credenciales
CustomCredentialsProvider AWSCredentials? null Proveedor de credenciales de AWS personalizadas
TokenDurationSecs int? null (SDK predeterminado, 900s) Duración de la validez del token en segundos
OccMaxRetries int? null (deshabilitado) El número máximo predeterminado de reintentos de OCC para los métodos de reintento en el origen de datos
OrmPrefix string? null Prefijo ORM precedido de application_name
LoggerFactory ILoggerFactory? null Fábrica de registradores para advertencias y diagnósticos de reintentos
ConfigureConnectionString Action<NpgsqlConnectionStringBuilder>? null Devolución de llamada para anular la configuración del grupo de conexiones o establecer propiedades adicionales de la cadena de conexión de Npgsql. SSL y Enlist son invariables de seguridad y no se pueden anular.

Autenticación

El conector gestiona automáticamente la autenticación de Aurora DSQL generando tokens usando las credenciales de AWS. Si no proporciona la región de AWS, el conector la analiza a partir del nombre de host.

Para obtener más información sobre la autenticación en Aurora DSQL, consulte Autenticación y autorización para Aurora DSQL.

Administrador frente a usuarios habituales

  • Los usuarios denominados “admin” utilizan automáticamente los tókenes de autenticación de administrador

  • Todos los demás usuarios utilizan tókenes de autenticación habituales

  • El conector genera tokens de forma dinámica para cada conexión