

 Le [guide de référence de l'API AWS SDK pour JavaScript V3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) décrit en détail toutes les opérations de l'API pour la AWS SDK pour JavaScript version 3 (V3). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Considérations relatives à Node.js
<a name="node-js-considerations"></a>

Bien que le code Node.js le soit JavaScript, l'utilisation du fichier AWS SDK pour JavaScript dans Node.js peut être différente de l'utilisation du SDK dans les scripts de navigateur. Certaines méthodes d'API fonctionnent dans Node.js, mais pas dans les scripts du navigateur et inversement. Et l'utilisation réussie de certains d'entre eux APIs dépend de votre connaissance des modèles de codage courants de Node.js, tels que l'importation et l'utilisation d'autres modules Node.js tels que le `File System (fs)` module.

**Note**  
AWS recommande d'utiliser la version Active LTS de Node.js pour le développement.

## Utiliser les modules Node.js intégrés
<a name="node-common-modules"></a>

Node.js fournit un ensemble de modules intégrés que vous pouvez utiliser sans les installer. Pour utiliser ces modules, créez un objet en appliquant la méthode `require` afin de nommer le module. Par exemple, pour inclure le module HTTP intégré, utilisez le code ci-dessous.

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

Invoquez les méthodes du module comme si elles étaient des méthodes de cet objet. Par exemple, voici un code qui lit un fichier HTML.

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

Pour une liste complète de tous les modules intégrés fournis par Node.js, consultez la [documentation Node.js](https://nodejs.org/api/modules.html) sur le site Web Node.js.

## Utiliser les packages npm
<a name="node-npm-packages"></a>

Outre les modules intégrés, vous pouvez également inclure et intégrer du code tiers à partir du `npm` gestionnaire de packages Node.js. Il s'agit d'un référentiel de packages Node.js open source et d'une interface de ligne de commande permettant d'installer ces packages. Pour plus d'informations `npm` et pour obtenir la liste des packages actuellement disponibles, consultez [ https://www.npmjs.com](https://www.npmjs.com). Vous pouvez également en savoir plus sur les packages Node.js supplémentaires que vous pouvez utiliser [ici GitHub](https://github.com/sindresorhus/awesome-nodejs).

# Configurer les MaxSockets dans Node.js
<a name="node-configuring-maxsockets"></a>

Dans Node.js, vous pouvez définir le nombre maximal de connexions par origine. Si ` maxSockets` est défini, le client HTTP de bas niveau place les demandes en file d'attente et les affecte aux sockets au fur et à mesure qu'ils deviennent disponibles.

Vous pouvez ainsi définir un nombre maximal supérieur de demandes simultanées pour une origine donnée. Le fait de réduire cette valeur peut réduire le nombre d'erreurs de limitation ou d'expiration reçues. Toutefois, il peut aussi en résulter une utilisation accrue de la mémoire, car les demandes sont placées en file d'attente jusqu'à ce qu'un socket devienne disponible.

L'exemple suivant montre comment effectuer une configuration `maxSockets` pour un client DynamoDB.

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

Le SDK pour JavaScript utilise une `maxSockets` valeur de 50 si vous ne fournissez pas de valeur ou d'`Agent`objet. Si vous fournissez un `Agent` objet, sa `maxSockets` valeur sera utilisée. Pour plus d'informations sur `maxSockets` le paramétrage dans Node.js, consultez la [documentation Node.js](https://nodejs.org/dist/latest/docs/api/http.html#http_agent_maxsockets).

À partir de la version 3.521.0 du AWS SDK pour JavaScript, vous pouvez utiliser la syntaxe [abrégée](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#new-in-v35210) suivante pour configurer. `requestHandler`

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

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

# Réutiliser les connexions avec keep-alive dans Node.js
<a name="node-reusing-connections"></a>

L' HTTP/HTTPS agent Node.js par défaut crée une nouvelle connexion TCP pour chaque nouvelle demande. Pour éviter les coûts liés à l'établissement d'une nouvelle connexion, les connexions AWS SDK pour JavaScript TCP sont réutilisées *par défaut*.

Pour les opérations de courte durée, telles que les requêtes Amazon DynamoDB, le temps de latence associé à la configuration d'une connexion TCP peut être supérieur à celui de l'opération elle-même. En outre, étant donné que le [chiffrement DynamoDB au](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) repos est intégré, vous pouvez [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html)rencontrer des latences lorsque la base de données doit rétablir de AWS KMS nouvelles entrées de cache pour chaque opération. 

Si vous ne souhaitez pas réutiliser les connexions TCP, vous pouvez désactiver la réutilisation active de ces connexions, client par service, comme indiqué dans l'exemple suivant pour un client 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 })
    })
});
```

Si cette option `keepAlive` est activée, vous pouvez également définir le délai initial pour les paquets TCP Keep-Alive`keepAliveMsecs`, qui est par défaut de 1 000 ms. Consultez la [documentation Node.js](https://nodejs.org/api/http.html#new-agentoptions) pour plus de détails.

# Configurer les proxys pour Node.js
<a name="node-configuring-proxies"></a>

Si vous ne pouvez pas vous connecter directement à Internet, le SDK JavaScript prend en charge l'utilisation de proxys HTTP ou HTTPS via un agent HTTP tiers.

Pour trouver un agent HTTP tiers, recherchez « proxy HTTP » sur [npm](https://www.npmjs.com/).

Pour installer un agent proxy HTTP tiers, entrez le code suivant à l'invite de commande, où *PROXY* figure le nom du `npm` package. 

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

Pour utiliser un proxy dans votre application, utilisez la ` httpsAgent` propriété `httpAgent` and, comme illustré dans l'exemple suivant pour un client DynamoDB. 

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

**Note**  
`httpAgent`n'est pas la même chose que`httpsAgent`, et comme la plupart des appels du client seront adressés à`https`, les deux doivent être définis.

# Enregistrez les ensembles de certificats dans Node.js
<a name="node-registering-certs"></a>

Les magasins de confiance par défaut pour Node.js incluent les certificats nécessaires pour accéder aux AWS services. Dans certains cas, il peut être préférable d'inclure uniquement un ensemble de certificats donné.

Dans cet exemple, un certificat spécifique sur le disque est utilisé pour créer un ` https.Agent` qui rejette les connexions, à moins que le certificat désigné ne soit fourni. La nouvelle création `https.Agent` est ensuite utilisée par le client DynamoDB.

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