AWS SDK for JavaScript V3 API リファレンスガイドでは、AWS SDK for JavaScript バージョン3 (V3) のすべての API オペレーションについて詳しく説明します。
Node.js で Keep-alive を使用して接続を再利用する
デフォルトの Node.js HTTP/HTTPS エージェントは新しいリクエストがあるたびに新しい TCP 接続を作成します。新しい接続を確立するコストを回避するため、AWS SDK for JavaScript はデフォルトで TCP 接続を再利用します。
Amazon DynamoDB クエリなどの短期間のオペレーションでは、TCP 接続を設定する際のレイテンシーのオーバーヘッドが、オペレーション自体よりも大きくなる可能性があります。さらに、DynamoDB encryption at rest(保管時の暗号化)はAWS KMSと統合されているため、オペレーションごとに新しいAWS KMSキャッシュエントリを再確立する必要があるデータベースからレイテンシーが発生する可能性があります。
TCP 接続を再利用しない場合は、DynamoDB クライアントの次の例に示すように、サービスクライアントごとに keepAlive でこれらの接続の再利用を無効にすることもできます。
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { NodeHttpHandler } from "@smithy/node-http-handler"; import { Agent } from "https"; const dynamodbClient = new DynamoDBClient({ requestHandler: new NodeHttpHandler({ httpsAgent: new Agent({ keepAlive: false }) }) });
keepAliveが有効になっている場合、TCPキープアライブパケットの初期遅延をkeepAliveMsecsに設定することもできます。これは、デフォルトでは1000ミリ秒(ms)です。詳細については、Node.js のドキュメント