node-postgres 用の Aurora DSQL コネクタ
node-postgres 用 Aurora DSQL コネクタ
Aurora DSQL コネクタは node-postgres のクライアントおよびプールの機能を拡張して、アプリケーションが IAM 認証情報を使用して Amazon Aurora DSQL で認証できるようにする認証プラグインとして設計されています。
コネクタについて
Amazon Aurora DSQL は、PostgreSQL と互換性があるクラウドネイティブの分散データベースです。IAM 認証と期限付きトークンが必要ですが、従来の Node.js データベースドライバーにはこの組み込みサポートがありません。
node-postgres 用 Aurora DSQL コネクタは、node-postgres とシームレスに連携する認証ミドルウェアを実装することで、このギャップを埋めます。このアプローチにより、デベロッパーは既存のノードポストグレスコードを維持し、自動トークン管理を通じて Aurora DSQL クラスターへの安全な IAM ベースのアクセスを取得できます。
Aurora DSQL 認証とは
Aurora DSQL では、認証に以下が含まれます。
-
IAM 認証: すべての接続で、時間制限付きトークンによる IAM ベースの認証が使用されます
-
トークン生成: 認証トークンは AWS 認証情報を使用して生成され、設定可能な有効期間があります
node-postgres 用 Aurora DSQL コネクタは、これらの要件を理解し、接続の確立時に IAM 認証トークンを自動的に生成するように設計されています。
機能
-
自動 IAM 認証 - DSQL トークンの生成と更新を処理
-
node-postgres 上に構築 - Node.js 用の一般的な PostgreSQL クライアントを活用
-
シームレスな統合 既存の node-postgres 接続パターンで動作
-
リージョンの自動検出 - DSQL クラスターホスト名から AWS リージョンを抽出
-
フル TypeScript サポート - フルタイプのセキュリティを提供
-
AWS 認証情報のサポート: さまざまな認証情報プロバイダー (デフォルト、プロファイルベース、カスタム) をサポート
-
接続プーリングの互換性 - 組み込みの接続プーリングとシームレスに連携
サンプルアプリケーション
例
クイックスタートガイド
要件
-
Node.js 20 以降
-
アプリケーションが Aurora DSQL に接続できるように、適切な IAM アクセス許可を設定します。
-
AWS 認証情報の設定 (AWS CLI、環境変数、または IAM ロール経由)
インストール
npm install @aws/aurora-dsql-node-postgres-connector
ピアの依存関係
npm install @aws-sdk/credential-providers @aws-sdk/dsql-signer pg tsx npm install --save-dev @types/pg
Usage
クライアント接続
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();
プール接続
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()");
高度な使用法
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();
設定オプション
| オプション | タイプ | 必須 | 説明 |
|---|---|---|---|
host
|
string
|
はい | DSQL クラスターホスト名 |
username
|
string
|
はい | DSQL ユーザー名 |
database
|
string
|
いいえ | データベース名 |
region
|
string
|
いいえ | AWS リージョン (指定されていない場合はホスト名から自動検出) |
port
|
number
|
いいえ | デフォルトは 5432 |
customCredentialsProvider
|
AwsCredentialIdentity / AwsCredentialIdentityProvider
|
いいえ | カスタム AWS 認証情報プロバイダー |
profile
|
string
|
いいえ | IAM プロファイル名。デフォルトは「default」 |
tokenDurationSecs
|
number
|
いいえ | トークンの有効期限の秒数 |
クライアント
認証
コネクタは、DSQL クライアントトークンジェネレーターを使用してトークンを生成することで、DSQL 認証を自動的に処理します。AWS リージョンが指定されていない場合、指定されたホスト名から自動的に解析されます。
Aurora DSQL の詳細については、「ユーザーガイド」を参照してください。
管理者ユーザーと通常のユーザー
-
「admin」という名前のユーザーは、管理者認証トークンを自動的に使用します。
-
他のすべてのユーザーは通常の認証トークンを使用します。
-
トークンは接続ごとに動的に生成されます。