

 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.

# Migrez de la version 2.x vers la version 3.x du AWS SDK pour JavaScript
<a name="migrating"></a>

La AWS SDK pour JavaScript version 3 est une réécriture majeure de la version 2. La section décrit les différences entre les deux versions et explique comment migrer de la version 2 à la version 3 du SDK pour JavaScript.

## Migrez votre code vers le SDK pour JavaScript v3 à l'aide de codemod
<a name="migrating-to-v3"></a>

AWS SDK pour JavaScript la version 3 (v3) est dotée d'interfaces modernisées pour les configurations client et les utilitaires, notamment les informations d'identification, le téléchargement partitionné sur Amazon S3, le client de documents DynamoDB, les serveurs, etc. Vous pouvez trouver ce qui a changé dans la v2 et les équivalents v3 pour chaque modification dans le [guide de migration sur le AWS SDK pour JavaScript GitHub dépôt](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md). 

Pour tirer pleinement parti de la AWS SDK pour JavaScript v3, nous vous recommandons d'utiliser les scripts codemod décrits ci-dessous.

### Utiliser codemod pour migrer le code v2 existant
<a name="using-codemod"></a>

La collection de scripts Codemod [aws-sdk-js-codemod](https://www.npmjs.com/package/aws-sdk-js-codemod)permet de migrer votre application existante AWS SDK pour JavaScript (v2) pour utiliser la v3. APIs Vous pouvez exécuter la transformation comme suit.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 PATH...
```

Par exemple, supposons que vous avez le code suivant, qui crée un client Amazon DynamoDB à partir de la version 2 et appelle une opération. `listTables`

```
// example.ts
import AWS from "aws-sdk";

const region = "us-west-2";
const client = new AWS.DynamoDB({ region });
await client.listTables({}).promise()
  .then(console.log)
  .catch(console.error);
```

Vous pouvez exécuter notre `v2-to-v3` transformation `example.ts` comme suit.

```
$ npx aws-sdk-js-codemod -t v2-to-v3 example.ts
```

La transformation convertira l'importation DynamoDB en version 3, créera un client v3 et appellera l'opération comme suit. `listTables`

```
// example.ts
import { DynamoDB } from "@aws-sdk/client-dynamodb";

const region = "us-west-2";
const client = new DynamoDB({ region });
await client.listTables({})
  .then(console.log)
  .catch(console.error);
```

Nous avons mis en œuvre des transformations pour les cas d'utilisation courants. Si votre code ne se transforme pas correctement, veuillez créer un [rapport de bogue](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yml&title=%5BBug%3F%5D%3A+) ou une [demande de fonctionnalité](https://github.com/awslabs/aws-sdk-js-codemod/issues/new?assignees=&labels=enhancement&template=feature_request.yml&title=%5BFeature%5D%3A+) avec un exemple de code d'entrée et observed/expected de code de sortie. Si votre cas d'utilisation spécifique est déjà signalé dans [un numéro existant](https://github.com/awslabs/aws-sdk-js-codemod/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc), montrez votre soutien par un vote positif.

## Nouveautés de la version 3
<a name="welcome_whats_new_v3"></a>

La version 3 du SDK pour JavaScript (v3) contient les nouvelles fonctionnalités suivantes.

Packages modularisés  
Les utilisateurs peuvent désormais utiliser un package distinct pour chaque service.

Nouvelle pile d'intergiciels  
Les utilisateurs peuvent désormais utiliser une pile intergicielle pour contrôler le cycle de vie d'un appel d'opération.

De plus, le SDK est écrit TypeScript, ce qui présente de nombreux avantages, tels que le typage statique.

**Important**  
Les exemples de code pour la v3 présentés dans ce guide sont écrits dans ECMAScript 6 (ES6). ES6apporte une nouvelle syntaxe et de nouvelles fonctionnalités pour rendre votre code plus moderne et lisible, et faire plus encore. ES6 nécessite que vous utilisiez Node.js version 13.x ou supérieure. Pour télécharger et installer la dernière version de Node.js, consultez la section [Téléchargements de Node.js](https://nodejs.org/en/download/). Pour de plus amples informations, veuillez consulter [JavaScript ES6Syntaxe /CommonJS](sdk-example-javascript-syntax.md).

## Packages modularisés
<a name="welcome_whats_new_v3_modularized_packages"></a>

La version 2 du SDK pour JavaScript (v2) exigeait que vous utilisiez l'intégralité du AWS SDK, comme suit.

```
var AWS = require("aws-sdk");
```

Le chargement de l'intégralité du SDK n'est pas un problème si votre application utilise de nombreux AWS services. Toutefois, si vous n'avez besoin que de quelques AWS services, cela signifie augmenter la taille de votre application avec du code dont vous n'avez pas besoin ou que vous n'utilisez pas.

Dans la version 3, vous pouvez charger et utiliser uniquement les AWS services individuels dont vous avez besoin. Cela est illustré dans l'exemple suivant, qui vous donne accès à Amazon DynamoDB (DynamoDB).

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

Vous pouvez non seulement charger et utiliser AWS des services individuels, mais vous pouvez également charger et utiliser uniquement les commandes de service dont vous avez besoin. Cela est illustré dans les exemples suivants, qui vous permettent d'accéder au client DynamoDB et à la commande. `ListTablesCommand`

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

**Important**  
Vous ne devez pas importer de sous-modules dans des modules. Par exemple, le code suivant peut générer des erreurs.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity/CognitoIdentity";
```
Le code suivant est correct.  

```
import { CognitoIdentity } from "@aws-sdk/client-cognito-identity";
```

### Comparaison de la taille du code
<a name="welcome_whats_new_v3_modularized_packages_code_size"></a>

Dans la version 2 (v2), un exemple de code simple répertoriant toutes vos tables Amazon DynamoDB de `us-west-2` la région peut ressembler à ce qui suit.

```
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Create DynamoDB service object
var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });

// Call DynamoDB to retrieve the list of tables
ddb.listTables({ Limit: 10 }, function (err, data) {
  if (err) {
    console.log("Error", err.code);
  } else {
    console.log("Tables names are ", data.TableNames);
  }
});
```

La v3 ressemble à ce qui suit.

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

const dbclient = new DynamoDBClient({ region: "us-west-2" });

try {
  const results = await dbclient.send(new ListTablesCommand);
  
  for (const item of results.TableNames) {
    console.log(item);
  }
} catch (err) {
  console.error(err)
}
```

Le `aws-sdk` package ajoute environ 40 Mo à votre application. Le remplacement `var AWS = require("aws-sdk")` par `import {DynamoDB} from "@aws-sdk/client-dynamodb"` réduit cette surcharge à environ 3 Mo. Le fait de limiter l'importation au client `ListTablesCommand` et à la commande DynamoDB permet de réduire la surcharge à moins de 100 Ko.

```
// Load the DynamoDB client and ListTablesCommand command for Node.js
import {
  DynamoDBClient,
  ListTablesCommand
} from "@aws-sdk/client-dynamodb";
const dbclient = new DynamoDBClient({});
```

### Appeler des commandes dans la version 3
<a name="welcome_whats_new_v3_function_examples"></a>

Vous pouvez effectuer des opérations dans la version 3 à l'aide des commandes v2 ou v3. Pour utiliser les commandes v3, vous importez les commandes et les clients du package AWS Services requis, puis exécutez la commande en utilisant la `.send` méthode utilisant le async/await modèle.

Pour utiliser les commandes v2, vous importez les packages de AWS services requis et exécutez la commande v2 directement dans le package en utilisant un rappel ou un async/await modèle.

#### Utilisation des commandes v3
<a name="using_v3_commands"></a>

La version 3 fournit un ensemble de commandes pour chaque package de AWS service afin de vous permettre d'effectuer des opérations pour ce AWS service. Après avoir installé un AWS service, vous pouvez parcourir les commandes disponibles dans le `node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.` 

Vous devez importer les commandes que vous souhaitez utiliser. Par exemple, le code suivant charge le service DynamoDB et la commande. `CreateTableCommand` 

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
```

Pour appeler ces commandes selon le async/await modèle recommandé, utilisez la syntaxe suivante. 

```
CLIENT.send(new XXXCommand);
```

Par exemple, l'exemple suivant crée une table DynamoDB en utilisant le modèle recommandé. async/await 

```
import { DynamoDB, CreateTableCommand } from "@aws-sdk/client-dynamodb";
const dynamodb = new DynamoDB({ region: "us-west-2" });
const tableParams = {
  TableName: TABLE_NAME
};

try {
  const data = await dynamodb.send(new CreateTableCommand(tableParams));
  console.log("Success", data);
} catch (err) {
  console.log("Error", err);
};
```

#### Utilisation des commandes v2
<a name="using_v2_commands"></a>

Pour utiliser les commandes v2 dans le SDK pour JavaScript, vous devez importer les packages de AWS service complets, comme illustré dans le code suivant.

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
```

 Pour appeler les commandes v2 selon le async/await modèle recommandé, utilisez la syntaxe suivante. 

```
client.command(parameters);
```

L'exemple suivant utilise la `createTable` commande v2 pour créer une table DynamoDB selon le modèle recommandé. async/await 

```
const { DynamoDB } = require('@aws-sdk/client-dynamodb');
const dynamoDB = new DynamoDB({ region: 'us-west-2' });
var tableParams = {
  TableName: TABLE_NAME
};
async function run() => {
  try {
    const data = await dynamoDB.createTable(tableParams);
    console.log("Success", data);
  }
  catch (err) {
    console.log("Error", err);
  }
};
run();
```

L'exemple suivant utilise la `createBucket` commande v2 pour créer un compartiment Amazon S3 à l'aide du modèle de rappel.

```
const { S3 } = require('@aws-sdk/client-s3');
const s3 = new S3({ region: 'us-west-2' });
var bucketParams = {
  Bucket : BUCKET_NAME
};
function run() {
  s3.createBucket(bucketParams, function (err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.Location);
    }
  })
};
run();
```

## Nouvelle pile d'intergiciels
<a name="welcome_whats_new_v3_middleware_stack"></a>

La version v2 du SDK vous a permis de modifier une demande au cours des différentes étapes de son cycle de vie en y attachant des écouteurs d'événements. Cette approche peut rendre difficile le débogage de ce qui s'est mal passé au cours du cycle de vie d'une demande.

Dans la version 3, vous pouvez utiliser une nouvelle pile intergicielle pour contrôler le cycle de vie d'un appel d'opération. Cette approche présente quelques avantages. Chaque étape de middleware de la pile appelle l'étape de middleware suivante après avoir apporté des modifications à l'objet de la requête. Cela facilite également le débogage des problèmes dans la pile, car vous pouvez voir exactement quelles étapes du middleware ont été appelées à l'origine de l'erreur.

L'exemple suivant ajoute un en-tête personnalisé à un client Amazon DynamoDB (que nous avons créé et présenté précédemment) à l'aide d'un intergiciel. Le premier argument est une fonction qui accepte`next`, qui est la prochaine étape du middleware à appeler dans la pile`context`, et qui est un objet contenant des informations sur l'opération appelée. La fonction renvoie une fonction qui accepte`args`, c'est-à-dire un objet contenant les paramètres transmis à l'opération et à la demande. Il renvoie le résultat de l'appel du prochain intergiciel avec. `args`

```
dbclient.middlewareStack.add(
  (next, context) => args => {
    args.request.headers["Custom-Header"] = "value";
    return next(args);
  },
  {
    name: "my-middleware",
    override: true,
    step: "build"
  }
);

dbclient.send(new PutObjectCommand(params));
```

# Quelle est la différence entre la AWS SDK pour JavaScript v2 et la v3
<a name="migrate-whats-different"></a>

 Cette section décrit les changements notables entre la AWS SDK pour JavaScript v2 et la v3. La v3 étant une réécriture modulaire de la v2, certains concepts de base sont différents entre la v2 et la v3. Vous pouvez prendre connaissance de ces changements dans nos articles de [blog](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-sdk-for-javascript-in-node-js/). Les articles de blog suivants vous permettront de vous tenir au courant : 
+  [Packages modulaires en AWS SDK pour JavaScript](https://aws.amazon.com/blogs/developer/modular-packages-in-aws-sdk-for-javascript/) 
+  [Présentation de Middleware Stack en mode modulaire AWS SDK pour JavaScript](https://aws.amazon.com/blogs/developer/middleware-stack-modular-aws-sdk-js/) 

 Le résumé des modifications d'interface de la AWS SDK pour JavaScript v2 à la v3 est donné ci-dessous. L'objectif est de vous aider à trouver facilement les équivalents v3 de la v2 APIs que vous connaissez déjà. 

**Topics**
+ [

# Constructeurs clients
](migrate-client-constructors.md)
+ [

# Fournisseurs d'informations d'identification
](migrate-credential-providers.md)
+ [

# Considérations relatives à Amazon S3
](migrate-s3.md)
+ [

# Client de documents DynamoDB
](migrate-dynamodb-doc-client.md)
+ [

# Serveurs et signataires
](migrate-waiters-signers.md)
+ [

# Remarques sur des clients de services spécifiques
](migrate-service-client-notes.md)

# Constructeurs clients
<a name="migrate-client-constructors"></a>

 Cette liste est indexée par les [paramètres de configuration de la v2](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#computeChecksums-property) 
  +  **v2** : s'il faut calculer les MD5 sommes de contrôle pour les corps de charge utile lorsque le service les accepte (actuellement pris en charge dans S3 uniquement). 
  +  **v3** : les commandes applicables de S3 (PutObject, PutBucketCors, etc.) calculeront automatiquement les MD5 sommes de contrôle de la charge utile de la demande. Vous pouvez également spécifier un algorithme de somme de contrôle différent dans le `ChecksumAlgorithm` paramètre des commandes pour utiliser un autre algorithme de somme de contrôle. Vous trouverez de plus amples informations dans l'[annonce de la fonctionnalité S3](https://aws.amazon.com/blogs/aws/new-additional-checksum-algorithms-for-amazon-s3/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#convertResponseTypes-property) 
  +  **v2** : Si les types sont convertis lors de l'analyse des données de réponse. 
  +  **v3 : **Obsolète****. Cette option n'est pas considérée comme sûre car elle ne convertit pas les types tels que l'horodatage ou les binaires base64 à partir de la réponse JSON. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#correctClockSkew-property) 
  +  **v2** : s'il faut appliquer une correction d'inclinaison de l'horloge et réessayer les demandes qui échouent en raison d'une horloge client asymétrique. 
  +  **v3 : **Obsolète****. Le SDK applique *toujours* une correction de l'inclinaison de l'horloge. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#systemClockOffset-property) 
  +  **v2** : valeur de décalage en millisecondes à appliquer à toutes les heures de signature. 
  +  **v3** : Pas de changement. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#credentials-property) 
  +  **v2** : Les AWS informations d'identification avec lesquelles signer les demandes. 
  +  **v3** : Pas de changement. Il peut également s'agir d'une fonction asynchrone qui renvoie des informations d'identification. Si la fonction renvoie un`expiration (Date)`, elle sera appelée à nouveau à l'approche de la date d'expiration. Consultez la [référence de l'API v3 pour les `AwsAuthInputConfig` informations d'identification](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-signing/Interface/AwsAuthInputConfig/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointCacheSize-property) 
  +  **v2** : taille du cache global stockant les points de terminaison issus des opérations de découverte des points de terminaison. 
  +  **v3** : Pas de changement. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#endpointDiscoveryEnabled-property) 
  +  **v2** : S'il faut appeler des opérations avec des points de terminaison fournis par le service de manière dynamique. 
  +  **v3** : Pas de changement. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#hostPrefixEnabled-property) 
  +  **v2** : s'il faut associer les paramètres de demande au préfixe du nom d'hôte. 
  +  **v3 : **Obsolète****. Le SDK injecte *toujours* le préfixe du nom d'hôte lorsque cela est nécessaire. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#httpOptions-property) 

   Ensemble d'options à transmettre à la requête HTTP de bas niveau. Ces options sont agrégées différemment dans la version 3. Vous pouvez les configurer en fournissant un nouveau`requestHandler`. Voici un exemple de définition des options http dans l'environnement d'exécution de Node.js. Vous trouverez plus d'informations dans la [référence de l'API v3 pour NodeHttpHandler](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/). 

   Toutes les requêtes v3 utilisent le protocole HTTPS par défaut. Il vous suffit de fournir un HttpAgent personnalisé. 

  ```
  const { Agent } = require("https");
  const { Agent: HttpAgent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpsAgent: new Agent({
              /*params*/
          }),
          connectionTimeout: /*number in milliseconds*/,
          socketTimeout: /*number in milliseconds*/
      }),
  });
  ```

   Si vous transmettez un point de terminaison personnalisé qui utilise http, vous devez fournir HttpAgent. 

  ```
  const { Agent } = require("http");
  const { NodeHttpHandler } = require("@smithy/node-http-handler");
  
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new NodeHttpHandler({
          httpAgent: new Agent({
              /*params*/
          }),
      }),
      endpoint: "http://example.com",
  });
  ```

   Si le client s'exécute dans des navigateurs, un ensemble d'options différent est disponible. Vous trouverez plus d'informations dans la [référence de l'API v3 pour FetchHttpHandler](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-fetch-http-handler/). 

  ```
  const { FetchHttpHandler } = require("@smithy/fetch-http-handler");
  const dynamodbClient = new DynamoDBClient({
      requestHandler: new FetchHttpHandler({
          requestTimeout: /* number in milliseconds */
      }),
  });
  ```

   Chaque option `httpOptions` est spécifiée ci-dessous : 
  +  `proxy` 
    +  **v2** : URL par laquelle les requêtes proxy doivent être transmises. 
    +  **v3** : Vous pouvez configurer un proxy avec un agent en suivant la procédure [Configuration des proxys pour Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-proxies.html). 
  +  `agent` 
    +  **v2** : L'objet Agent avec lequel effectuer des requêtes HTTP. Utilisé pour le regroupement de connexions. 
    +  **v3** : Vous pouvez configurer `httpAgent` ou `httpsAgent` comme indiqué dans les exemples ci-dessus. 
  +  `connectTimeout` 
    +  **v2** : définit le socket pour qu'il expire après avoir échoué à établir une connexion avec le serveur au bout de quelques `connectTimeout` millisecondes. 
    +  **v3** : `connectionTimeout` est disponible [en `NodeHttpHandler` options.](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/) 
  +  `timeout` 
    +  **v2** : Le nombre de millisecondes qu'une demande peut prendre avant d'être automatiquement résiliée. 
    +  **v3** : `socketTimeout` est disponible [en `NodeHttpHandler` options.](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-node-http-handler/) 
  +  `xhrAsync` 
    +  **v2** : Si le SDK enverra des requêtes HTTP asynchrones. 
    +  **v3 : **Obsolète****. Les demandes sont *toujours* asynchrones. 
  +  `xhrWithCredentials` 
    +  **v2** : Définit la propriété « WithCredentials » d'un objet XMLHttp Request. 
    +  **v3** : Non disponible. Le SDK hérite des configurations [de récupération par défaut](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#logger-property) 
  +  **v2** : un objet qui répond `.write()` (comme un flux) ou `.log()` (comme l'objet de console) afin de consigner des informations sur les demandes. 
  +  **v3** : Pas de changement. Des journaux plus détaillés sont disponibles dans la version 3. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRedirects-property) 
  +  **v2** : Le nombre maximum de redirections à suivre pour une demande de service. 
  +  **v3 : **Obsolète****. *Le SDK ne suit pas* les redirections pour éviter les demandes interrégionales involontaires. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#maxRetries-property) 
  +  **v2** : nombre maximal de tentatives à effectuer pour une demande de service. 
  +  **v3** : Remplacé en. `maxAttempts` Pour en savoir plus, consultez la [référence de l'API v3 pour RetryInputConfig](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-middleware-retry/Interface/RetryInputConfig/). Notez que cela `maxAttempts` devrait être le cas`maxRetries + 1`. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#paramValidation-property) 
  +  **v2** : Si les paramètres d'entrée doivent être validés par rapport à la description de l'opération avant d'envoyer la demande. 
  +  **v3 : **Obsolète****. Le SDK *n'effectue pas* de validation côté client lors de l'exécution. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#region-property) 
  +  **v2** : région à laquelle envoyer les demandes de service. 
  +  **v3** : Pas de changement. Il peut également s'agir d'une fonction asynchrone qui renvoie une chaîne de région. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#retryDelayOptions-property) 
  +  **v2** : ensemble d'options permettant de configurer le délai de nouvelle tentative en cas d'erreur réessayable. 
  +  **v3 : **Obsolète****. Le SDK prend en charge une stratégie de nouvelle tentative plus flexible avec l'option `retryStrategy` client constructeur. Pour [en savoir plus, consultez la référence de l'API v3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/). 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3BucketEndpoint-property) 
  +  **v2** : si le point de terminaison fourni adresse un compartiment individuel (faux s'il s'adresse au point de terminaison de l'API racine). 
  +  **v3** : Remplacé en. `bucketEndpoint` Pour en savoir plus, consultez la [référence de l'API v3 pour BucketEndpoint](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-bucket-endpoint/Interface/BucketEndpointInputConfig/). Notez que lorsque ce paramètre est défini sur`true`, vous spécifiez le point de terminaison de la `Bucket` demande dans le paramètre de demande, le point de terminaison d'origine sera remplacé. Alors que dans la version v2, le point de terminaison de la demande dans le constructeur du client remplace le paramètre de `Bucket` demande. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3DisableBodySigning-property) 
  +  **v2** : S'il faut désactiver la signature du corps S3 lors de l'utilisation de la version de signature v4. 
  +  **v3** : renommé en. `applyChecksum` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3ForcePathStyle-property) 
  +  **v2** : s'il faut forcer le style de chemin URLs pour les objets S3. 
  +  **v3** : renommé en. `forcePathStyle` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UseArnRegion-property) 
  +  **v2** : S'il faut remplacer la région de demande par la région déduite de l'ARN de la ressource demandée. 
  +  **v3** : renommé en. `useArnRegion` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#s3UsEast1RegionalEndpoint-property) 
  +  **v2** : Lorsque la région est définie sur « us-east-1 », s'il faut envoyer une requête s3 aux points de terminaison globaux ou aux points de terminaison régionaux « us-east-1 ». 
  +  **v3 : **Obsolète****. Le client S3 utilisera toujours le point de terminaison régional si la région est définie sur`us-east-1`. Vous pouvez définir la région pour envoyer `aws-global` des demandes au point de terminaison global S3. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureCache-property) 
  +  **v2** : si la signature avec laquelle signer les demandes (en remplacement de la configuration de l'API) est mise en cache. 
  +  **v3 : **Obsolète****. Le SDK met *toujours* en cache les clés de signature hachées. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#signatureVersion-property) 
  +  **v2** : version de signature avec laquelle signer les demandes (en remplacement de la configuration de l'API). 
  +  **v3 : **Obsolète****. La signature V2 prise en charge dans le SDK v2 a été déconseillée par AWS. La v3 *ne prend en charge que* la signature v4. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#sslEnabled-property) 
  +  **v2** : si le protocole SSL est activé pour les demandes. 
  +  **v3** : renommé en. `tls` 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#stsRegionalEndpoints-property) 
  +  **v2** : S'il faut envoyer la demande sts aux points de terminaison mondiaux ou aux points de terminaison régionaux. 
  +  **v3 : **Obsolète****. Le client STS utilisera *toujours* des points de terminaison régionaux s'il est défini sur une région spécifique. Vous pouvez définir la région pour envoyer une demande `aws-global` au point de terminaison global STS. 
+  [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#useAccelerateEndpoint-property) 
  +  **v2** : s'il faut utiliser le point de terminaison Accelerate avec le service S3. 
  +  **v3** : Pas de changement. 

# Fournisseurs d'informations d'identification
<a name="migrate-credential-providers"></a>

 Dans la version 2, le SDK pour JavaScript fournit une liste de fournisseurs d'informations d'identification parmi lesquels choisir, ainsi qu'une chaîne de fournisseurs d'informations d'identification, disponible par défaut sur Node.js, qui essaie de charger les AWS informations d'identification de tous les fournisseurs les plus courants. Le SDK pour JavaScript v3 simplifie l'interface du fournisseur d'informations d'identification, ce qui facilite l'utilisation et la rédaction de fournisseurs d'informations d'identification personnalisés. En plus d'une nouvelle chaîne de fournisseurs d'informations d'identification, le SDK pour la JavaScript version 3 fournit tous une liste de fournisseurs d'informations d'identification visant à fournir un équivalent à la version 2. 

 Voici tous les fournisseurs d'identifiants de la version 2 et leurs équivalents de la version 3. 

## Fournisseur d'informations d'identification par défaut
<a name="default-credential-provider"></a>

 Le fournisseur d'informations d'identification par défaut est la façon dont le SDK permet de JavaScript résoudre les AWS informations d'identification si vous *ne les fournissez pas explicitement*. 
+  **v2** : [CredentialProviderChain](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html)dans Node.js, résout les informations d'identification provenant des sources dans l'ordre suivant : 
  +  [Variable environnementale](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-environment.html) 
  +  [Fichier d'informations d'identification partagé](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-node-credentials-shared.html) 
  +  [Informations d'identification du conteneur ECS](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
  +  [Processus externe de génération](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) 
  +  [Jeton OIDC provenant du fichier spécifié](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
  +  [Métadonnées de EC2 l'instance Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) 

   Si l'un des fournisseurs d'identifiants ci-dessus ne parvient pas à résoudre l' AWS identifiant, la chaîne revient au fournisseur suivant jusqu'à ce qu'un identifiant valide soit résolu, et la chaîne génère une erreur lorsque tous les fournisseurs échouent. 

   Dans les environnements d'exécution Browser et React Native, la chaîne d'informations d'identification est vide et les informations d'identification doivent être définies explicitement. 
+  **v3 : [DefaultProvider](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers#fromnodejsproviderchain-1)**. Les sources d'informations d'identification et l'ordre de repli *ne changent pas* dans la version 3. Il prend également en charge les [AWS IAM Identity Center informations d'identification](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html). 

## Informations d'identification temporaires
<a name="temporary-credentials"></a>
+  **v2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html)représente les informations d'identification temporaires extraites de`AWS.STS`. Sans aucun paramètre supplémentaire, les informations d'identification seront extraites de l'`AWS.STS.getSessionToken()`opération. Si un rôle IAM est fourni, l'`AWS.STS.assumeRole()`opération sera plutôt utilisée pour récupérer les informations d'identification du rôle. `AWS.ChainableTemporaryCredentials`diffère de la `AWS.TemporaryCredentials` façon dont les MasterCredentials et les actualisations sont gérés. `AWS.ChainableTemporaryCredentials`actualise les informations d'identification expirées à l'aide des MasterCredentials transmises par l'utilisateur pour permettre le chaînage des informations d'identification STS. Cependant, les informations d'identification principales sont réduites de `AWS.TemporaryCredentials` manière récursive lors de l'instanciation, ce qui empêche d'actualiser les informations d'identification qui nécessitent des informations d'identification temporaires intermédiaires. 

   L'original [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TemporaryCredentials.html)a été **déprécié** au profit de la `ChainableTemporaryCredentials` version v2. 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtemporarycredentials). Vous pouvez appeler `fromTemporaryCredentials()` depuis le `@aws-sdk/credential-providers` forfait. Voici un exemple : 

  ```
  import { FooClient } from "@aws-sdk/client-foo";
  import { fromTemporaryCredentials } from "@aws-sdk/credential-providers"; // ES6 import
  // const { FooClient } = require("@aws-sdk/client-foo");
  // const { fromTemporaryCredentials } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const sourceCredentials = {
    // A credential can be a credential object or an async function that returns a credential object
  };
  const client = new FooClient({
    credentials: fromTemporaryCredentials({
      masterCredentials: sourceCredentials,
      params: { RoleArn },
    }),
  });
  ```

## Informations d'identification Amazon Cognito
<a name="cognito-identity-credentials"></a>

 Chargez les informations d'identification depuis le service Amazon Cognito Identity, normalement utilisé dans les navigateurs. 
+  **v2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)représente les informations d'identification récupérées auprès de STS Web Identity Federation à l'aide du service Amazon Cognito Identity. 
+  **v3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)Le [`@aws/credential-providers`package](https://www.npmjs.com/package/@aws-sdk/credential-providers) fournit deux fonctions de fournisseur d'informations d'identification, dont l'une [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)prend un identifiant d'identité et des appels`cognitoIdentity:GetCredentialsForIdentity`, tandis que l'autre [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html)prend un identifiant de pool d'identités, appelle `cognitoIdentity:GetId` lors du premier appel, puis appelle. `fromCognitoIdentity` Les invocations ultérieures de ce dernier ne sont pas réinvoquées. GetId 

   Le fournisseur met en œuvre le « flux simplifié » décrit dans le guide du [développeur Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html). Le « flux classique » qui implique d'appeler `cognito:GetOpenIdToken` puis d'appeler *n'`sts:AssumeRoleWithWebIdentity`est pas* pris en charge. Veuillez nous envoyer une [demande de fonctionnalité](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) si vous en avez besoin. 

  ```
  // fromCognitoIdentityPool example
  import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentityPool } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentityPool({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

  ```
  // fromCognitoIdentity example
  import { fromCognitoIdentity } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromCognitoIdentity } = require("@aws-sdk/credential-provider-cognito-identity"); // CommonJS import
  
  const client = new FooClient({
    region: "us-east-1",
    credentials: fromCognitoIdentity({
      clientConfig: cognitoIdentityClientConfig, // Optional
      identityId: "us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f",
      customRoleArn: "arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity", // Optional
      logins: {
        // Optional
        "graph.facebook.com": "FBTOKEN",
        "www.amazon.com": "AMAZONTOKEN",
        "api.twitter.com": "TWITTERTOKEN",
      },
    }),
  });
  ```

## Identifiant Amazon EC2 Metadata (IMDS)
<a name="ec2-metadataimds-credential"></a>

 Représente les informations d'identification reçues du service de métadonnées sur une EC2 instance Amazon. 
+  **version 2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html) 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Crée un fournisseur d'informations d'identification qui fournira les informations d'identification auprès du service de métadonnées d' EC2 instance Amazon. 

  ```
  import { fromInstanceMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromInstanceMetadata } = require("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromInstanceMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Informations d'identification Amazon ECS
<a name="ecs-credentials"></a>

 Représente les informations d'identification reçues depuis l'URL spécifiée. Ce fournisseur demandera des informations d'identification temporaires à partir de l'URI spécifiée par la variable d'environnement `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` ou par la variable d'`AWS_CONTAINER_CREDENTIALS_FULL_URI`environnement. 
+  **v2** : `ECSCredentials` ou [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RemoteCredentials.html) 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromcontainermetadata-and-frominstancemetadata). Crée un fournisseur d'informations d'identification qui fournira les informations d'identification auprès du service de métadonnées de conteneur Amazon ECS. 

  ```
  import { fromContainerMetadata } from "@aws-sdk/credential-providers"; // ES6 import
  
  const client = new FooClient({
    credentials: fromContainerMetadata({
      maxRetries: 3, // Optional
      timeout: 0, // Optional
    }),
  });
  ```

## Informations d'identification du système de fichiers
<a name="file-system-credentials"></a>
+ **v2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/FileSystemCredentials.html). Représente les informations d'identification d'un fichier JSON sur le disque.
+  **v3 : **Obsolète****. Vous pouvez lire explicitement le fichier JSON et le fournir au client. Veuillez nous envoyer une [demande de fonctionnalité](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) si vous en avez besoin. 

## Fournisseur d'informations d'identification SAML
<a name="saml-credential-provider"></a>
+  **v2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SAMLCredentials.html)représente les informations d'identification extraites du support STS SAML. 
+  **v3** : **Non disponible.** Veuillez nous envoyer une [demande de fonctionnalité](https://github.com/aws/aws-sdk-js-v3/issues/new?assignees=&labels=feature-request&template=---feature-request.md&title=) si vous en avez besoin. 

## Informations d'identification partagées Informations d'identification
<a name="shared-credential-file-credentials"></a>

 Charge les informations d'identification à partir du fichier d'informations d'identification partagé (défini par défaut `~/.aws/credentials` ou défini par la variable d'`AWS_SHARED_CREDENTIALS_FILE`environnement). Ce fichier est pris en charge par différents AWS SDKs outils. Vous pouvez consulter le [document sur les fichiers de configuration et d'identification partagés](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) pour plus d'informations. 
+  **version 2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SharedIniFileCredentials.html) 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_providers.html) 

  ```
  import { fromIni } from "@aws-sdk/credential-providers";
  // const { fromIni } from("@aws-sdk/credential-providers");
  
  const client = new FooClient({
    credentials: fromIni({
      configFilepath: "~/.aws/config", // Optional
      filepath: "~/.aws/credentials", // Optional
      mfaCodeProvider: async (mfaSerial) => {
        // implement a pop-up asking for MFA code
        return "some_code";
      }, // Optional
      profile: "default", // Optional
      clientConfig: { region }, // Optional
    }),
  });
  ```

## Identifiants d'identité Web
<a name="web-identity-credentials"></a>

 Récupère les informations d'identification à l'aide d'un jeton OIDC à partir d'un fichier sur le disque. Couramment utilisé dans Amazon EKS. 
+  **version 2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/TokenFileWebIdentityCredentials.html) 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromtokenfile) 

  ```
  import { fromTokenFile } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromTokenFile } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromTokenFile({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

## Informations d'identification de la Fédération des identités Web
<a name="web-identity-federation-credentials"></a>

 Récupère les informations d'identification auprès du support de fédération d'identité Web STS. 
+  **version 2** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/WebIdentityCredentials.html) 
+  **version 3** : [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-credential-providers/#fromwebtoken) 

  ```
  import { fromWebToken } from "@aws-sdk/credential-providers"; // ES6 import
  // const { fromWebToken } from("@aws-sdk/credential-providers"); // CommonJS import
  
  const client = new FooClient({
    credentials: fromWebToken({
      // Optional. If skipped, read from `AWS_ROLE_ARN` environmental variable
      roleArn: "arn:xxxx",
      // Optional. If skipped, read from `AWS_ROLE_SESSION_NAME` environmental variable
      roleSessionName: "session:a",
      // Optional. STS client config to make the assume role request.
      clientConfig: { region },
    }),
  });
  ```

# Considérations relatives à Amazon S3
<a name="migrate-s3"></a>

## Chargement en plusieurs parties sur Amazon S3
<a name="s3-multipart-upload"></a>

 Dans la version 2, le client Amazon S3 contient une [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property)opération qui prend en charge le téléchargement d'objets volumineux grâce à la [fonctionnalité de téléchargement partitionné proposée par Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) S3. 

 Dans la version 3, le [https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage)package est disponible. Il prend en charge toutes les fonctionnalités proposées dans l'`upload()`opération v2 et supporte à la fois Node.js et le runtime des navigateurs. 

## URL présignée Amazon S3
<a name="s3-presigned-url"></a>

 Dans la version 2, le client Amazon S3 contient les [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property)opérations [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property)et pour générer une URL que les utilisateurs peuvent utiliser pour charger ou télécharger des objets depuis Amazon S3. 

 Dans la version 3, le [https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner)package est disponible. Ce paquet contient les fonctions à la fois pour les ` getSignedUrlPromise()` opérations `getSignedUrl()` et pour les opérations. Ce billet de [blog](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/) décrit les détails de ce package.

## Redirections régionales Amazon S3
<a name="s3-global-client-region-redirects"></a>

Si une région incorrecte est transmise au client Amazon S3 et qu'une erreur ultérieure ` PermanentRedirect` (statut 301) est renvoyée, le client Amazon S3 de la version 3 prend en charge les redirections régionales (anciennement connu sous le nom de client global Amazon S3 dans la version 2). Vous pouvez utiliser l'[https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/)indicateur dans la configuration du client pour que le client Amazon S3 suive les redirections régionales et prenne en charge sa fonction de client global.

**Note**  
Notez que cette fonctionnalité peut entraîner une latence supplémentaire car les demandes ayant échoué sont réessayées avec une région corrigée lors de la réception `PermanentRedirect` d'une erreur avec le statut 301. Cette fonctionnalité ne doit être utilisée que si vous ne connaissez pas à l'avance la région de vos compartiments. 

## Streaming Amazon S3 et réponses mises en mémoire tampon
<a name="amazon-s3-stream-vs-buffer"></a>

 Le SDK v3 préfère ne pas mettre en mémoire tampon les réponses potentiellement volumineuses. Cela se produit fréquemment lors de l'`GetObject`opération Amazon S3, qui a renvoyé un `Buffer` dans la version 2, mais renvoie un `Stream` dans la version 3. 

 Pour Node.js, vous devez utiliser le flux ou la collecte des déchets du client ou de son gestionnaire de requêtes pour maintenir les connexions ouvertes au nouveau trafic en libérant des sockets. 

```
// v2
const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
```

```
// v3, consume the stream to free the socket
const get = await s3.getObject({ ... }); // object .Body has unconsumed stream
const str = await get.Body.transformToString(); // consumes the stream

// other ways to consume the stream include writing it to a file,
// passing it to another consumer like an upload, or buffering to
// a string or byte array.
```

 Pour plus d'informations, consultez la section sur [l'épuisement des sockets](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler). 

# Client de documents DynamoDB
<a name="migrate-dynamodb-doc-client"></a>

## Utilisation de base du client de documents DynamoDB dans la version 3
<a name="basic-usage-of-dynamodb-document-client-in-v3"></a>
+  Dans la version 2, vous pouvez utiliser la [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)classe pour appeler APIs DynamoDB avec des types JavaScript natifs tels que Array, Number et Object. Il simplifie ainsi l'utilisation des éléments dans Amazon DynamoDB en éliminant la notion de valeurs d'attribut. 
+  Dans la version 3, le [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html)client équivalent est disponible. Il est similaire aux clients de service normaux du SDK v3, à la différence près qu'il prend un client DynamoDB de base dans son constructeur. 

 Exemple : 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // ES6 import
// const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); // CommonJS import
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; // ES6 import
// const { DynamoDBDocumentClient, PutCommand } = require("@aws-sdk/lib-dynamodb"); // CommonJS import

// Bare-bones DynamoDB Client
const client = new DynamoDBClient({});

// Bare-bones document client
const ddbDocClient = DynamoDBDocumentClient.from(client); // client is DynamoDB client

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "1",
      content: "content from DynamoDBDocumentClient",
    },
  })
);
```

## `Undefined`valeurs saisies lors du triage
<a name="undefined-values-in-when-marshalling"></a>
+  Dans la version 2, `undefined` les valeurs des objets étaient automatiquement omises lors du processus de compilation vers DynamoDB. 
+  Dans la version 3, le comportement de triage par défaut `@aws-sdk/lib-dynamodb` a changé : les objets contenant des `undefined` valeurs ne sont plus omis. Pour s'aligner sur les fonctionnalités de la version 2, les développeurs doivent définir explicitement le `removeUndefinedValues` to `true` dans le `marshallOptions` client de documents DynamoDB. 

 Exemple : 

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb";

const client = new DynamoDBClient({});

// The DynamoDBDocumentClient is configured to handle undefined values properly
const ddbDocClient = DynamoDBDocumentClient.from(client, {
  marshallOptions: {
    removeUndefinedValues: true
  }
});

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "123",
      content: undefined // This value will be automatically omitted.
      array: [1, undefined], // The undefined value will be automatically omitted.
      map: { key: undefined }, // The "key" will be automatically omitted.
      set: new Set([1, undefined]), // The undefined value will be automatically omitted.
    };
  })
);
```

 D'autres exemples et configurations sont disponibles dans le [package README.](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-dynamodb/README.md) 

# Serveurs et signataires
<a name="migrate-waiters-signers"></a>

Cette page décrit l'utilisation des serveurs et des signataires dans la AWS SDK pour JavaScript version 3.

## Programmes d'attente
<a name="waiters"></a>

 Dans la version 2, tous les serveurs sont liés à la classe du client de service, et vous devez spécifier dans la saisie du serveur l'état conçu que le client attendra. Par exemple, vous devez appeler [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#bucketExists-waiter)pour attendre qu'un compartiment nouvellement créé soit prêt.

 Dans la version 3, il n'est pas nécessaire d'importer des serveurs si votre application n'en a pas besoin. De plus, vous ne pouvez importer que le serveur dont vous avez besoin pour attendre l'état souhaité. Ainsi, vous pouvez réduire la taille de votre offre groupée et améliorer les performances. Voici un exemple d'attente pour que le bucket soit prêt après sa création : 

```
import { S3Client, CreateBucketCommand, waitUntilBucketExists } from "@aws-sdk/client-s3"; // ES6 import
// const { S3Client, CreateBucketCommand, waitUntilBucketExists } = require("@aws-sdk/client-s3"); // CommonJS import

const Bucket = "BUCKET_NAME";
const client = new S3Client({ region: "REGION" });
const command = new CreateBucketCommand({ Bucket });

await client.send(command);
await waitUntilBucketExists({ client, maxWaitTime: 60 }, { Bucket });
```

 Vous trouverez tout sur la façon de configurer les serveurs dans le [billet de blog sur les serveurs dans la AWS SDK pour JavaScript](https://aws.amazon.com/blogs/developer/waiters-in-modular-aws-sdk-for-javascript/) v3.

## Amazon CloudFront Signer
<a name="cloudfront-signer"></a>

 Dans la version 2, vous pouvez signer la demande d'accès aux CloudFront distributions Amazon restreintes avec [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html).

 Dans la version 3, vous disposez des mêmes utilitaires fournis dans le [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_cloudfront_signer.html)package.

## Signataire Amazon RDS
<a name="rds-signer"></a>

 Dans la version 2, vous pouvez générer le jeton d'authentification vers une base de données Amazon RDS à l'aide de. [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS/Signer.html) 

 Dans la version 3, la classe utilitaire similaire est disponible dans le [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html)package.

## Signataire d'Amazon Polly
<a name="polly-signer"></a>

 Dans la version 2, vous pouvez générer une URL signée vers le discours synthétisé par le service Amazon Polly avec. [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Polly/Presigner.html)

 Dans la version 3, la fonction utilitaire similaire est disponible dans le [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_polly_request_presigner.html)package. 

# Remarques sur des clients de services spécifiques
<a name="migrate-service-client-notes"></a>

## AWS Lambda
<a name="aws-lambda-notes"></a>

 Le type de réponse aux appels Lambda diffère en v2 et en v3. 

```
// v2
import { Lambda } from "@aws-sdk/client-lambda";
import AWS from "aws-sdk";

const lambda = new AWS.Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
}).promise();

// in v2, Lambda::invoke::Payload is automatically converted to string via a
// specific code customization.
const payloadIsString = typeof invoke.Payload === "string";
console.log("Invoke response payload type is string:", payloadIsString);

const payloadObject = JSON.parse(invoke.Payload);
console.log("Invoke response object", payloadObject);
```

```
// v3
const lambda = new Lambda({ REGION });
const invoke = await lambda.invoke({
  FunctionName: "echo",
  Payload: JSON.stringify({ message: "hello" }),
});

// in v3, Lambda::invoke::Payload is not automatically converted to a string.
// This is to reduce the number of customizations that create inconsistent behaviors.
const payloadIsByteArray = invoke.Payload instanceof Uint8Array;
console.log("Invoke response payload type is Uint8Array:", payloadIsByteArray);

// To maintain the old functionality, only one additional method call is needed:
// v3 adds a method to the Uint8Array called transformToString.
const payloadObject = JSON.parse(invoke.Payload.transformToString());
console.log("Invoke response object", payloadObject);
```

## Amazon SQS
<a name="amazon-sqs-notes"></a>

### MD5 Somme de contrôle
<a name="md5-checksum"></a>

 Pour ignorer le calcul des MD5 checksums des corps des messages, définissez `md5` la *valeur false* sur l'objet de configuration. Sinon, le SDK calculera par défaut la somme de contrôle pour l'envoi de messages et validera la somme de contrôle pour les messages récupérés.

```
// Example: Skip MD5 checksum in Amazon SQS
import { SQS } from "@aws-sdk/client-sqs";

new SQS({
  md5: false // note: only available in v3.547.0 and higher
});
```

Lors de l'utilisation d'une personnalisation `QueueUrl` dans les opérations Amazon SQS qui l'ont comme paramètre d'entrée, dans la version v2, il était possible de fournir une personnalisation `QueueUrl` qui remplacerait le point de terminaison par défaut du client Amazon SQS. 

### Messages multirégionaux
<a name="multi-region-messages"></a>

 Vous devez utiliser un client par région dans la version 3. La AWS région est destinée à être initialisée au niveau du client et à ne pas être modifiée entre les demandes. 

```
import { SQS } from "@aws-sdk/client-sqs";

const sqsClients = {
  "us-east-1": new SQS({ region: "us-east-1" }),
  "us-west-2": new SQS({ region: "us-west-2" }),
};

const queues = [
  { region: "us-east-1", url: "https://sqs.us-east-1.amazonaws.com/{AWS_ACCOUNT}/MyQueue" },
  { region: "us-west-2", url: "https://sqs.us-west-2.amazonaws.com/{AWS_ACCOUNT}/MyOtherQueue" },
];

for (const { region, url } of queues) {
  const params = {
    MessageBody: "Hello",
    QueueUrl: url,
  };
  await sqsClients[region].sendMessage(params);
}
```

### Point de terminaison personnalisé
<a name="custom-endpoint"></a>

 Dans la version 3, lorsque vous utilisez un point de terminaison personnalisé, c'est-à-dire un point de terminaison différent des points de terminaison publics Amazon SQS par défaut, vous devez toujours définir le point de terminaison sur le client Amazon SQS ainsi que sur le terrain. ` QueueUrl` 

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  // client endpoint should be specified in v3 when not the default public SQS endpoint for your region.
  // This is required for versions <= v3.506.0
  // This is optional but recommended for versions >= v3.507.0 (a warning will be emitted)
  endpoint: "https://my-custom-endpoint:8000/",
});

await sqs.sendMessage({
  QueueUrl: "https://my-custom-endpoint:8000/1234567/MyQueue",
  Message: "hello",
});
```

 Si vous n'utilisez pas de point de terminaison personnalisé, vous n'avez pas besoin de configurer `endpoint` le client.

```
import { SQS } from "@aws-sdk/client-sqs";

const sqs = new SQS({
  region: "us-west-2",
});

await sqs.sendMessage({
  QueueUrl: "https://sqs.us-west-2.amazonaws.com/1234567/MyQueue",
  Message: "hello",
});
```

# Documentation supplémentaire
<a name="migrate-supp-docs"></a>

Le tableau suivant contient des liens vers de la documentation supplémentaire qui vous aidera à utiliser et à comprendre le AWS SDK pour JavaScript (v3).


****  

| Nom | Remarques | 
| --- | --- | 
| [Clients du SDK](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md) | Informations sur l'initialisation d'un client SDK et sur les paramètres de constructeur configurables courants. | 
| [Notes de mise à niveau (2.x vers 3.x)](https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md) | Informations concernant la mise à niveau depuis AWS SDK pour JavaScript (v2). | 
| [Utilisation du AWS SDK pour JavaScript (v3) sur les environnements d'exécution de AWS Lambda Node.js](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/AWS_LAMBDA.md) | Meilleures pratiques pour travailler dans le cadre de AWS Lambda l'utilisation du AWS SDK pour JavaScript (v3). | 
| [Performances](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/performance/README.md) | Des informations sur la manière dont l'équipe du AWS SDK a optimisé les performances du SDK et des conseils pour configurer le SDK afin qu'il fonctionne efficacement. | 
| [TypeScript](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/TYPESCRIPT.md) | TypeScript conseils et astuces FAQs liés à la AWS SDK pour JavaScript (v3). | 
| [Gestion des erreurs](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/ERROR_HANDLING.md) | Conseils pour gérer les erreurs liées au AWS SDK pour JavaScript (v3). | 
| [Pratiques efficaces](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/EFFECTIVE_PRACTICES.md) | Recommandations générales pour l'utilisation du AWS SDK pour JavaScript (v3). | 