翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Node.js 用の Amazon QLDBドライバー
台帳内のデータを操作するには、 AWS が提供するドライバーを使用して Node.js アプリケーションQLDBから Amazon に接続できます。以下のトピックでは、Node.js 用QLDBドライバーの使用を開始する方法について説明します。
ドライバーに関するリソース
Node.js ドライバーでサポートされている機能の詳細については、以下のリソースを参照してください。
前提条件
Node.js 用QLDBドライバーの使用を開始する前に、次の操作を行う必要があります。
次に、すべてのチュートリアル用のサンプルアプリケーションをダウンロードするか、Node.js プロジェクトにのみドライバーをインストールして短いコード例を実行できます。
-
既存のプロジェクト JavaScript で Node.js にQLDBドライバーと AWS SDK の をインストールするには、 に進みますインストール。
-
プロジェクトを設定し、台帳の基本的なデータトランザクションを示す短いコード例については、「クイックスタートチュートリアル」を参照してください。
-
完全なチュートリアルサンプルアプリケーションで、データと管理APIオペレーションの両方の詳細な例を実行するには、「」を参照してくださいNode.js チュートリアル。
インストール
QLDB は、次のドライバーバージョンとその Node.js 依存関係をサポートしています。
ドライバーのバージョン |
Node.js バージョン |
ステータス |
最新リリース日 |
1.x |
10.x 以降 |
本番リリース |
2020 年 6 月 5 日 |
2.x |
10.x 以降 |
本番リリース |
2021 年 5 月 6 日 |
3.x |
14.x 以降 |
本番リリース |
2023 年 11 月 10 日 |
npm (Node.js パッケージマネージャー) を使用してQLDBドライバーをインストールするには、プロジェクトのルートディレクトリから次のコマンドを入力します。
- 3.x
-
npm install amazon-qldb-driver-nodejs
- 2.x
-
npm install amazon-qldb-driver-nodejs@2.2.0
- 1.x
-
npm install amazon-qldb-driver-nodejs@1.0.0
ドライバーには次のパッケージへのピア依存関係があります。これらのパッケージをプロジェクトの依存関係としてインストールする必要もあります。
- 3.x
-
モジュール式集約QLDBクライアント (管理API)
npm install @aws-sdk/client-qldb
モジュール式集約QLDBセッションクライアント (データ API)
npm install @aws-sdk/client-qldb-session
Amazon Ion データ形式
npm install ion-js
の純粋な JavaScript 実装 BigInt
npm install jsbi
- 2.x
-
AWS SDK for JavaScript
npm install aws-sdk
Amazon Ion データ形式
npm install ion-js@4.0.0
の純粋な JavaScript 実装 BigInt
npm install jsbi@3.1.1
- 1.x
-
AWS SDK for JavaScript
npm install aws-sdk
Amazon Ion データ形式
npm install ion-js@4.0.0
の純粋な JavaScript 実装 BigInt
npm install jsbi@3.1.1
ドライバーを使用して台帳に接続する
その後、ドライバーをインポートし、それを使用して台帳に接続することができます。次の TypeScript コード例は、指定された台帳名 および のドライバーインスタンスを作成する方法を示しています AWS リージョン。
- 3.x
-
import { Agent } from 'https';
import { QLDBSessionClientConfig } from "@aws-sdk/client-qldb-session";
import { QldbDriver, RetryConfig } from 'amazon-qldb-driver-nodejs';
import { NodeHttpHandlerOptions } from "@aws-sdk/node-http-handler";
const maxConcurrentTransactions: number = 10;
const retryLimit: number = 4;
//Reuse connections with keepAlive
const lowLevelClientHttpOptions: NodeHttpHandlerOptions = {
httpAgent: new Agent({
maxSockets: maxConcurrentTransactions
})
};
const serviceConfigurationOptions: QLDBSessionClientConfig = {
region: "us-east-1"
};
//Use driver's default backoff function for this example (no second parameter provided to RetryConfig)
const retryConfig: RetryConfig = new RetryConfig(retryLimit);
const qldbDriver: QldbDriver = new QldbDriver("testLedger", serviceConfigurationOptions, lowLevelClientHttpOptions, maxConcurrentTransactions, retryConfig);
qldbDriver.getTableNames().then(function(tableNames: string[]) {
console.log(tableNames);
});
- 2.x
-
import { Agent } from 'https';
import { QldbDriver, RetryConfig } from 'amazon-qldb-driver-nodejs';
const maxConcurrentTransactions: number = 10;
const retryLimit: number = 4;
//Reuse connections with keepAlive
const agentForQldb: Agent = new Agent({
keepAlive: true,
maxSockets: maxConcurrentTransactions
});
const serviceConfigurationOptions = {
region: "us-east-1",
httpOptions: {
agent: agentForQldb
}
};
//Use driver's default backoff function for this example (no second parameter provided to RetryConfig)
const retryConfig: RetryConfig = new RetryConfig(retryLimit);
const qldbDriver: QldbDriver = new QldbDriver("testLedger", serviceConfigurationOptions, maxConcurrentTransactions, retryConfig);
qldbDriver.getTableNames().then(function(tableNames: string[]) {
console.log(tableNames);
});
- 1.x
-
import { Agent } from 'https';
import { QldbDriver } from 'amazon-qldb-driver-nodejs';
const poolLimit: number = 10;
const retryLimit: number = 4;
//Reuse connections with keepAlive
const agentForQldb: Agent = new Agent({
keepAlive: true,
maxSockets: poolLimit
});
const serviceConfigurationOptions = {
region: "us-east-1",
httpOptions: {
agent: agentForQldb
}
};
const qldbDriver: QldbDriver = new QldbDriver("testLedger", serviceConfigurationOptions, retryLimit, poolLimit);
qldbDriver.getTableNames().then(function(tableNames: string[]) {
console.log(tableNames);
});
台帳に対して基本的なデータトランザクションを実行する方法を示す短いコード例については、「クックブックリファレンス」を参照してください。
セットアップの推奨事項
Keep-alive を使用して接続を再利用する
デフォルトの Node.js HTTP/HTTPS エージェントは、新しいリクエストごとに新しいTCP接続を作成します。新しい接続を確立するコストを回避するために、 AWS SDK for JavaScript v3 はデフォルトでTCP接続を再利用します。詳細および接続の再利用を無効にする方法については、「AWS SDK for JavaScript デベロッパーガイド」の「Node.js で Keep-alive を使用して接続を再利用する」を参照してください。
Node.js 用QLDBドライバーの接続を再利用するには、デフォルト設定を使用することをお勧めします。ドライバーの初期化中に、低レベルクライアントHTTPオプションmaxSockets
を に設定したのと同じ値に設定しますmaxConcurrentTransactions
。
例えば、次の JavaScript または TypeScript コードを参照してください。
- JavaScript
-
const qldb = require('amazon-qldb-driver-nodejs');
const https = require('https');
//Replace this value as appropriate for your application
const maxConcurrentTransactions = 50
;
const agentForQldb = new https.Agent({
//Set this to the same value as `maxConcurrentTransactions`(previously called `poolLimit`)
//Do not rely on the default value of `Infinity`
"maxSockets": maxConcurrentTransactions
});
const lowLevelClientHttpOptions = {
httpAgent: agentForQldb
}
let driver = new qldb.QldbDriver("testLedger", undefined, lowLevelClientHttpOptions, maxConcurrentTransactions);
- TypeScript
-
import { Agent } from 'https';
import { NodeHttpHandlerOptions } from "@aws-sdk/node-http-handler";
import { QldbDriver } from 'amazon-qldb-driver-nodejs';
//Replace this value as appropriate for your application
const maxConcurrentTransactions: number = 50
;
const agentForQldb: Agent = new Agent({
//Set this to the same value as `maxConcurrentTransactions`(previously called `poolLimit`)
//Do not rely on the default value of `Infinity`
maxSockets: maxConcurrentTransactions
});
const lowLevelClientHttpOptions: NodeHttpHandlerOptions = {
httpAgent: agentForQldb
};
let driver = new QldbDriver("testLedger", undefined, lowLevelClientHttpOptions, maxConcurrentTransactions);
デフォルトの Node.js HTTP/HTTPS エージェントは、新しいリクエストごとに新しいTCP接続を作成します。新しい接続を確立するコストを回避するために、既存の接続の再利用をお勧めします。
Node.js 用QLDBドライバーの接続を再利用するには、次のいずれかのオプションを使用します。
-
ドライバーの初期化中に、以下の低レベルクライアントHTTPオプションを設定します。
例えば、次の JavaScript または TypeScript コードを参照してください。
- JavaScript
-
const qldb = require('amazon-qldb-driver-nodejs');
const https = require('https');
//Replace this value as appropriate for your application
const maxConcurrentTransactions = 50
;
const agentForQldb = new https.Agent({
"keepAlive": true,
//Set this to the same value as `maxConcurrentTransactions`(previously called `poolLimit`)
//Do not rely on the default value of `Infinity`
"maxSockets": maxConcurrentTransactions
});
const serviceConfiguration = { "httpOptions": {
"agent": agentForQldb
}};
let driver = new qldb.QldbDriver("testLedger", serviceConfiguration, maxConcurrentTransactions);
- TypeScript
-
import { Agent } from 'https';
import { ClientConfiguration } from 'aws-sdk/clients/acm';
import { QldbDriver } from 'amazon-qldb-driver-nodejs';
//Replace this value as appropriate for your application
const maxConcurrentTransactions: number = 50
;
const agentForQldb: Agent = new Agent({
keepAlive: true,
//Set this to the same value as `maxConcurrentTransactions`(previously called `poolLimit`)
//Do not rely on the default value of `Infinity`
maxSockets: maxConcurrentTransactions
});
const serviceConfiguration: ClientConfiguration = { httpOptions: {
agent: agentForQldb
}};
let driver = new QldbDriver("testLedger", serviceConfiguration, maxConcurrentTransactions);
-
または、AWS_NODEJS_CONNECTION_REUSE_ENABLED
環境変数を 1
に設定することもできます。詳細については、「AWS SDK for JavaScript デベロッパーガイド」の「Node.js で Keep-alive を使用して接続を再利用する」を参照してください。
この環境変数を設定すると、 AWS SDK for JavaScriptを使用するすべての AWS のサービス に影響が生じます。