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. 請遵循中的AWS設定指示訪問 Amazon QLDB。這包含下列項目:

    1. 註冊 AWS。

    2. 建立具有適當 QLDB 權限的使用者。

    3. 授予程序化訪問以進行開發。

  2. Node.js 下載網站安裝 Node.js 版本 14.x 或更新版本。(先前版本的驅動程式支援 Node.js 10.x 版或更新版本。)

  3. JavaScript 在 Node.js 中為開發AWS套件設定您的開發環境:

    1. 設定您的AWS認證。建議您建立共用認證檔案。

      如需指示,請參閱AWS SDK for JavaScript開發人員指南中的從共用認證檔案載入 Node.js 中的認證。

    2. 設定您的預設值AWS 區域。若要瞭解如何操作,請參閱設定 AWS 區域.

      如需可用區域的完整清單,請參閱中的 Amazon QLDB 端點和配額AWS 一般參考

接下來,您可以下載完整的教學課程範例應用程式,或者您可以只在 Node.js 專案中安裝驅動程式並執行簡短的程式碼範例。

  • 若要在現有專案中安裝 Node.js JavaScript 中的 QLDB 驅動程式和 AWS SDK,請繼續執行。安裝

  • 若要設定專案並執行展示分類帳基本資料交易的簡短程式碼範例,請參閱快速入門教學

  • 若要在完整的教學課程範例應用程式中執行資料和管理 API 作業的更深入範例,請參閱Node.js 教學課程.

安裝

QLDB 支援下列驅動程式版本及其 Node.js 相依性。

驅動程式版本 Node.js 版本 Status 最新發布日期
1. 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 離子數據格式

npm install ion-js

純粹的 JavaScript 實施 BigInt

npm install jsbi
2.x

AWS SDK for JavaScript

npm install aws-sdk

Amazon 離子數據格式

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 離子數據格式

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); });

如需如何在分類帳上執行基本資料交易的簡短程式碼範例,請參閱食譜參考

設定建議

以保持活動狀態重複使用連線

預設 Node.js HTTP/HTTPS 代理程式會為每個新的請求建立新的 TCP 連線。為了避免建立新連線的成本,AWS SDK for JavaScriptv3 預設會重複使用 TCP 連線。如需詳細資訊並瞭解如何停用重複使用連線,請參閱開發人員指南中的 Node.js 中以保持活動狀態重複使用連線。AWS SDK for JavaScript

我們建議您使用預設設定,重複使用 Node.js 的 QLDB 驅動程式中的連線。在驅動程式初始化期間,請maxSockets將低階用戶端 HTTP 選項設定為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 選項:

    • keepAlivetrue

    • 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({ "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 中以保持活動狀態重複使用連線

    注意

    如果您設定此環境變數,它會影響所有使用AWS SDK for JavaScript. AWS 服務