适用于 Postgres.js 的 Aurora DSQL 连接器
Aurora DSQL Connector for Postgres.js
经设计,适用于 Postgres.js 的 Aurora DSQL 连接器可作为身份验证插件,对 Postgres.js 客户端的功能进行扩展,使应用程序能够使用 IAM 凭证与 Amazon Aurora DSQL 进行身份验证。该连接器不直接连接到数据库,而是在底层 Postgres.js 驱动程序之上,提供无缝的 IAM 身份验证。
关于连接器
Amazon Aurora DSQL 是一种分布式 SQL 数据库服务,面向兼容 PostgreSQL 的应用程序提供高可用性和可扩展性。Aurora DSQL 要求使用基于 IAM 的身份验证以及限时令牌,而现有 Node.js 驱动程序本身不支持这种方法。
设计适用于 Postgres.js 的 Aurora DSQL 连接器的理念是,在 Postgres.js 客户端之上添加一个身份验证层来处理 IAM 令牌生成,使得用户无需更改现有 Postgres.js 工作流即可连接到 Aurora DSQL。
适用于 Postgres.js 的 Aurora DSQL 连接器可以用于大多数版本的 Postgres.js。用户可通过直接安装 Postgres.js 来提供自己的版本。
什么是 Aurora DSQL 身份验证?
在 Aurora DSQL 中,身份验证包括:
-
IAM 身份验证:所有连接都使用基于 IAM 的身份验证和限时令牌
-
令牌生成:使用 AWS 凭证生成身份验证令牌,其生命周期可配置
适用于 Postgres.js 的 Aurora DSQL 连接器针对这些要求而设计,在建立连接时自动生成 IAM 身份验证令牌。
功能
-
自动 IAM 身份验证:处理 DSQL 令牌的生成与刷新
-
基于 Postgres.js 构建:借助适用于 Node.js 的高性能 PostgreSQL 客户端
-
无缝集成:适用于现有 Postgres.js 连接模式
-
区域自动发现:从 DSQL 集群主机名中提取 AWS 区域
-
完整 TypeScript 支持:提供完全类型安全性
-
AWS 凭证支持:支持各种 AWS 凭证提供者(默认、基于配置文件、自定义)
-
连接池兼容性:与 Postgres.js 内置连接池无缝协作
快速入门指南
要求
-
Node.js 20+
-
设置适当的 IAM 权限,以允许应用程序连接到 Aurora DSQL。
-
已配置 AWS 凭证(通过 AWS CLI、环境变量或 IAM 角色)。
安装
npm install @aws/aurora-dsql-postgresjs-connector # Postgres.js is a peer-dependency, so users must install it themselves npm install postgres
基本用法
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();
使用集群 ID 而非主机
const sql = auroraDSQLPostgres({ host: 'your-cluster-id', region: 'us-east-1', username: 'admin', });
连接字符串
const sql = AuroraDSQLPostgres( 'postgres://admin@your-cluster.dsql.us-east-1.on.aws' ); const result = await sql`SELECT current_timestamp`;
高级配置
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 });
配置选项
| Option | 类型 | 必需 | 描述 |
|---|---|---|---|
host
|
string
|
是 | DSQL 集群主机名或集群 ID |
database
|
string?
|
否 | 数据库名称 |
username
|
string?
|
否 | 数据库用户名(如果未提供,则使用 admin) |
region
|
string?
|
否 | AWS 区域(如果未提供,则自动从主机名中检测) |
customCredentialsProvider
|
AwsCredentialIdentityProvider?
|
否 | 自定义 AWS 凭证提供者 |
tokenDurationSecs
|
number?
|
否 | 令牌过期时间(以秒为单位) |
还支持所有标准 Postgres.js 选项
身份验证
该连接器通过使用 DSQL 客户端令牌生成器生成令牌来自动处理 DSQL 身份验证。如果未提供 AWS 区域,系统会自动从提供的主机名中解析该区域。
有关 Aurora DSQL 中的身份验证的更多信息,请参阅用户指南。
管理员用户与普通用户
-
名为“admin”的用户会自动使用管理员身份验证令牌
-
所有其他用户都使用普通身份验证令牌
-
令牌将为每个连接动态生成
示例用法
GitHub 上提供了使用适用于 Postgres.js 的 Aurora DSQL 连接器的 JavaScript 示例。有关如何运行这些示例的说明,请参阅示例目录