Node.js 用 Amazon QLDB ドライバー - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Node.js 用 Amazon QLDB ドライバー

台帳内のデータを操作するには、AWS が提供するドライバーを使用して Node.js アプリケーションから Amazon QLDB に接続します。次のトピックでは、Node.js 用 QLDB ドライバーの使用を開始する方法について説明します。

ドライバーに関するリソース

Node.js ドライバーでサポートされている機能の詳細については、以下のリソースを参照してください。

前提条件

Node.js 用 QLDB ドライバーの使用を開始する前に、次の操作を行う必要があります。

  1. Amazon QLDB へのアクセス」にある AWS の設定手順に従います。これには以下が含まれます。

    1. AWS にサインアップする。

    2. QLDB の適切なアクセス許可を持つユーザーを作成します。

    3. 開発に必要なプログラムへのアクセスを提供します。

  2. Node.js ダウンロードサイトから Node.js バージョン 14.x 以降をインストールします。(以前のバージョンのドライバーは Node.js バージョン 10.x 以降をサポートしています)

  3. AWS SDK for JavaScript in Node.js の開発環境を設定します。

    1. AWS 認証情報をセットアップします。共有認証情報ファイルを作成することをお勧めします。

      手順については、「AWS SDK for JavaScript デベロッパーガイド」の「共有認証情報ファイルから Node.js に認証情報をロードする」を参照してください。

    2. デフォルトの AWS リージョン を設定します。この方法については、「AWS リージョン の設定」を参照してください。

      利用可能なリージョンの完全なリストについては、「AWS 全般のリファレンス」の「Amazon QLDB エンドポイントとクォータ」を参照してください。

次に、すべてのチュートリアル用のサンプルアプリケーションをダウンロードするか、Node.js プロジェクトにのみドライバーをインストールして短いコード例を実行できます。

  • 既存のプロジェクトに QLDB ドライバーと AWS SDK for JavaScript in Node.js をインストールするには、「インストール」に進みます。

  • プロジェクトを設定し、台帳の基本的なデータトランザクションを示す短いコード例については、「クイックスタートチュートリアル」を参照してください。

  • チュートリアルのサンプルアプリケーション全体のデータプレーンと管理 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 オプション maxSocketsmaxConcurrentTransactions に設定した値と同じ値に設定します。

例えば、次の 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 オプションを設定します。

    • keepAlivetrue

    • maxSocketsmaxConcurrentTransactions に設定したのと同じ値

    例えば、次の 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 のサービス に影響が生じます。