Conector do Aurora SQL para Postgres.js
O conector do Aurora DSQL para Postgres.js
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
-
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
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 |