Conector de Aurora DSQL para node-postgres - Amazon Aurora DSQL

Conector de Aurora DSQL para node-postgres

El conector de Aurora DSQL para node-postgres es un conector de Node.js creado en node-postgres que integra la autenticación de IAM para conectar aplicaciones de JavaScript/TypeScript a los clústeres de Amazon Aurora DSQL.

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, se incluye una aplicación de ejemplo que muestra cómo utilizar el conector de Aurora DSQL para node-postgres. Para ejecutar el ejemplo incluido, consulte el ejemplo README.

Guía de inicio rápido

Requisitos

  • Node.js 20+

  • Acceso a un clúster de Aurora DSQL

  • 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 Nombre de host del clúster de DSQL
username string 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/grupo.

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.