Conector de Aurora DSQL para Postgres.js
El conector de Aurora DSQL para Postgres.js
El conector de Aurora DSQL para Postgres.js está diseñado como un complemento de autenticación que amplía la funcionalidad del cliente de Postgres.js para permitir que las aplicaciones se autentiquen con Amazon Aurora DSQL mediante credenciales de IAM. El conector no se conecta directamente a la base de datos, pero proporciona una autenticación de IAM perfecta además del controlador de Postgres.js subyacente.
Acerca del conector
Amazon Aurora DSQL es un servicio de base de datos SQL distribuido que proporciona alta disponibilidad y escalabilidad para aplicaciones compatibles con PostgreSQL. Aurora DSQL requiere una autenticación basada en IAM con tókenes de tiempo limitado que los controladores de Node.js existentes no admiten de forma nativa.
La idea detrás del conector de Aurora DSQL para Postgres.js es agregar una capa de autenticación sobre el cliente de Postgres.js que gestiona la generación de los tókenes de IAM, lo que permite a los usuarios conectarse a Aurora DSQL sin cambiar sus flujos de trabajo de Postgres.js existentes.
El conector de Aurora DSQL para Postgres.js funciona con la mayoría de las versiones de Postgres.js. Los usuarios proporcionan su propia versión instalando Postgres.js directamente.
¿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 tókenes: los tókenes de autenticación se generan mediante credenciales de AWS y tienen una vida útil configurable
El conector de Aurora DSQL para Postgres.js está diseñado para comprender estos requisitos y generar automáticamente los tókenes de autenticación de IAM al establecer las conexiones.
Características
-
Autenticación automática de IAM: gestiona la generación y la actualización de los tókenes de DSQL
-
Basado en Postgres.js: aprovecha el rápido cliente de PostgreSQL para Node.js
-
Integración perfecta: funciona con los patrones de conexión de Postgres.js existentes
-
Detección automática de regiones: extrae la región de AWS del nombre de host del clúster de DSQL
-
Compatibilidad total con TypeScript: proporciona seguridad total de tipos
-
Compatibilidad de credenciales de AWS: admite varios proveedores de credenciales de AWS (predeterminados, basados en perfiles, personalizados)
-
Compatibilidad con la agrupación de conexiones: funciona a la perfección con la agrupación de conexiones integrada de Postgres.js
Guía de inicio rápido
Requisitos
-
Node.js 20+
-
Configure los permisos de IAM adecuados para permitir que la aplicación se conecte a Aurora DSQL.
-
Credenciales de AWS configuradas (mediante CLI de AWS, variables de entorno o roles de IAM)
Instalación
npm install @aws/aurora-dsql-postgresjs-connector # Postgres.js is a peer-dependency, so users must install it themselves npm install postgres
Uso básico
import { auroraDSQLPostgres } from '@aws/aurora-dsql-postgresjs-connector'; const sql = auroraDSQLPostgres({ host: 'your-cluster.dsql.us-east-1.on.aws', username: 'admin', }); // Execute queries const result = await sql`SELECT current_timestamp`; console.log(result); // Clean up await sql.end();
Uso de un ID de clúster en lugar de un host
const sql = auroraDSQLPostgres({ host: 'your-cluster-id', region: 'us-east-1', username: 'admin', });
Cadena de conexión
const sql = AuroraDSQLPostgres( 'postgres://admin@your-cluster.dsql.us-east-1.on.aws' ); const result = await sql`SELECT current_timestamp`;
Configuración avanzada
import { fromNodeProviderChain } from '@aws-sdk/credential-providers'; const sql = AuroraDSQLPostgres({ host: 'your-cluster.dsql.us-east-1.on.aws', database: 'postgres', username: 'admin', customCredentialsProvider: fromNodeProviderChain(), // Optionally provide custom credentials provider tokenDurationSecs: 3600, // Token expiration (seconds) // Standard Postgres.js options max: 20, // Connection pool size ssl: { rejectUnauthorized: false } // SSL configuration });
Opciones de configuración
| Opción | Tipo | Obligatorio | Descripción |
|---|---|---|---|
host
|
string
|
Sí | Nombre de host o ID de clúster del clúster de DSQL |
database
|
string?
|
No | Nombre de base de datos |
username
|
string?
|
No | Nombre de usuario de la base de datos (usa admin si no se proporciona) |
region
|
string?
|
No | Región de AWS (se detecta automáticamente desde el nombre de host si no se proporciona) |
customCredentialsProvider
|
AwsCredentialIdentityProvider?
|
No | Proveedor de credenciales de AWS personalizadas |
tokenDurationSecs
|
number?
|
No | Tiempo de caducidad del token en segundos |
También se admiten todas las opciones estándar de Postgres.js
Autenticación
El conector gestiona automáticamente la autenticación de DSQL mediante la generación de tókenes a través del generador de tókenes del cliente de DSQL. Si no se proporciona la región de AWS, se analizará automáticamente a partir del nombre de host proporcionado.
Para obtener más información sobre la autenticación en Aurora DSQL, consulte la guía del usuario.
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
-
Los tókenes se generan de forma dinámica para cada conexión
Ejemplo de uso
En GitHub hay disponibles ejemplos de JavaScript que utilizan el conector de Aurora DSQL para Postgres.js. Para obtener instrucciones sobre cómo ejecutar los ejemplos, consulte el directorio de ejemplos
| Descripción | Ejemplo |
|---|---|
| Agrupación de conexiones con consultas simultáneas, incluyendo la creación de tablas, inserciones y lecturas en varios trabajadores. | Ejemplo de grupo de conexiones (preferido) |
| Operaciones CRUD (crear tabla, insertar, seleccionar, eliminar) sin agrupación de conexiones | Ejemplo sin grupo de conexiones |