Conector do Aurora SQL para Postgres.js - Amazon Aurora DSQL

Conector do Aurora SQL para Postgres.js

O conector do Aurora DSQL para Postgres.js é um conector Node.js desenvolvido em Postgres.js que integra a autenticação do IAM para conectar aplicações Javascript aos clusters do Amazon Aurora DSQL.

O conector do Aurora DSQL para Postgres.js foi projetado como um plug-in de autenticação que estende a funcionalidade do cliente do Postgres.js para permitir que as aplicações se autentiquem com o Amazon Aurora DSQL utilizando credenciais do IAM. O conector não se conecta diretamente ao banco de dados, mas oferece uma autenticação perfeita do IAM no driver subjacente do Postgres.js.

Sobre o conector

O Amazon Aurora DSQL é um serviço de banco de dados SQL distribuído que oferece alta disponibilidade e escalabilidade para aplicações compatíveis com o PostgreSQL. O Aurora DSQL exige autenticação baseada no IAM com tokens de tempo limitado que não são aceitos pelos drivers Node.js.

A ideia por trás do conector do Aurora DSQL para Postgres.js é adicionar uma camada de autenticação sobre o cliente do Postgres.js que gerencia a geração de tokens do IAM, permitindo que os usuários se conectem ao Aurora DSQL sem alterar os respectivos fluxos de trabalho do Postgres.js existentes.

O conector do Aurora DSQL para Postgres.js funciona com a maioria das versões do Postgres.js. Os usuários fornecem a própria versão instalando o Postgres.js diretamente.

O que é a autenticação do Aurora DSQL?

Na autenticação do Aurora DSQL, a autenticação envolve:

  • Autenticação do IAM: todas as conexões usam autenticação baseada no IAM com tokens de tempo limitado.

  • Geração de tokens: os tokens de autenticação são gerados com o uso de credenciais da AWS e têm vida útil configurável.

O conector do Aurora DSQL para Postgres.js foi projetado para entender esses requisitos e gerar tokens de autenticação do IAM automaticamente ao estabelecer conexões.

Recursos

  • Autenticação automática do IAM: trata da geração e atualização de tokens do DSQL.

  • Desenvolvido em Postgres.js: utiliza o rápido cliente do PostgreSQL para Node.js.

  • Integração perfeita: funciona com padrões existentes de conexão do Postgres.js.

  • Descoberta automática de regiões: extrai a região da AWS do nome de host do cluster do DSQL.

  • Suporte completo ao TypeScript: oferece segurança total de tipos.

  • Suporte a credenciais da AWS: aceita vários provedores de credenciais da AWS (padrão, baseado em perfil, personalizado).

  • Compatibilidade com agrupamento de conexões: funciona perfeitamente com o agrupamento de conexões integrado do Postgres.js.

Guia de início rápido

Requisitos

  • Node.js 20

  • Acesso a um cluster do Aurora DSQL

  • Configurar as permissões apropriadas do IAM para permitir que sua aplicação se conecte ao Aurora DSQL.

  • Credenciais da AWS configuradas (por meio da AWS CLI, de variáveis de ambiente ou perfis do IAM).

Instalação

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

Utilizar o ID do cluster em vez do host

const sql = auroraDSQLPostgres({ host: 'your-cluster-id', region: 'us-east-1', username: 'admin', });

String de conexão

const sql = AuroraDSQLPostgres( 'postgres://admin@your-cluster.dsql.us-east-1.on.aws' ); const result = await sql`SELECT current_timestamp`;

Configuração avançada

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

Opções de configuração

Opção Tipo Obrigatório Descrição
host string Sim Nome do host ou ID do cluster do DSQL
database string? Não Nome do banco de dados
username string? Não Nome de usuário do banco de dados (usará admin se não for fornecido)
region string? Não Região da AWS (detectada automaticamente por meio do nome do host, se não for fornecido).
customCredentialsProvider AwsCredentialIdentityProvider? Não Provedor de credenciais personalizadas da AWS
tokenDurationSecs number? Não Tempo de expiração do token em segundos.

Todas as opções padrão do Postgres.js também são aceitas.

Autenticação

O conector processa automaticamente a autenticação do DSQL gerando tokens com o uso do gerador de tokens do cliente do DSQL. Se a região da AWS não for fornecida, ela será automaticamente analisada por meio do nome do host fornecido.

Para acessar mais informações sobre autenticação no Aurora DSQL, consulte o guia do usuário.

Admin versus usuários regulares

  • Usuários chamados “admin” utilizam automaticamente tokens de autenticação de admin.

  • Todos os outros usuários utilizam tokens de autenticação regulares.

  • Os tokens são gerados dinamicamente para cada conexão.

Exemplo de uso

Exemplos de JavaScript usando o conector do Aurora DSQL para Postgres.js estão disponíveis no GitHub. Para ver instruções sobre como executar os exemplos, consulte o diretório de exemplos.

Descrição Exemplo
Agrupamento de conexões com consultas simultâneas, incluindo criação de tabelas, inserções e leituras em vários operadores Exemplo de grupo de conexões (preferencial)
Operações CRUD (criar tabela, inserir, selecionar, excluir) sem grupo de conexões Exemplo sem grupo de conexões