Conector de Aurora DSQL para node-postgres
El conector de Aurora DSQL para node-postgres
El conector de Aurora DSQL está diseñado como un complemento de autenticación que amplía la funcionalidad del cliente y grupo de node-postgres para permitir que las aplicaciones se autentiquen con Amazon Aurora DSQL mediante credenciales de IAM.
Acerca del conector
Amazon Aurora DSQL es una base de datos distribuida nativa en la nube compatible con PostgreSQL. Aunque requiere autenticación de IAM y tókenes de duración determinada, los controladores de bases de datos tradicionales de Node.js carecen de este soporte integrado.
El conector de Aurora DSQL para node-postgres cierra esta brecha al implementar un middleware de autenticación que funciona a la perfección con node-postgres. Este enfoque permite a los desarrolladores mantener su código de node-postgres existente y, al mismo tiempo, obtener un acceso seguro basado en IAM a los clústeres de Aurora DSQL mediante la administración automatizada de tókenes.
¿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 node-postgres 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 node-postgres: aprovecha el popular cliente de PostgreSQL para Node.js.
-
Integración perfecta: funciona con los patrones de conexión de node-postgres 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.
Aplicación de ejemplo
En el ejemplo
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-node-postgres-connector
Dependencias de los pares
npm install @aws-sdk/credential-providers @aws-sdk/dsql-signer pg tsx npm install --save-dev @types/pg
Uso
Conexiones de clientes
import { AuroraDSQLClient } from "@aws/aurora-dsql-node-postgres-connector"; const client = new AuroraDSQLClient({ host: "<CLUSTER_ENDPOINT>", user: "admin", }); await client.connect(); const result = await client.query("SELECT NOW()"); await client.end();
Conexión de grupo
import { AuroraDSQLPool } from "@aws/aurora-dsql-node-postgres-connector"; const pool = new AuroraDSQLPool({ host: "<CLUSTER_ENDPOINT>", user: "admin", max: 3, idleTimeoutMillis: 60000, }); const result = await pool.query("SELECT NOW()");
Uso avanzado
import { fromNodeProviderChain } from "@aws-sdk/credential-providers"; import { AuroraDSQLClient } from "@aws/aurora-dsql-node-postgres-connector"; const client = new AuroraDSQLClient({ host: "example.dsql.us-east-1.on.aws", user: "admin", customCredentialsProvider: fromNodeProviderChain(), // Optionally provide custom credentials provider }); await client.connect(); const result = await client.query("SELECT NOW()"); await client.end();
Opciones de configuración
| Opción | Tipo | Obligatorio | Descripción |
|---|---|---|---|
host
|
string
|
Sí | Nombre de host del clúster de DSQL |
username
|
string
|
Sí | Nombre de usuario de DSQL |
database
|
string
|
No | Nombre de base de datos |
region
|
string
|
No | Región de AWS (se detecta automáticamente desde el nombre de host si no se proporciona) |
port
|
number
|
No | El valor predeterminado es 5432 |
customCredentialsProvider
|
AwsCredentialIdentity / AwsCredentialIdentityProvider
|
No | Proveedor de credenciales de AWS personalizadas |
profile
|
string
|
No | El nombre del perfil de IAM (valor predeterminado: “predeterminado”) |
tokenDurationSecs
|
number
|
No | Tiempo de caducidad del token en segundos |
Se admiten todos los demás parámetros del cliente
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.