Postgres.js 用 Aurora DSQL コネクタ
Postgres.js 用 Aurora DSQL コネクタ
Postgres.js 用 Aurora DSQL コネクタは Postgres.js のクライアント機能を拡張して、アプリケーションが IAM 認証情報を使用して Amazon Aurora DSQL で認証できるようにする認証プラグインとして設計されています。コネクタはデータベースに直接接続しませんが、基盤となる Postgres.js ドライバー上でシームレスな IAM 認証を提供します。
コネクタについて
Amazon Aurora DSQL は、PostgreSQL 互換アプリケーションに高可用性とスケーラビリティを提供する分散 SQL データベースサービスです。Aurora DSQL には、既存の Node.js ドライバーがネイティブにサポートしていない時間制限付きトークンを使用した IAM ベースの認証が必要です。
Postgres.js 用 Aurora DSQL コネクタの考え方は、IAM トークン生成を処理する Postgres.js クライアントの上に認証レイヤーを追加することです。これにより、ユーザーは既存の Postgres.js ワークフローを変更せずに Aurora DSQL に接続できます。
Postgres.js 用 Aurora DSQL コネクタは、ほとんどのバージョンの Postgres.js で動作します。ユーザーは Postgres.js を直接インストールして独自のバージョンを提供します。
Aurora DSQL 認証とは
Aurora DSQL では、認証に以下が含まれます。
-
IAM 認証: すべての接続で、時間制限付きトークンによる IAM ベースの認証が使用されます
-
トークン生成: 認証トークンは AWS 認証情報を使用して生成され、設定可能な有効期間があります
Postgres.js 用 Aurora DSQL Connector は、これらの要件を理解し、接続の確立時に IAM 認証トークンを自動的に生成するように設計されています。
機能
-
自動 IAM 認証 - DSQL トークンの生成と更新を処理
-
Postgres.js 上に構築 - Node.js 用の高速 PostgreSQL クライアントを活用
-
シームレスな統合 - 既存の Postgres.js 接続パターンで動作
-
リージョンの自動検出 - DSQL クラスターホスト名から AWS リージョンを抽出
-
フル TypeScript サポート - フルタイプのセキュリティを提供
-
AWS 認証情報のサポート: さまざまな 認証情報プロバイダー (デフォルト、プロファイルベース、カスタム) をサポート
-
接続プーリングの互換性 - Postgres.js の組み込み接続プーリングとシームレスに連携
クイックスタートガイド
要件
-
Node.js 20 以降
-
アプリケーションが Aurora DSQL に接続できるように、適切な IAM アクセス許可を設定します。
-
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 });
設定オプション
| オプション | タイプ | 必須 | 説明 |
|---|---|---|---|
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」という名前のユーザーは、管理者認証トークンを自動的に使用します。
-
他のすべてのユーザーは通常の認証トークンを使用します。
-
トークンは接続ごとに動的に生成されます。
使用例
Postgres.js 用 Aurora DSQL コネクタを使用した JavaScript の例は、GitHub で入手できます。例を実行する手順については、例のディレクトリ
| 説明 | 例 |
|---|---|
| 複数のワーカー間でのテーブルの作成、挿入、読み取りなど、同時クエリによる接続プーリング | 接続プーリングの例 (推奨) |
| 接続プーリングなしの CRUD オペレーション (テーブルの作成、挿入、選択、削除) | 接続プーリングなしの例 |