

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# Node.js で Keep-alive を使用して接続を再利用する
<a name="node-reusing-connections"></a>

デフォルトでは、デフォルトの Node.js HTTP/HTTPS エージェントは新しいリクエストがあるたびに新しい TCP 接続を作成します。新しい接続を確立するコストを回避するため、既存の接続を再利用できます。

DynamoDB クエリなどの短期間のオペレーションでは、TCP 接続を設定する際のレイテンシーのオーバーヘッドが、オペレーション自体よりも大きくなる可能性があります。さらに、DynamoDB [保管時の暗号化](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html)は [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) と統合されているため、オペレーションごとに新しい AWS KMS キャッシュエントリを再確立する必要があるデータベースからレイテンシーが発生する可能性があります。

TCP 接続を再利用するように SDK for JavaScript を設定する最も簡単な方法は、` AWS_NODEJS_CONNECTION_REUSE_ENABLED` 環境変数を `1` に設定することです。この機能は [2.463.0](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#24630) リリースで追加されました。

または、次の例に示すように、HTTP または HTTPS エージェントの `keepAlive` プロパティを `true` に設定できます。

```
const AWS = require('aws-sdk');
// http or https
const http = require('http');
const agent = new http.Agent({
  keepAlive: true, 
// Infinity is read as 50 sockets
  maxSockets: Infinity
});

AWS.config.update({
  httpOptions: {
    agent
  }
});
```

次の例は、DynamoDB クライアントだけに `keepAlive` を設定する方法を示しています。

```
const AWS = require('aws-sdk')
// http or https
const https = require('https');
const agent = new https.Agent({
  keepAlive: true
});

const dynamodb = new AWS.DynamoDB({
  httpOptions: {
    agent
  }
});
```

`keepAlive` が有効な場合は、`keepAliveMsecs` で TCP Keep-alive パケットの初期遅延を設定することもできます。デフォルトは 1000ms です。詳細については、[Node.js のドキュメント](https://nodejs.org/api/http.html)を参照してください。