本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Node.js 的 Amazon QLDB 驅動程序
若要使用分類帳中的資料,您可以使用 AWS 提供的驅動程式QLDB從 Node.js 應用程式連線到 Amazon。下列主題說明如何開始使用 Node.js 的QLDB驅動程式。
司機資源
如需 Node.js 驅動程式支援之功能的詳細資訊,請參閱下列資源:
必要條件
在您開始使用 Node.js 的QLDB驅動程式之前,您必須執行下列動作:
接下來,您可以下載完整的教學課程範例應用程式,或者您可以只在 Node.js 專案中安裝驅動程式並執行簡短的程式碼範例。
-
若要在現有專案中安裝 Node.js JavaScript 中 AWS SDK的QLDB驅動程式和用於,請繼續執行安裝。
-
若要設定專案並執行展示分類帳基本資料交易的簡短程式碼範例,請參閱快速入門教學。
-
若要在完整的教學課程範例應用程式中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.jsHTTP/HTTPS代理程式會為每個新要求建立新TCP連線。為了避免建立新連線的成本, AWS SDK for JavaScript v3 預設會重複使用TCP連線。如需詳細資訊並瞭解如何停用重複使用連線,請參閱開發人員指南中的 Node.js 中以保持活動狀態重複使用連線。AWS SDK for JavaScript
我們建議您使用預設設定來重複使用 Node.js QLDB 驅動程式中的連線。在驅動程式初始化期間,請maxSockets
maxConcurrentTransactions
將低階用戶端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({
//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.jsHTTP/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 中以保持活動狀態重複使用連線。
如果您設定此環境變數,它會影響所有使用 AWS SDK for JavaScript. AWS 服務