

 Das [AWS SDK für JavaScript V3-API-Referenzhandbuch](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) beschreibt detailliert alle API-Operationen für die AWS SDK für JavaScript Version 3 (V3). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Überlegungen zu Node.js
<a name="node-js-considerations"></a>

Der Code Node.js ist es zwar JavaScript, aber die Verwendung von AWS SDK für JavaScript in Node.js kann sich von der Verwendung des SDK in Browserskripts unterscheiden. Einige API-Methoden funktionieren in Node.js, jedoch nicht in Browser-Skripts und umgekehrt. Und die erfolgreiche Verwendung einiger Module APIs hängt davon ab, ob Sie mit den gängigen Node.js -Codierungsmustern vertraut sind, z. B. mit dem Import und der Verwendung anderer Node.js -Module wie dem `File System (fs)` Modul.

**Anmerkung**  
AWS empfiehlt die Verwendung der Active LTS-Version von Node.js für die Entwicklung.

## Verwenden Sie die integrierten Node.js -Module
<a name="node-common-modules"></a>

Node.js bietet eine Reihe von integrierten Modulen, die Sie verwenden können ohne sie installieren zu müssen. Um diese Module verwenden zu können, müssen Sie ein Objekt mit der `require`-Methode erstellen und den Modulnamen angeben. Wenn beispielsweise das integrierte HTTP-Modul enthalten sein soll, geben Sie Folgendes ein.

```
import http from 'http';
```

Rufen Sie Methoden des Moduls ab, als würde es sich um Methoden dieses Objekts handeln. Das folgende Beispiel zeigt Code, der eine HTML-Datei liest.

```
// include File System module
import fs from "fs"; 
// Invoke readFile method 
fs.readFile('index.html', function(err, data) {
  if (err) {
    throw err;
  } else {
    // Successful file read
  }
});
```

Eine vollständige Liste aller integrierten Module, die Node.js bereitstellt, finden Sie in der [Node.js -Dokumentation](https://nodejs.org/api/modules.html) auf der Website Node.js.

## Verwenden Sie npm-Pakete
<a name="node-npm-packages"></a>

Zusätzlich zu den integrierten Modulen können Sie auch Code von Drittanbietern aus dem `npm` Paketmanager Node.js einbinden und integrieren. Hierbei handelt es sich um ein Repository mit Open-Source-Node.js-Paketen sowie um eine Befehlszeilen-Schnittstelle für die Installation dieser Pakete. Weitere Informationen zu `npm` und eine Liste der derzeit verfügbaren Pakete finden Sie unter [ https://www.npmjs.com](https://www.npmjs.com). Weitere Informationen zu den zusätzlichen Paketen von Node.js, die Sie verwenden können, finden Sie [hier auf GitHub](https://github.com/sindresorhus/awesome-nodejs).

# MaxSockets in Node.js konfigurieren
<a name="node-configuring-maxsockets"></a>

In Node.js können Sie die maximale Anzahl der Verbindungen pro Ursprungsserver festlegen. Wenn ` maxSockets` festgelegt wurde, setzt der Low-Level-HTTP-Client die Anforderungen auf eine Warteliste und ordnet sie Sockets zu, sobald diese verfügbar werden.

Mit dieser Option können Sie eine Obergrenze für die Anzahl der gleichzeitigen Anforderungen an einen bestimmten Ursprungsserver angeben. Indem Sie diesen Wert senken, kann die Anzahl der maximalen Ablehnungen oder Timeout-Fehler reduziert werden. Es kann jedoch auch die Speichernutzung erhöhen, da Anforderungen so lange in eine Warteschlange gesetzt werden, bis ein Socket verfügbar wird.

Das folgende Beispiel zeigt, wie die Einstellungen `maxSockets` für einen DynamoDB-Client vorgenommen werden.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import https from "https";    
let agent = new https.Agent({
  maxSockets: 25
});

let dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    requestTimeout: 3_000,
    httpsAgent: agent
  });
});
```

Das SDK für JavaScript verwendet den `maxSockets` Wert 50, wenn Sie keinen Wert oder kein Objekt `Agent` angeben. Wenn Sie ein `Agent` Objekt angeben, wird sein `maxSockets` Wert verwendet. Weitere Informationen zur Einstellung `maxSockets` in Node.js finden Sie in der [Dokumentation zu Node.js](https://nodejs.org/dist/latest/docs/api/http.html#http_agent_maxsockets).

Ab Version 3.521.0 von können Sie AWS SDK für JavaScript die folgende [Kurzsyntax](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#new-in-v35210) zur Konfiguration verwenden. `requestHandler`

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({
  requestHandler: {
    requestTimeout: 3_000,
    httpsAgent: { maxSockets: 25 },
  },
});
```

# Verbindungen mit Keep-Alive in Node.js wiederverwenden
<a name="node-reusing-connections"></a>

Der HTTP/HTTPS Standardagent Node.js erstellt für jede neue Anfrage eine neue TCP-Verbindung. Um die Kosten für den Aufbau einer neuen Verbindung zu vermeiden, werden TCP-Verbindungen *standardmäßig AWS SDK für JavaScript * wiederverwendet.

Bei kurzlebigen Vorgängen, wie Amazon DynamoDB DynamoDB-Abfragen, kann der Latenzaufwand beim Einrichten einer TCP-Verbindung größer sein als der Vorgang selbst. Da die [DynamoDB-Verschlüsselung im Ruhezustand](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) integriert ist [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html), kann es außerdem zu Latenzen kommen, weil die Datenbank für jeden Vorgang neue AWS KMS Cacheeinträge einrichten muss. 

Wenn Sie TCP-Verbindungen nicht wiederverwenden möchten, können Sie die Wiederverwendung dieser Verbindungen `keepAlive` live with für jeden einzelnen Service deaktivieren, wie im folgenden Beispiel für einen DynamoDB-Client gezeigt.

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

Wenn `keepAlive` aktiviert, können Sie auch die Anfangsverzögerung für TCP-Keep-Alive-Pakete mit festlegen`keepAliveMsecs`, die standardmäßig 1000 ms beträgt. Weitere Informationen finden Sie in der [Node.js-Dokumentation](https://nodejs.org/api/http.html#new-agentoptions) .

# Konfigurieren Sie Proxys für Node.js
<a name="node-configuring-proxies"></a>

Wenn Sie keine direkte Verbindung zum Internet herstellen können, JavaScript unterstützt das SDK für die Verwendung von HTTP- oder HTTPS-Proxys über einen HTTP-Agenten eines Drittanbieters.

[Um einen HTTP-Agenten eines Drittanbieters zu finden, suchen Sie bei npm nach „HTTP-Proxy“.](https://www.npmjs.com/)

Um einen HTTP-Agent-Proxy eines Drittanbieters zu installieren, geben Sie in der Befehlszeile Folgendes ein, wobei der Name des `npm` Pakets angegeben *PROXY* ist. 

```
npm install PROXY --save
```

Um einen Proxy in Ihrer Anwendung zu verwenden, verwenden Sie die ` httpsAgent` Eigenschaft `httpAgent` and, wie im folgenden Beispiel für einen DynamoDB-Client gezeigt. 

```
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { HttpsProxyAgent } from "hpagent";
const agent = new HttpsProxyAgent({ proxy: "http://internal.proxy.com" });
const dynamodbClient = new DynamoDBClient({
    requestHandler: new NodeHttpHandler({
        httpAgent: agent,
        httpsAgent: agent
    }),
});
```

**Anmerkung**  
`httpAgent`ist nicht dasselbe wie`httpsAgent`, und da die meisten Aufrufe vom Client an erfolgen`https`, sollten beide gesetzt werden.

# Registrieren Sie Zertifikatspakete in Node.js
<a name="node-registering-certs"></a>

Die Standard-Vertrauensspeicher für Node.js enthalten die Zertifikate, die für den Zugriff auf AWS Dienste erforderlich sind. In einigen Fällen könnte es vorteilhaft sein, nur eine bestimmte Gruppe von Zertifikaten einzuschließen.

In diesem Beispiel wird ein bestimmtes Zertifikat auf der Festplatte verwendet, mit dem ein ` https.Agent` erstellt wird, der alle Verbindungen ablehnt, die nicht über das vorgesehene Zertifikat verfügen. Das neu erstellte Objekt `https.Agent` wird dann vom DynamoDB-Client verwendet.

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { Agent } from "https";
import { readFileSync } from "fs";
const certs = [readFileSync("/path/to/cert.pem")];
const agent = new Agent({
  rejectUnauthorized: true,
  ca: certs
});
const dynamodbClient = new DynamoDBClient({
  requestHandler: new NodeHttpHandler({
    httpAgent: agent,
    httpsAgent: agent
  })
});
```