

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.

# Utilisation de l’AWS CLI
<a name="cli-chap-using"></a>

Cette section fournit un aperçu complet de l’utilisation générale, des fonctionnalités communes et des options disponibles dans l’AWS Command Line Interface (AWS CLI), en allant au-delà des détails abordés dans la section de configuration [Utilisation de points de terminaison dans AWS CLI](cli-configure-endpoints.md). 

Ce guide aborde les aspects fondamentaux de l’écriture de commandes AWS CLI, notamment leur structure de base, leur formatage et leurs capacités de filtrage. En comprenant ces éléments essentiels, vous serez en mesure de construire des commandes qui ciblent précisément les ressources et les actions dont vous avez besoin, sans avoir à naviguer dans des consoles Web complexes.

En outre, cela met en évidence le contenu d’aide et la documentation disponibles pour l’AWS CLI. De l’aide en ligne de commande intégrée au [guide de référence de l’AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/reference/), vous aurez accès à des informations qui vous aideront à explorer les fonctionnalités et les capacités de l’AWS CLI. 

Pour obtenir des exemples et des cas d’utilisation spécifiques à un Service AWS, consultez [Exemples pour l’AWS CLI](cli-chap-code-examples.md) ou le [guide de référence de l’AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/reference/). Ils fournissent des informations spécifiques aux commandes et montrent des exemples sur la manière d’optimiser l’AWS CLI pour différents Services AWS.

**Note**  
Par défaut, l’AWS CLI envoie des demandes aux Services AWS en utilisant HTTPS sur le port TCP 443. Pour bien utiliser l’AWS CLI, vous devez être en mesure d’effectuer des connexions sortantes sur ce port.

**Topics**
+ [Accès à l'aide et aux ressources pour AWS CLI](cli-usage-help.md)
+ [Structure de commande dans l’AWS CLI](cli-usage-commandstructure.md)
+ [Spécification des valeurs des paramètres dans l’AWS CLI](cli-usage-parameters.md)
+ [Activation et utilisation des invites de commande dans AWS CLI](cli-usage-parameters-prompting.md)
+ [Contrôle de la sortie des commandes dans le AWS CLI](cli-usage-output.md)
+ [Codes de retour de ligne de commande dans l’AWS CLI](cli-usage-returncodes.md)
+ [Utilisation d'assistants personnalisés pour exécuter des commandes interactives dans AWS CLI](cli-usage-wizard.md)
+ [Création et utilisation d'alias dans AWS CLI](cli-usage-alias.md)
+ [Résolution des erreurs liées au AWS CLI](cli-chap-troubleshooting.md)

# Accès à l'aide et aux ressources pour AWS CLI
<a name="cli-usage-help"></a>

Cette rubrique décrit comment accéder au contenu d'aide pour le AWS Command Line Interface (AWS CLI).

**Topics**
+ [La commande d' AWS CLI aide intégrée](#cli-usage-help-command)
+ [AWS CLI guide de référence](#cli-reference)
+ [Documentation sur les API](#api-reference)
+ [Résolution des erreurs](#help-tshoot)
+ [Aide supplémentaire](#help-additional)

## La commande d' AWS CLI aide intégrée
<a name="cli-usage-help-command"></a>

Vous pouvez obtenir de l'aide avec n'importe quelle commande lorsque vous utilisez le AWS Command Line Interface (AWS CLI). Pour cela, il vous suffit de saisir `help` à la fin d’un nom de commande. 

Par exemple, la commande suivante affiche de l'aide concernant les AWS CLI options générales et les commandes de haut niveau disponibles. 

```
$ aws help
```

La commande suivante affiche les commandes spécifiques à Amazon Elastic Compute Cloud (Amazon EC2) disponibles. 

```
$ aws ec2 help
```

L’exemple suivant affiche l’aide détaillée pour l’opération `DescribeInstances` d’Amazon EC2. L’aide inclut des descriptions de ses paramètres d’entrée, les filtres disponibles, et ce qui est inclus dans la sortie. Elle inclut également des exemples illustrant la façon de saisir des variations courantes de la commande.

```
$ aws ec2 describe-instances help
```

À compter de la version `2.31.0`, l’affichage de la commande `help` est configuré par le paramètre `cli_help_output` et elle possède les valeurs suivantes :
+  **(par défaut)** `terminal` : ouverture de la page man dans le terminal.
+ `browser` : ouverture de la page man sous forme de fichier HTML local dans votre navigateur par défaut. Un message est imprimé sur votre terminal lorsque votre navigateur par défaut est ouvert, et un message d'erreur s'il AWS CLI ne peut pas ouvrir votre navigateur.
+ `url`‐ Imprimez l'URL du guide de AWS CLI référence en ligne correspondant à la version AWS CLI que vous avez installée. Les paramètres de pagination côté client, tels que la variable d'`AWS_PAGER`environnement, sont respectés.

Le contenu d’aide de chaque commande est divisé en six sections :

Nom  
Le nom de la commande.  

```
NAME
       describe-instances -
```

Description  
Une description de l’opération d’API que la commande appelle.  

```
DESCRIPTION
       Describes one or more of your instances.

       If you specify one or more instance IDs, Amazon EC2 returns information
       for those instances. If you do not specify  instance  IDs,  Amazon  EC2
       returns  information  for  all  relevant  instances.  If you specify an
       instance ID that is not valid, an error is returned. If you specify  an
       instance  that  you  do  not  own,  it  is not included in the returned
       results.
...
```

Résumé  
La syntaxe de base pour utiliser la commande et ses options. Si une option est affichée entre crochets, elle est facultative ou elle a une valeur par défaut, ou bien une autre option peut être utilisée à la place.  

```
SYNOPSIS
            describe-instances
          [--dry-run | --no-dry-run]
          [--instance-ids <value>]
          [--filters <value>]
          [--cli-input-json <value>]
          [--starting-token <value>]
          [--page-size <value>]
          [--max-items <value>]
          [--generate-cli-skeleton]
```
Par exemple, `describe-instances` possède un comportement par défaut qui décrit ***toutes les*** instances du compte courant et de AWS la région. Si vous le souhaitez, vous pouvez spécifier une liste d’`instance-ids` pour décrire une ou plusieurs instances. `dry-run` est un indicateur booléen facultatif qui ne prend aucune valeur. Pour utiliser un indicateur booléen, indiquez la valeur affichée, dans le cas présent `--dry-run` ou `--no-dry-run`. De même, `--generate-cli-skeleton` ne prend pas de valeur. S’il existe des conditions sur l’utilisation d’une option, elles sont décrites dans la section `OPTIONS`, ou mentionnées dans les exemples.

Options  
Une description de chacune des options affichées dans le résumé.  

```
OPTIONS
       --dry-run | --no-dry-run (boolean)
          Checks whether you have the required  permissions  for  the  action,
          without actually making the request, and provides an error response.
          If you have the required permissions, the error response is  DryRun-
          Operation . Otherwise, it is UnauthorizedOperation .

       --instance-ids (list)
          One or more instance IDs.

          Default: Describes all your instances.
...
```

Exemples  
Des exemples illustrant l’utilisation de la commande et de ses options. Si aucun exemple n'est disponible pour une commande ou un cas d'utilisation dont vous avez besoin, demandez-en un en utilisant le lien de commentaires sur cette page ou dans la référence de AWS CLI commande sur la page d'aide de la commande.  

```
    EXAMPLES
    To describe an Amazon EC2 instance

    Command:
    
    aws ec2 describe-instances --instance-ids i-5203422c
    
    To describe all instances with the instance type m1.small
    
    Command:
    
    aws ec2 describe-instances --filters "Name=instance-type,Values=m1.small"
    
    To describe all instances with an Owner tag
    
    Command:
    
    aws ec2 describe-instances --filters "Name=tag-key,Values=Owner"
...
```

Output  
Des descriptions de chaque champ et type de données inclus dans la réponse d’ AWS.  
Pour `describe-instances`, la sortie est une liste d’objets de réservation, chacun comportant plusieurs champs et des objets contenant des informations sur les instances qui lui sont associées. Ces informations sont issues de la [documentation d’API pour le type de données de réservation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Reservation.html) utilisée par Amazon EC2.  

```
OUTPUT
       Reservations -> (list)
          One or more reservations.

          (structure)
              Describes a reservation.

              ReservationId -> (string)
                 The ID of the reservation.

              OwnerId -> (string)
                 The ID of the AWS account that owns the reservation.

              RequesterId -> (string)
                 The ID of the requester that launched the instances  on  your
                 behalf (for example, AWS Management Console or Auto Scaling).

              Groups -> (list)
                 One or more security groups.

                 (structure)
                     Describes a security group.

                     GroupName -> (string)
                        The name of the security group.

                     GroupId -> (string)
                        The ID of the security group.

              Instances -> (list)
                 One or more instances.

                 (structure)
                     Describes an instance.

                     InstanceId -> (string)
                        The ID of the instance.

                     ImageId -> (string)
                        The ID of the AMI used to launch the instance.

                     State -> (structure)
                        The current state of the instance.

                        Code -> (integer)
                            The  low  byte represents the state. The high byte
                            is an opaque internal value and should be ignored.
...
```
Lorsque le résultat est AWS CLI rendu au format JSON, il devient un tableau d'objets de réservation, comme dans l'exemple suivant.  

```
{
    "Reservations": [
        {
            "OwnerId": "012345678901",
            "ReservationId": "r-4c58f8a0",
            "Groups": [],
            "RequesterId": "012345678901",
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "PublicDnsName": "ec2-52-74-16-12.us-west-2.compute.amazonaws.com",
                    "State": {
                        "Code": 16,
                        "Name": "running"
                    },
...
```
Chaque objet de réservation contient les champs décrivant la réservation et un tableau des objets de l’instance, chacun avec ses propres champs (`PublicDnsName`, par exemple) et des objets (`State`, par exemple) qui le décrivent.  
**Utilisateurs Windows**  
Vous pouvez *acheminer* (\$1) la sortie de la commande d’aide vers la commande `more` pour afficher le fichier d’aide une page à la fois. Appuyez sur la barre d'espace ou **PgDn**pour afficher une plus grande partie du document, puis **q** pour quitter.   

```
C:\> aws ec2 describe-instances help | more
```

## AWS CLI guide de référence
<a name="cli-reference"></a>

Les fichiers d’aide contiennent des liens qui ne peuvent pas être affichés ou accédés depuis la ligne de commande. Vous pouvez consulter ces liens et interagir avec eux en utilisant le [, version 2](https://docs.aws.amazon.com/cli/latest/reference/index.html). La référence contient également le contenu d'aide pour toutes les AWS CLI commandes. Les descriptions sont présentées pour faciliter la navigation et l’affichage sur les téléphones portables, les tablettes ou les écrans de bureau. 

## Documentation sur les API
<a name="api-reference"></a>

Toutes les commandes du AWS CLI correspondent aux demandes adressées à l'API AWS publique d'un service. Chaque service avec une API publique comprend une référence d’API disponible à partir de la page d’accueil du service sur le [site web de la documentation AWS](https://docs.aws.amazon.com/). Le contenu d’une référence d’API varie en fonction de la manière dont l’API est construite et du protocole qui est utilisé. En général, une référence d’API contient des informations détaillées sur les actions prises en charge par l’API, les données envoyées vers et depuis le service et les conditions d’erreur que le service peut signaler. 

**Sections de la documentation d’API**
+  **Actions** : informations détaillées sur chaque opération et ses paramètres (y compris les contraintes de longueur et de contenu, et les valeurs par défaut). Cette section répertorie les erreurs qui peuvent se produire pour cette action. Chaque opération correspond à une sous-commande du AWS CLI. 
+  **Types de données** : informations détaillées sur les structures qu’une commande peut nécessiter en tant que paramètre ou renvoyer en réponse à une demande.
+  **Paramètres communs** : informations détaillées sur les paramètres qui sont partagés par l’ensemble des actions d’un service. 
+  **Erreurs courantes** : informations détaillées sur les erreurs qui peuvent être renvoyées par l’une des actions d’un service. 

Le nom et la disponibilité de chaque section peuvent varier en fonction du service. 

**Spécifique au service CLIs**  
Certains services ont une CLI distincte qui date d'avant qu'une seule ne soit AWS CLI créée pour fonctionner avec tous les services. Ces documents spécifiques au service CLIs ont une documentation distincte qui est liée à la page de documentation du service. La documentation spécifique au service CLIs ne s'applique pas au. AWS CLI

## Résolution des erreurs
<a name="help-tshoot"></a>

Pour obtenir de l'aide sur le diagnostic et la correction des AWS CLI erreurs, consultez[Résolution des erreurs liées au AWS CLI](cli-chap-troubleshooting.md).

## Aide supplémentaire
<a name="help-additional"></a>

Pour obtenir de l'aide supplémentaire AWS CLI concernant vos problèmes, consultez la [AWS CLI communauté](https://github.com/aws/aws-cli/issues) sur *GitHub*.

# Structure de commande dans l’AWS CLI
<a name="cli-usage-commandstructure"></a>

Cette rubrique explique comment la commande de l’AWS Command Line Interface (AWS CLI) est structurée et comment utiliser les commandes wait.

**Topics**
+ [Structure de commande](#cli-usage-commandstructure-structure.title)
+ [Commandes wait](#cli-usage-commandstructure-wait)

## Structure de commande
<a name="cli-usage-commandstructure-structure.title"></a>

L’AWS CLI utilise une structure en plusieurs parties sur la ligne de commande qui doit être spécifiée dans l’ordre suivant :

1. L’appel de base au programme `aws`.

1. La *commande* de niveau supérieur, qui correspond généralement à un service AWS pris en charge par l’AWS CLI.

1. La *sous-commande* qui spécifie l’opération à effectuer.

1. Les options d’AWS CLI générales ou les paramètres requis par l’opération. Vous pouvez les spécifier dans n’importe quel ordre tant qu’ils suivent les trois premières parties. Si un paramètre exclusif est spécifié plusieurs fois, seule la *dernière valeur* s’applique.

```
$ aws <command> <subcommand> [options and parameters]
```

Les paramètres peuvent prendre différents types de valeurs d’entrée, comme des chiffres, des chaînes, des listes, des mappages et des structures JSON. Ce qui est pris en charge dépend de la commande et de la sous-commande que vous spécifiez.

### Exemples
<a name="cli-usage-commandstructure-structure-example"></a>

**Amazon S3**

L’exemple suivant répertorie tous les compartiments Amazon S3.

```
$ aws s3 ls
2018-12-11 17:08:50 amzn-s3-demo-bucket1
2018-12-14 14:55:44 amzn-s3-demo-bucket2
```

Pour plus d’informations sur les commandes Amazon S3, consultez [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html) dans la *Référence des commandes de l’AWS CLI*.

**AWS CloudFormation**

L’exemple de commande [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) suivant remplace le nom de la pile cloudformation par *my-change-set*.

```
$ aws cloudformation create-change-set --stack-name my-stack --change-set-name my-change-set
```

Pour plus d’informations sur les commandes AWS CloudFormation, consultez [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/index.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/index.html) dans la *Référence des commandes de l’AWS CLI*.

## Commandes wait
<a name="cli-usage-commandstructure-wait"></a>

Des commandes `wait` sont disponibles pour certains services AWS. Toute commande utilisant `aws wait` attend généralement qu’une commande soit terminée avant de passer à l’étape suivante. C’est particulièrement utile pour les commandes en plusieurs parties ou les scripts, car vous pouvez utiliser une commande wait pour empêcher de passer aux étapes suivantes en cas d’échec de la commande wait.

L’AWS CLI utilise une structure en plusieurs parties sur la ligne de commande pour la commande `wait` qui doit être spécifiée dans l’ordre suivant :

1. L’appel de base au programme `aws`.

1. La *commande* de niveau supérieur, qui correspond généralement à un service AWS pris en charge par l’AWS CLI.

1. La commande `wait`.

1. La *sous-commande* qui spécifie l’opération à effectuer.

1. Les options CLI générales ou les paramètres requis par l’opération. Vous pouvez les spécifier dans n’importe quel ordre tant qu’ils suivent les trois premières parties. Si un paramètre exclusif est spécifié plusieurs fois, seule la *dernière valeur* s’applique.

```
$ aws <command> wait <subcommand> [options and parameters]
```

Les paramètres peuvent prendre différents types de valeurs d’entrée, comme des chiffres, des chaînes, des listes, des mappages et des structures JSON. Ce qui est pris en charge dépend de la commande et de la sous-commande que vous spécifiez.

**Note**  
Tous les services AWS ne prennent pas en charge les commandes `wait`. Consultez le [guide de référence de l’AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/reference/index.html) pour voir si votre service prend en charge les commandes `wait`.

### Exemples
<a name="cli-usage-commandstructure-wait-example"></a>

**AWS CloudFormation**

Les exemples de commande [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/change-set-create-complete.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/change-set-create-complete.html) suivants s’interrompent et reprennent uniquement après avoir confirmé que le jeu de modifications *my-change-set* défini dans la pile *my-stack* est prêt pour exécution.

```
$ aws cloudformation wait change-set-create-complete --stack-name my-stack --change-set-name my-change-set
```

Pour plus d’informations sur les commandes `wait` d’AWS CloudFormation, consultez [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/index.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/index.html) dans la *Référence des commandes de l’AWS CLI*.

**AWS CodeDeploy**

Les exemples de commande [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/change-set-create-complete.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/change-set-create-complete.html) suivants sont mis en pause jusqu’à ce que le déploiement *d-A1B2C3111* soit terminé.

```
$ aws deploy wait deployment-successful --deployment-id d-A1B2C3111
```

Pour plus d’informations sur les commandes `wait` d’AWS CodeDeploy, consultez [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/index.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/index.html) dans la *Référence des commandes de l’AWS CLI*.

# Spécification des valeurs des paramètres dans l’AWS CLI
<a name="cli-usage-parameters"></a>

Nombre de paramètres utilisés dans l’AWS Command Line Interface (AWS CLI) se présentent sous forme de chaîne simple ou de valeurs numériques, par exemple le nom de paire de clés `my-key-pair` dans l’exemple de commande `aws ec2 create-key-pair` suivant. 

```
$ aws ec2 create-key-pair --key-name my-key-pair
```

Le formatage de la commande peut varier d’un terminal à l’autre. Par exemple, la plupart des terminaux font la distinction entre majuscules et minuscules, mais Powershell ne fait pas cette distinction. Cela signifie que les deux exemples de commandes suivants produiraient des résultats différents pour les terminaux distinguant les majuscules et les minuscules, car ils considèrent `MyFile*.txt` et `myfile*.txt` comme des paramètres **différents**. 

Cependant, PowerShell traiterait ces demandes de la même manière, car il considère `MyFile*.txt` et `myfile*.txt` comme des paramètres **identiques**. L’exemple de commande suivant illustre ces paramètres à l’aide de la commande `aws s3 cp` :

```
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "MyFile*.txt"
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "myfile*.txt"
```

Pour plus d’informations sur l’insensibilité à la casse de PowerShell, consultez [about\$1Case-Sensitivity](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_case-sensitivity) dans la *documentation PowerShell*.

Vous devez parfois utiliser des guillemets ou des littéraux autour des chaînes contenant des caractères spéciaux ou des espaces. Les règles relatives à ce formatage peuvent également varier d’un terminal à l’autre. Pour plus d’informations sur l’utilisation de guillemets autour de paramètres complexes, consultez [Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI](cli-usage-parameters-quoting-strings.md).

Ces rubriques couvrent les règles de formatage des terminaux les plus courantes. Si vous ne parvenez pas à faire reconnaître les valeurs de vos paramètres par votre terminal, n’oubliez pas de consulter les rubriques de cette section et de consulter la documentation de votre terminal pour connaître les règles de syntaxe spécifiques.

**Topics**
+ [Types de paramètres courants dans le AWS CLI](cli-usage-parameters-types.md)
+ [Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI](cli-usage-parameters-quoting-strings.md)
+ [Chargement d'un paramètre depuis un fichier dans AWS CLI](cli-usage-parameters-file.md)
+ [AWS CLI squelettes et fichiers d'entrée dans le AWS CLI](cli-usage-skeleton.md)
+ [En utilisant la syntaxe abrégée dans le AWS CLI](cli-usage-shorthand.md)

# Types de paramètres courants dans le AWS CLI
<a name="cli-usage-parameters-types"></a>

Cette section décrit certains types de paramètres communs et le format typique requis. 

Si vous rencontrez des difficultés pour la mise en forme d’un paramètre d’une commande spécifique, consultez l’aide ; pour ce faire, saisissez **help** après le nom de la commande. L’aide pour chaque sous-commande inclut le nom et la description d’une option. Le type de paramètre de l’option est répertorié entre parenthèses. Pour plus d’informations sur l’affichage de l’aide, consultez [Accès à l'aide et aux ressources pour AWS CLI](cli-usage-help.md).

**Topics**
+ [String](#parameter-type-string)
+ [Horodatage](#parameter-type-timestamp)
+ [List](#parameter-type-list)
+ [Booléen](#parameter-type-boolean)
+ [Entier](#parameter-type-integer)
+ [Binaire/blob (gros objet binaire) et blob de streaming](#parameter-type-blobs)
+ [Map](#parameter-type-map)
+ [Document](#parameter-type-document)

## String
<a name="parameter-type-string"></a>

Les paramètres de chaîne peuvent contenir des caractères alphanumériques, des symboles et des espaces blancs du jeu de caractères [ASCII](https://wikipedia.org/wiki/ASCII). Les chaînes qui contiennent des espaces blancs doivent être placées entre guillemets. Nous vous recommandons de ne pas utiliser de symboles ni d’espaces blancs autres que le caractère d’espace standard et de respecter les [règles de guillemets](cli-usage-parameters-quoting-strings.md) de votre terminal pour éviter des résultats inattendus.

Certains paramètres de chaîne peuvent accepter les données binaires d’un fichier. Consultez [Fichiers binaires](cli-usage-parameters-file.md#cli-usage-parameters-file-binary) pour voir un exemple. 

## Horodatage
<a name="parameter-type-timestamp"></a>

Les horodatages sont mis en forme selon la norme [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html). Ceux-ci sont souvent appelés paramètres « `DateTime` » ou `Date` « ». 

```
$ aws ec2 describe-spot-price-history --start-time 2014-10-13T19:00:00Z
```

Les formats acceptables sont les suivants :
+ *YYYY*- *MM* - *DD* T *hh* : *mm* : *ss.sss**TZD (UTC)*, par exemple, 2014-10-01T 20:30:00.000 Z
+ *YYYY*- *MM* - *DD* T *hh* : *mm* : *ss.sss**TZD (with offset)*, par exemple, 2014-10-01T 12:30:00.000-08:00
+ *YYYY*- *MM* -*DD*, par exemple, 2014-10-01
+ Horaire Unix en secondes, par exemple 1412195400. Ceci est parfois appelé [Heure d’époque Unix](https://wikipedia.org/wiki/Unix_time) et représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit, UTC.

Par défaut, la AWS CLI version 2 traduit toutes les DateTime valeurs de ***réponse*** au format ISO 8601.

Vous pouvez définir le format d’horodatage à l’aide du paramètre de fichier `cli\$1timestamp\$1format`.

## List
<a name="parameter-type-list"></a>

Une ou plusieurs chaînes séparées par des espaces. Si l’un des éléments de chaîne contient un espace, vous devez mettre cet élément entre guillemets. Respectez les [règles de guillemets](cli-usage-parameters-quoting-strings.md) de votre terminal pour éviter des résultats inattendus.

```
$ aws ec2 describe-spot-price-history --instance-types m1.xlarge m1.medium
```

## Booléen
<a name="parameter-type-boolean"></a>

Indicateur binaire qui active ou désactive une option. Par exemple, `ec2 describe-spot-price-history` comporte un paramètre d’essai booléen `--dry-run` qui, lorsqu’il est spécifié, valide la demande sur le service sans réellement exécuter la requête. 

```
$ aws ec2 describe-spot-price-history --dry-run
```

La sortie indique si la commande était ou non correctement mise en forme. Cette commande inclut également une version `--no-dry-run` du paramètre qui peut être utilisée pour indiquer de manière explicite que la commande doit s’exécuter normalement. Il n’est pas nécessaire de l’inclure puisqu’il s’agit du comportement par défaut. 

## Entier
<a name="parameter-type-integer"></a>

Nombre entier non signé.

```
$ aws ec2 describe-spot-price-history --max-items 5
```

## Binaire/blob (gros objet binaire) et blob de streaming
<a name="parameter-type-blobs"></a>

Dans le AWS CLI, vous pouvez transmettre une valeur binaire sous forme de chaîne directement sur la ligne de commande. Il existe deux types de blobs :
+ [Blob](#parameter-type-blob)
+ [Blob de streaming](#parameter-type-streaming-blob)

### Blob
<a name="parameter-type-blob"></a>

Pour transmettre une valeur à un paramètre de type `blob`, vous devez spécifier un chemin d’accès à un fichier local contenant les données binaires à l’aide du préfixe `fileb://`. Les fichiers référencés à l’aide du préfixe `fileb://` sont toujours traités comme des fichiers binaires bruts non codés. Le chemin spécifié est interprété comme étant relatif au répertoire de travail actuel. Par exemple, le paramètre `--plaintext` pour `aws kms encrypt` est un objet blob.

```
$ aws kms encrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --plaintext fileb://ExamplePlaintextFile \
    --output text \
    --query CiphertextBlob | base64 \
    --decode > ExampleEncryptedFile
```

**Note**  
Pour des raisons de rétrocompatibilité, vous pouvez utiliser le préfixe `file://`. Deux formats sont utilisés en fonction de l’option de ligne de commande `cli\$1binary\$1format` ou `--cli-binary-format` du paramètre de fichier :  
Par défaut pour la AWS CLI version 2. Si la valeur du paramètre est `base64`, les fichiers référencés à l’aide du préfixe `file://` sont traités comme du texte codé en base64. 
Par défaut pour la AWS CLI version 1. Si la valeur du paramètre est `raw-in-base64-out`, les fichiers référencés à l’aide du préfixe `file://` sont lus sous forme de texte, puis l’ AWS CLI essaie de les coder en binaire.
Pour plus d’informations, consultez le paramètre de fichier `cli\$1binary\$1format` ou l’option de ligne de commande `--cli-binary-format`.

### Blob de streaming
<a name="parameter-type-streaming-blob"></a>

Les blobs de streaming tels que `aws cloudsearchdomain upload-documents` n’utilisent pas de préfixes. Au lieu de cela, les paramètres du blob de streaming sont formatés à l’aide du chemin de fichier direct. L’exemple suivant utilise le chemin de fichier direct `document-batch.json` pour la commande `aws cloudsearchdomain upload-documents` :

```
$ aws cloudsearchdomain upload-documents \
    --endpoint-url https://doc-my-domain.us-west-1.cloudsearch.amazonaws.com \
    --content-type application/json \
    --documents document-batch.json
```

## Map
<a name="parameter-type-map"></a>

Ensemble de paires clés-valeurs spécifiées en JSON ou à l’aide de la [syntaxe raccourcie](cli-usage-shorthand.md) de l’interface de ligne de commande. L’exemple JSON suivant lit un élément d’un tableau Amazon DynamoDB nommé *my-table* avec un paramètre map, `--key`. Le paramètre spécifie la clé primaire nommée *id* avec la valeur numérique *1* dans une structure JSON imbriquée.

Pour une utilisation plus avancée du JSON dans une ligne de commande, pensez à utiliser un processeur JSON en ligne de commande`jq`, par exemple pour créer des chaînes JSON. Pour plus d'informations sur`jq`, consultez le [référentiel jq](http://stedolan.github.io/jq/) sur *GitHub*.

```
$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'

{
    "Item": {
        "name": {
            "S": "John"
        },
        "id": {
            "N": "1"
        }
    }
}
```

## Document
<a name="parameter-type-document"></a>

**Note**  
La [syntaxe raccourcie](cli-usage-shorthand.md) n’est pas compatible avec les types de documents.

Les types de documents sont utilisés pour envoyer des données sans qu’il soit nécessaire d’intégrer du JSON dans des chaînes. Le type de document permet aux services de fournir des schémas arbitraires afin que vous puissiez utiliser des types de données plus flexibles. 

Cela permet d’envoyer des données JSON sans avoir à échapper des valeurs. Par exemple, au lieu d’utiliser l’entrée JSON échappée suivante :

```
{"document": "{\"key\":true}"}
```

Vous pouvez utiliser le type de document suivant :

```
{"document": {"key": true}}
```

### Valeurs valides pour les types de documents
<a name="parameter-type-document-valid"></a>

En raison de la flexibilité des types de documents, il existe plusieurs types de valeurs valides. Les valeurs valides sont les suivantes :

**String**  

```
--option '"value"'
```

**Number**  

```
--option 123
--option 123.456
```

**Booléen**  

```
--option true
```

**Null**  

```
--option null
```

**Tableau**  

```
--option '["value1", "value2", "value3"]'
--option '["value", 1, true, null, ["key1", 2.34], {"key2": "value2"}]'
```

**Objet**  

```
--option '{"key": "value"}'
--option '{"key1": "value1", "key2": 123, "key3": true, "key4": null, "key5": ["value3", "value4"], "key6": {"value5": "value6"}'
```

# Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI
<a name="cli-usage-parameters-quoting-strings"></a>

Il existe principalement deux manières d’utiliser des guillemets simples et doubles dans l’ AWS CLI.
+ [Utilisation de guillemets autour des chaînes contenant des espaces blancs](#cli-usage-parameters-quoting-strings-around)
+ [Utilisation de guillemets à l’intérieur des chaînes](#cli-usage-parameters-quoting-strings-containing)

## Utilisation de guillemets autour des chaînes contenant des espaces blancs
<a name="cli-usage-parameters-quoting-strings-around"></a>

Les noms des paramètres et leurs valeurs sont séparés par des espaces sur la ligne de commande. Si une valeur de chaîne contient un espace intégré, vous devez entourer la chaîne entière de guillemets pour éviter que l' AWS CLI espace ne soit mal interprété comme un séparateur entre la valeur et le nom du paramètre suivant. Le type de guillemet que vous utilisez dépend du système d'exploitation AWS CLI sur lequel vous l'exécutez.

------
#### [ Linux and macOS ]

Utilisation des guillemets simples `' '` 

```
$ aws ec2 create-key-pair --key-name 'my key pair'
```

Pour plus d’informations sur l’utilisation des guillemets, consultez la documentation utilisateur de votre shell préféré.

------
#### [ PowerShell ]

**Guillemets simples (recommandé)**

Les guillemets simples `' '` sont appelées chaînes `verbatim`. La chaîne est transmise à la commande exactement telle que vous la tapez, ce qui signifie que PowerShell les variables ne seront pas transmises.

```
PS C:\> aws ec2 create-key-pair --key-name 'my key pair'
```

**Guillemets doubles**

Les guillemets doubles `" "` sont appelés chaînes `expandable`. Les variables peuvent être transmises sous forme de chaînes extensibles.

```
PS C:\> aws ec2 create-key-pair --key-name "my key pair"
```

Pour plus d'informations sur l'utilisation des guillemets, voir [À propos des règles de citation](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7) dans *Microsoft PowerShell Docs*.

------
#### [ Windows command prompt ]

Utilisation des guillemets doubles `" "`.

```
C:\> aws ec2 create-key-pair --key-name "my key pair"
```

------

Si vous le souhaitez, vous pouvez séparer le nom de paramètre de la valeur par un signe égal `=` au lieu d’un espace. Cela n’est généralement nécessaire que si la valeur du paramètre commence par un trait d’union.

```
$ aws ec2 delete-key-pair --key-name=-mykey
```

## Utilisation de guillemets à l’intérieur des chaînes
<a name="cli-usage-parameters-quoting-strings-containing"></a>

Les chaînes peuvent contenir des guillemets, et votre shell peut avoir besoin de guillemets pour fonctionner correctement. L’un des types de valeurs de paramètre courants est une chaîne JSON. Ceci est complexe, car il inclut des espaces et des guillemets doubles `" "` autour du nom et de la valeur de chaque élément dans la structure JSON. La manière dont vous entrez des paramètres au format JSON sur la ligne de commande varie selon le système d’exploitation. 

Pour une utilisation plus avancée du JSON dans la ligne de commande, pensez à utiliser un processeur JSON de ligne de commande, par exemple `jq`, pour créer des chaînes JSON. Pour plus d'informations sur`jq`, consultez le [référentiel jq](http://stedolan.github.io/jq/) sur *GitHub*.

------
#### [ Linux and macOS ]

Pour que Linux et macOS interprètent littéralement les chaînes, utilisez des guillemets simples `' '` pour entourer la structure de données JSON, comme dans l’exemple suivant. Il n’est pas nécessaire d’échapper les guillemets doubles intégrés dans la chaîne JSON, car ils sont traités littéralement. Comme le JSON est placé entre guillemets simples, tous les guillemets simples de la chaîne devront être échappés. Cela se fait généralement en utilisant une barre oblique inverse avant le guillemet simple `\'`.

```
$ aws ec2 run-instances \
    --image-id ami-12345678 \
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

Pour plus d’informations sur l’utilisation des guillemets, consultez la documentation utilisateur de votre shell préféré.

------
#### [ PowerShell ]

Utilisez des guillemets simples `' '` ou des guillemets doubles `" "`.

**Guillemets simples (recommandé)**

Les guillemets simples `' '` sont appelées chaînes `verbatim`. La chaîne est transmise à la commande exactement telle que vous la tapez, ce qui signifie que PowerShell les variables ne seront pas transmises.

Étant donné que les structures de données JSON contiennent des guillemets doubles, nous vous recommandons d’utiliser des guillemets **simples** `' '` pour les entourer. Si vous utilisez des guillemets **simples**, il n’est pas nécessaire d’échapper les guillemets **doubles** intégrés dans la chaîne JSON. Cependant, vous devez éviter d’échapper chaque guillemet **simple** par un accent grave ``` au sein de la structure JSON.

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

**Guillemets doubles**

Les guillemets doubles `" "` sont appelés chaînes `expandable`. Les variables peuvent être transmises sous forme de chaînes extensibles.

Si vous utilisez des guillemets **doubles**, il n’est pas nécessaire d’échapper les guillemets **simples** intégrés dans la chaîne JSON. Cependant, vous devez éviter d’échapper chaque guillemet **simple** par un accent grave ``` au sein de la structure JSON, comme dans l’exemple suivant.

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"
```

Pour plus d'informations sur l'utilisation des guillemets, voir [À propos des règles de citation](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7) dans *Microsoft PowerShell Docs*.

**Avertissement**  
Avant d' PowerShell envoyer une commande au AWS CLI, il détermine si votre commande est interprétée à l'aide de règles classiques PowerShell ou entre `CommandLineToArgvW` guillemets. Lorsque PowerShell des processus l'utilisent`CommandLineToArgvW`, vous devez éviter les caractères marqués d'une barre oblique inversée`\`.  
*Pour plus d'informations sur `CommandLineToArgvW` in PowerShell, consultez [What's up with the strange treatment of guillemets and backslashes par CommandLineToArgv W](https://devblogs.microsoft.com/oldnewthing/20100917-00/?p=12833) dans *Microsoft DevBlogs*, [Everyone cite les arguments de ligne de commande de la mauvaise façon dans le](https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way) *blog Microsoft Docs*, et sur la [fonction CommandLineToArgv W](https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw#remarks) dans Microsoft Docs.*  
**Guillemets simples**  
Les guillemets simples `' '` sont appelées chaînes `verbatim`. La chaîne est transmise à la commande exactement telle que vous la tapez, ce qui signifie que PowerShell les variables ne seront pas transmises. Échappez les caractères avec une barre oblique inverse `\`.  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'
```
**Guillemets doubles**  
Les guillemets doubles `" "` sont appelés chaînes `expandable`. Les variables peuvent être transmises sous forme de chaînes `expandable`. Pour les chaînes entre guillemets, vous devez éviter d'utiliser deux fois *`\$1* pour chaque guillemet au lieu de simplement utiliser un backtick. L’accent grave échappe la barre oblique inverse, puis la barre oblique inverse est utilisée comme caractère d’échappement pour le traitement de la commande `CommandLineToArgvW`.  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`\"DeviceName`\":`\"/dev/sdb`\",`\"Ebs`\":{`\"VolumeSize`\":20,`\"DeleteOnTermination`\":false,`\"VolumeType`\":`\"standard`\"}}]"
```
**Blobs (recommandé)**  
Pour contourner les règles PowerShell de citation pour la saisie de données JSON, utilisez Blobs pour transmettre vos données JSON directement au. AWS CLI Pour plus d’informations sur les blobs, consultez [Blob](cli-usage-parameters-types.md#parameter-type-blob).

------
#### [ Windows command prompt ]

L’invite de commande Windows exige que la structure de données JSON soit placée entre guillemets doubles `" "`. De plus, pour empêcher le processeur de commandes de mal interpréter les guillemets doubles incorporés dans la structure JSON, vous devez également échapper (ajouter une barre oblique inverse `\` avant) chaque guillemet double `"` dans la structure de données JSON elle-même, comme dans l’exemple suivant. 

```
C:\> aws ec2 run-instances ^
    --image-id ami-12345678 ^
    --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"
```

Seuls les guillemets doubles les plus à l’extérieur ne sont pas placés dans une séquence d’échappement.

------

# Chargement d'un paramètre depuis un fichier dans AWS CLI
<a name="cli-usage-parameters-file"></a>

Certains paramètres attendent des noms de fichiers comme arguments, à partir desquels ils AWS CLI chargent les données. D’autres paramètres vous permettent de spécifier la valeur du paramètre sous forme de texte saisi sur la ligne de commande ou de lecture à partir d’un fichier. Qu'un fichier soit obligatoire ou facultatif, vous devez le coder correctement pour qu'ils AWS CLI puissent le comprendre. L’encodage du fichier doit correspondre aux paramètres régionaux par défaut du système de lecture. Vous pouvez déterminer cela à l’aide de la méthode `locale.getpreferredencoding()` Python.

Cette méthode permet de charger un fichier pour un paramètre unique. Pour plus d’informations sur le chargement de plusieurs paramètres avec un fichier unique, consultez [AWS CLI squelettes et fichiers d'entrée dans le AWS CLI](cli-usage-skeleton.md).

**Note**  
Par défaut, Windows PowerShell affiche le texte au format UTF-16, ce qui est en conflit avec le codage UTF-8 utilisé par les fichiers JSON et de nombreux systèmes Linux. Nous vous recommandons de l'utiliser `-Encoding ascii` avec vos PowerShell `Out-File` commandes pour vous assurer qu' AWS CLI ils peuvent lire le fichier obtenu. 

**Topics**
+ [Chargement d’un paramètre depuis un fichier](#cli-usage-parameters-file-how)
+ [Fichiers binaires](#cli-usage-parameters-file-binary)
+ [Chargement d’un fichier en tant que valeur de syntaxe raccourcie](#cli-usage-parameters-file-shorthand)

## Chargement d’un paramètre depuis un fichier
<a name="cli-usage-parameters-file-how"></a>

Il est parfois pratique de charger une valeur de paramètre à partir d’un fichier plutôt que d’essayer de la taper entièrement comme valeur de paramètre de ligne de commande, par exemple lorsque le paramètre est une chaîne JSON complexe. Pour spécifier un fichier qui contient la valeur, spécifiez une URL de fichier au format suivant :

```
file://complete/path/to/file
```
+ Les deux premières barres obliques « / » font partie de la spécification. Si le chemin d’accès requis commence par un caractère « / », le résultat contiendra trois barres obliques : `file:///folder/file`.
+ L’URL fournit le chemin d’accès au fichier qui contient le contenu effectif du paramètre. 
+ Lors de l’utilisation de fichiers contenant des espaces ou des caractères spéciaux, suivez les [règles en matière de guillemets](cli-usage-parameters-quoting-strings.md) pour votre terminal. 

Les chemins de fichiers des exemples suivants sont interprétés comme étant relatifs au répertoire de travail actuel.

------
#### [ Linux or macOS ]

```
// Read from a file in the current directory
$ aws ec2 describe-instances --filters file://filter.json

// Read from a file in /tmp
$ aws ec2 describe-instances --filters file:///tmp/filter.json

// Read from a file with a filename with whitespaces
$ aws ec2 describe-instances --filters 'file://filter content.json'
```

------
#### [ Windows command prompt ]

```
// Read from a file in C:\temp
C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json

// Read from a file with a filename with whitespaces
C:\> aws ec2 describe-instances --filters "file://C:\temp\filter content.json"
```

------

L’option de préfixe `file://` prend en charge les extensions de style Unix, dont « `~/` », « `./` » et « `../` ». Sous Windows, l’expression « `~/` » s’étend à votre répertoire utilisateur, stocké dans la variable d’environnement `%USERPROFILE%`. Par exemple, sous Windows 10, un répertoire utilisateur figure généralement sous `%USERPROFILE%`.

Les documents JSON qui sont intégrés en tant que valeur d’un autre document JSON doivent toujours inclure une séquence d’échappement.

```
$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json
```

**attributes.json**

```
{
  "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"
}
```

## Fichiers binaires
<a name="cli-usage-parameters-file-binary"></a>

Pour les commandes qui acceptent des données binaires comme paramètre, spécifiez que les données sont un contenu binaire à l’aide du préfixe `fileb://`. Les commandes qui acceptent des données binaires sont les suivantes : 
+  Paramètre **`aws ec2 run-instances:`** `--user-data`. 
+  Paramètre **`aws s3api put-object:`** `--sse-customer-key`. 
+  Paramètre **`aws kms decrypt:`** `--ciphertext-blob`. 

L’exemple suivant génère une clé AES binaire 256 bits à l’aide d’un outil de ligne de commande Linux, puis la fournit à Amazon S3 pour chiffrer un fichier chargé côté serveur. 

```
$ dd if=/dev/urandom bs=1 count=32 > sse.key
32+0 records in
32+0 records out
32 bytes (32 B) copied, 0.000164441 s, 195 kB/s
$ aws s3api put-object \
    --bucket amzn-s3-demo-bucket \
    --key test.txt \
    --body test.txt \
    --sse-customer-key fileb://sse.key \
    --sse-customer-algorithm AES256
{
    "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==",
    "SSECustomerAlgorithm": "AES256",
    "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\""
}
```

Pour obtenir un autre exemple faisant référence à un fichier contenant des paramètres au format JSON, consultez [Attachement d’une politique gérée par IAM à un utilisateur](cli-services-iam.md#cli-services-iam-policy). 

## Chargement d’un fichier en tant que valeur de syntaxe raccourcie
<a name="cli-usage-parameters-file-shorthand"></a>

Lors de l’utilisation d’une syntaxe raccourcie dans laquelle une valeur est grande ou complexe, il est souvent plus facile de la charger dans un fichier en tant que valeur. Pour charger un fichier en tant que valeur de syntaxe raccourcie, le formatage changera légèrement. Au lieu de `key=value`, vous utiliserez l’opérateur `@=` au lieu de l’opérateur `=`. Le code `@=` signifie à l’ AWS CLI que la valeur doit être lue comme un chemin de fichier et non comme une chaîne. L’exemple suivant montre une paire clé-valeur en train de charger un fichier pour sa valeur.

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

L’exemple suivant montre comment charger un fichier de certificat pour la commande `aws rolesanywhere create-trust-anchor`.

```
$ aws rolesanywhere create-trust-anchor --name TrustAnchor \
    --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE"  \ 
    --enabled
```

Pour plus d’informations sur la syntaxe raccourcie, consultez [En utilisant la syntaxe abrégée dans le AWS CLI](cli-usage-shorthand.md).

# AWS CLI squelettes et fichiers d'entrée dans le AWS CLI
<a name="cli-usage-skeleton"></a>

La plupart des AWS CLI commandes acceptent d'importer des entrées de paramètres à partir d'un fichier. Ces modèles peuvent être générés à l’aide de l’option `generate-cli-skeleton`, puis importés à l’aide des paramètres `--cli-input-json`  et `--cli-input-yaml`.

**Topics**
+ [À propos des AWS CLI squelettes et des fichiers d'entrée](#cli-usage-skeleton-about)
+ [Génération et importation d’un squelette de commande](#cli-usage-skeleton-generate)
+ [Combinaison de fichiers d’entrée et de paramètres de ligne de commande](#cli-usage-skeleton-combine)

## À propos des AWS CLI squelettes et des fichiers d'entrée
<a name="cli-usage-skeleton-about"></a>

La plupart des commandes AWS Command Line Interface (AWS CLI) permettent d'accepter les entrées de paramètres d'un fichier à l'aide du `--cli-input-yaml` paramètre s `--cli-input-json` et.

Ces mêmes commandes utilisent le paramètre `--generate-cli-skeleton` pour générer un fichier soit au format JSON, soit au format YAML, avec tous les paramètres que vous pouvez modifier et renseigner. Vous pouvez ensuite exécuter la commande avec le paramètre `--cli-input-json` ou `--cli-input-yaml` et pointer vers le fichier renseigné.

**Important**  
Les AWS CLI commandes personnalisées, telles que les , ne prennent en charge ni les paramètres `--generate-cli-skeleton` or ni `--cli-input-json` les `--cli-input-yaml` paramètres décrits dans cette rubrique. Pour vérifier si une commande spécifique prend en charge ces paramètres, exécutez la [`help`commande](cli-usage-help.md#cli-usage-help-command) que vous souhaitez utiliser ou reportez-vous au [version 2 du guide de référence](https://docs.aws.amazon.com/cli/latest/reference/index.html).

`--generate-cli-skeleton` génère et affiche un modèle de paramètres que vous pouvez personnaliser et utiliser comme entrée dans une commande. Le modèle généré inclut tous les paramètres pris en charge par la commande.

Le paramètre `--generate-cli-skeleton` accepte l’une des valeurs suivantes :
+ `input` : le modèle généré inclut tous les paramètres d’entrée formatés en JSON. C’est la valeur par défaut.
+ `yaml-input` : le modèle généré inclut tous les paramètres d’entrée formatés en YAML.
+ `output` : le modèle généré inclut tous les paramètres de sortie formatés en JSON. Vous ne pouvez actuellement pas demander les paramètres de sortie au format YAML. 

Comme il AWS CLI s'agit essentiellement d'une « enveloppe » autour de l'API du service, le fichier squelette s'attend à ce que vous référenciez tous les paramètres par leurs noms de paramètres d'API sous-jacents. Il est probablement différent du nom du AWS CLI paramètre. Par exemple, un AWS CLI paramètre nommé `user-name` peut être mappé au paramètre d'API du AWS service nommé `UserName` (notez la modification des majuscules et l'absence du tiret). Nous vous recommandons d’utiliser l’option `--generate-cli-skeleton` pour générer le modèle avec les noms de paramètres « corrects » afin d’éviter des erreurs. Vous pouvez également consulter le Guide de référence des API pour le service afin de connaître le nom des paramètres attendus. Vous pouvez supprimer dans le modèle tous les paramètres qui ne sont pas obligatoires et pour lesquels vous ne souhaitez pas fournir de valeur.

Par exemple, si vous exécutez la commande suivante, elle génère le modèle de paramètre pour la commande **run-instances** Amazon Elastic Compute Cloud (Amazon EC2).

------
#### [ JSON ]

L’exemple suivant montre comment générer un modèle formaté en JSON à l’aide de la valeur par défaut (`input`) pour le paramètre `--generate-cli-skeleton`.

```
$ aws ec2 run-instances --generate-cli-skeleton
```

```
{
    "DryRun": true,
    "ImageId": "",
    "MinCount": 0,
    "MaxCount": 0,
    "KeyName": "",
    "SecurityGroups": [
        ""
    ],
    "SecurityGroupIds": [
        ""
    ],
    "UserData": "",
    "InstanceType": "",
    "Placement": {
        "AvailabilityZone": "",
        "GroupName": "",
        "Tenancy": ""
    },
    "KernelId": "",
    "RamdiskId": "",
    "BlockDeviceMappings": [
        {
            "VirtualName": "",
            "DeviceName": "",
            "Ebs": {
                "SnapshotId": "",
                "VolumeSize": 0,
                "DeleteOnTermination": true,
                "VolumeType": "",
                "Iops": 0,
                "Encrypted": true
            },
            "NoDevice": ""
        }
    ],
    "Monitoring": {
        "Enabled": true
    },
    "SubnetId": "",
    "DisableApiTermination": true,
    "InstanceInitiatedShutdownBehavior": "",
    "PrivateIpAddress": "",
    "ClientToken": "",
    "AdditionalInfo": "",
    "NetworkInterfaces": [
        {
            "NetworkInterfaceId": "",
            "DeviceIndex": 0,
            "SubnetId": "",
            "Description": "",
            "PrivateIpAddress": "",
            "Groups": [
                ""
            ],
            "DeleteOnTermination": true,
            "PrivateIpAddresses": [
                {
                    "PrivateIpAddress": "",
                    "Primary": true
                }
            ],
            "SecondaryPrivateIpAddressCount": 0,
            "AssociatePublicIpAddress": true
        }
    ],
    "IamInstanceProfile": {
        "Arn": "",
        "Name": ""
    },
    "EbsOptimized": true
}
```

------
#### [ YAML ]

L’exemple suivant montre comment générer un modèle formaté en YAML à l’aide de la valeur `yaml-input` du paramètre `--generate-cli-skeleton`.

```
$ aws ec2 run-instances --generate-cli-skeleton yaml-input
```

```
BlockDeviceMappings:  # The block device mapping entries.
- DeviceName: ''  # The device name (for example, /dev/sdh or xvdh).
  VirtualName: '' # The virtual device name (ephemeralN).
  Ebs: # Parameters used to automatically set up Amazon EBS volumes when the instance is launched.
    DeleteOnTermination: true  # Indicates whether the EBS volume is deleted on instance termination.
    Iops: 0 # The number of I/O operations per second (IOPS) that the volume supports.
    SnapshotId: '' # The ID of the snapshot.
    VolumeSize: 0 # The size of the volume, in GiB.
    VolumeType: st1 # The volume type. Valid values are: standard, io1, gp2, sc1, st1.
    Encrypted: true # Indicates whether the encryption state of an EBS volume is changed while being restored from a backing snapshot.
    KmsKeyId: '' # Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed KMS key under which the EBS volume is encrypted.
  NoDevice: '' # Suppresses the specified device included in the block device mapping of the AMI.
ImageId: '' # The ID of the AMI.
InstanceType: c4.4xlarge # The instance type. Valid values are: t1.micro, t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, t3a.nano, t3a.micro, t3a.small, t3a.medium, t3a.large, t3a.xlarge, t3a.2xlarge, m1.small, m1.medium, m1.large, m1.xlarge, m3.medium, m3.large, m3.xlarge, m3.2xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge, m2.xlarge, m2.2xlarge, m2.4xlarge, cr1.8xlarge, r3.large, r3.xlarge, r3.2xlarge, r3.4xlarge, r3.8xlarge, r4.large, r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge, r5.16xlarge, r5.24xlarge, r5.metal, r5a.large, r5a.xlarge, r5a.2xlarge, r5a.4xlarge, r5a.8xlarge, r5a.12xlarge, r5a.16xlarge, r5a.24xlarge, r5d.large, r5d.xlarge, r5d.2xlarge, r5d.4xlarge, r5d.8xlarge, r5d.12xlarge, r5d.16xlarge, r5d.24xlarge, r5d.metal, r5ad.large, r5ad.xlarge, r5ad.2xlarge, r5ad.4xlarge, r5ad.8xlarge, r5ad.12xlarge, r5ad.16xlarge, r5ad.24xlarge, x1.16xlarge, x1.32xlarge, x1e.xlarge, x1e.2xlarge, x1e.4xlarge, x1e.8xlarge, x1e.16xlarge, x1e.32xlarge, i2.xlarge, i2.2xlarge, i2.4xlarge, i2.8xlarge, i3.large, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, i3.16xlarge, i3.metal, i3en.large, i3en.xlarge, i3en.2xlarge, i3en.3xlarge, i3en.6xlarge, i3en.12xlarge, i3en.24xlarge, i3en.metal, hi1.4xlarge, hs1.8xlarge, c1.medium, c1.xlarge, c3.large, c3.xlarge, c3.2xlarge, c3.4xlarge, c3.8xlarge, c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, c5.12xlarge, c5.18xlarge, c5.24xlarge, c5.metal, c5d.large, c5d.xlarge, c5d.2xlarge, c5d.4xlarge, c5d.9xlarge, c5d.18xlarge, c5n.large, c5n.xlarge, c5n.2xlarge, c5n.4xlarge, c5n.9xlarge, c5n.18xlarge, cc1.4xlarge, cc2.8xlarge, g2.2xlarge, g2.8xlarge, g3.4xlarge, g3.8xlarge, g3.16xlarge, g3s.xlarge, g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, cg1.4xlarge, p2.xlarge, p2.8xlarge, p2.16xlarge, p3.2xlarge, p3.8xlarge, p3.16xlarge, p3dn.24xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge, f1.2xlarge, f1.4xlarge, f1.16xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge, m5.24xlarge, m5.metal, m5a.large, m5a.xlarge, m5a.2xlarge, m5a.4xlarge, m5a.8xlarge, m5a.12xlarge, m5a.16xlarge, m5a.24xlarge, m5d.large, m5d.xlarge, m5d.2xlarge, m5d.4xlarge, m5d.8xlarge, m5d.12xlarge, m5d.16xlarge, m5d.24xlarge, m5d.metal, m5ad.large, m5ad.xlarge, m5ad.2xlarge, m5ad.4xlarge, m5ad.8xlarge, m5ad.12xlarge, m5ad.16xlarge, m5ad.24xlarge, h1.2xlarge, h1.4xlarge, h1.8xlarge, h1.16xlarge, z1d.large, z1d.xlarge, z1d.2xlarge, z1d.3xlarge, z1d.6xlarge, z1d.12xlarge, z1d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal, a1.medium, a1.large, a1.xlarge, a1.2xlarge, a1.4xlarge, a1.metal, m5dn.large, m5dn.xlarge, m5dn.2xlarge, m5dn.4xlarge, m5dn.8xlarge, m5dn.12xlarge, m5dn.16xlarge, m5dn.24xlarge, m5n.large, m5n.xlarge, m5n.2xlarge, m5n.4xlarge, m5n.8xlarge, m5n.12xlarge, m5n.16xlarge, m5n.24xlarge, r5dn.large, r5dn.xlarge, r5dn.2xlarge, r5dn.4xlarge, r5dn.8xlarge, r5dn.12xlarge, r5dn.16xlarge, r5dn.24xlarge, r5n.large, r5n.xlarge, r5n.2xlarge, r5n.4xlarge, r5n.8xlarge, r5n.12xlarge, r5n.16xlarge, r5n.24xlarge.
Ipv6AddressCount: 0 # [EC2-VPC] The number of IPv6 addresses to associate with the primary network interface.
Ipv6Addresses: # [EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.
- Ipv6Address: ''  # The IPv6 address.
KernelId: '' # The ID of the kernel.
KeyName: '' # The name of the key pair.
MaxCount: 0 # [REQUIRED] The maximum number of instances to launch.
MinCount: 0 # [REQUIRED] The minimum number of instances to launch.
Monitoring: # Specifies whether detailed monitoring is enabled for the instance.
  Enabled: true  # [REQUIRED] Indicates whether detailed monitoring is enabled.
Placement: # The placement for the instance.
  AvailabilityZone: ''  # The Availability Zone of the instance.
  Affinity: '' # The affinity setting for the instance on the Dedicated Host.
  GroupName: '' # The name of the placement group the instance is in.
  PartitionNumber: 0 # The number of the partition the instance is in.
  HostId: '' # The ID of the Dedicated Host on which the instance resides.
  Tenancy: dedicated # The tenancy of the instance (if the instance is running in a VPC). Valid values are: default, dedicated, host.
  SpreadDomain: '' # Reserved for future use.
RamdiskId: '' # The ID of the RAM disk to select.
SecurityGroupIds: # The IDs of the security groups.
- ''
SecurityGroups: # [default VPC] The names of the security groups.
- ''
SubnetId: '' # [EC2-VPC] The ID of the subnet to launch the instance into.
UserData: '' # The user data to make available to the instance.
AdditionalInfo: '' # Reserved.
ClientToken: '' # Unique, case-sensitive identifier you provide to ensure the idempotency of the request.
DisableApiTermination: true # If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.
DryRun: true # Checks whether you have the required permissions for the action, without actually making the request, and provides an error response.
EbsOptimized: true # Indicates whether the instance is optimized for Amazon EBS I/O.
IamInstanceProfile: # The IAM instance profile.
  Arn: ''  # The Amazon Resource Name (ARN) of the instance profile.
  Name: '' # The name of the instance profile.
InstanceInitiatedShutdownBehavior: stop # Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). Valid values are: stop, terminate.
NetworkInterfaces: # The network interfaces to associate with the instance.
- AssociatePublicIpAddress: true  # Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.
  DeleteOnTermination: true # If set to true, the interface is deleted when the instance is terminated.
  Description: '' # The description of the network interface.
  DeviceIndex: 0 # The position of the network interface in the attachment order.
  Groups: # The IDs of the security groups for the network interface.
  - ''
  Ipv6AddressCount: 0 # A number of IPv6 addresses to assign to the network interface.
  Ipv6Addresses: # One or more IPv6 addresses to assign to the network interface.
  - Ipv6Address: ''  # The IPv6 address.
  NetworkInterfaceId: '' # The ID of the network interface.
  PrivateIpAddress: '' # The private IPv4 address of the network interface.
  PrivateIpAddresses: # One or more private IPv4 addresses to assign to the network interface.
  - Primary: true  # Indicates whether the private IPv4 address is the primary private IPv4 address.
    PrivateIpAddress: '' # The private IPv4 addresses.
  SecondaryPrivateIpAddressCount: 0 # The number of secondary private IPv4 addresses.
  SubnetId: '' # The ID of the subnet associated with the network interface.
  InterfaceType: '' # The type of network interface.
PrivateIpAddress: '' # [EC2-VPC] The primary IPv4 address.
ElasticGpuSpecification: # An elastic GPU to associate with the instance.
- Type: ''  # [REQUIRED] The type of Elastic Graphics accelerator.
ElasticInferenceAccelerators: # An elastic inference accelerator to associate with the instance.
- Type: ''  # [REQUIRED]  The type of elastic inference accelerator.
TagSpecifications: # The tags to apply to the resources during launch.
- ResourceType: network-interface  # The type of resource to tag. Valid values are: client-vpn-endpoint, customer-gateway, dedicated-host, dhcp-options, elastic-ip, fleet, fpga-image, host-reservation, image, instance, internet-gateway, launch-template, natgateway, network-acl, network-interface, reserved-instances, route-table, security-group, snapshot, spot-instances-request, subnet, traffic-mirror-filter, traffic-mirror-session, traffic-mirror-target, transit-gateway, transit-gateway-attachment, transit-gateway-route-table, volume, vpc, vpc-peering-connection, vpn-connection, vpn-gateway.
  Tags: # The tags to apply to the resource.
  - Key: ''  # The key of the tag.
    Value: '' # The value of the tag.
LaunchTemplate: # The launch template to use to launch the instances.
  LaunchTemplateId: ''  # The ID of the launch template.
  LaunchTemplateName: '' # The name of the launch template.
  Version: '' # The version number of the launch template.
InstanceMarketOptions: # The market (purchasing) option for the instances.
  MarketType: spot  # The market type. Valid values are: spot.
  SpotOptions: # The options for Spot Instances.
    MaxPrice: ''  # The maximum hourly price you're willing to pay for the Spot Instances.
    SpotInstanceType: one-time # The Spot Instance request type. Valid values are: one-time, persistent.
    BlockDurationMinutes: 0 # The required duration for the Spot Instances (also known as Spot blocks), in minutes.
    ValidUntil: 1970-01-01 00:00:00 # The end date of the request.
    InstanceInterruptionBehavior: terminate # The behavior when a Spot Instance is interrupted. Valid values are: hibernate, stop, terminate.
CreditSpecification: # The credit option for CPU usage of the T2 or T3 instance.
  CpuCredits: ''  # [REQUIRED] The credit option for CPU usage of a T2 or T3 instance.
CpuOptions: # The CPU options for the instance.
  CoreCount: 0  # The number of CPU cores for the instance.
  ThreadsPerCore: 0 # The number of threads per CPU core.
CapacityReservationSpecification: # Information about the Capacity Reservation targeting option.
  CapacityReservationPreference: none  # Indicates the instance's Capacity Reservation preferences. Valid values are: open, none.
  CapacityReservationTarget: # Information about the target Capacity Reservation.
    CapacityReservationId: ''  # The ID of the Capacity Reservation.
HibernationOptions: # Indicates whether an instance is enabled for hibernation.
  Configured: true  # If you set this parameter to true, your instance is enabled for hibernation.
LicenseSpecifications: # The license configurations.
- LicenseConfigurationArn: ''  # The Amazon Resource Name (ARN) of the license configuration.
```

------

## Génération et importation d’un squelette de commande
<a name="cli-usage-skeleton-generate"></a>

**Pour générer et utiliser un fichier de squelette de paramètre**

1. Exécutez la commande avec le paramètre `--generate-cli-skeleton` pour produire  soit un format JSON,  soit un format YAML, et diriger la sortie vers un fichier pour l’enregistrer.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton yaml-input > ec2runinst.yaml
   ```

------

1. Ouvrez le fichier de squelette de paramètre dans votre éditeur de texte et supprimez les paramètres dont vous n’avez pas besoin. Par exemple, vous pouvez supprimer le modèle comme suit. Assurez-vous que le fichier est toujours dans un format JSON ou YAML valide après avoir supprimé les éléments dont vous n’avez pas besoin.

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "",
       "KeyName": "",
       "SecurityGroups": [
           ""
       ],
       "InstanceType": "",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------
#### [ YAML ]

   ```
   DryRun: true
   ImageId: ''
   KeyName: ''
   SecurityGroups:
   - ''
   InstanceType:
   Monitoring: 
     Enabled: true
   ```

------

   Dans cet exemple, nous laissons le paramètre `DryRun` défini sur `true` pour utiliser la fonctionnalité d’essai Amazon EC2. Cette fonctionnalité vous permet de tester la commande en toute sécurité sans créer ou modifier de ressources. 

1. Remplissez les valeurs restantes avec les valeurs appropriées pour votre scénario. Dans cet exemple, nous fournissons le type d’instance, le nom de la clé, le groupe de sécurité et l’identifiant de l’AMI à utiliser. Cet exemple suppose la valeur par défaut Région AWS. L’AMI `ami-dfc39aef` est une image Amazon Linux 64 bits hébergée dans la région `us-west-2`. Si vous utilisez une autre région, vous devez [identifier le bon ID d’AMI à utiliser](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------
#### [ YAML ]

   ```
   DryRun: true
   ImageId: 'ami-dfc39aef'
   KeyName: 'mykey'
   SecurityGroups:
   - 'my-sg'
   InstanceType: 't2.micro'
   Monitoring: 
     Enabled: true
   ```

------

1. Exécutez la commande avec les paramètres complétés en passant le fichier de modèle terminé soit au paramètre `--cli-input-json`, soit au paramètre --`cli-input-yaml` à l’aide du préfixe `file://`. AWS CLI Interprète le chemin comme étant relatif à votre répertoire de travail actuel. L'exemple suivant AWS CLI recherche le fichier dans le répertoire de travail actuel.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json
   ```

   ```
   A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml
   ```

   ```
   A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
   ```

------

   L’erreur d’essai indique que le fichier JSON ou YAML est correctement mis en forme et que les valeurs des paramètres sont valides. Si d’autres problèmes sont signalés dans la sortie, corrigez-les et répétez l’étape précédente jusqu’à ce que le message `Request would have succeeded` s’affiche. 

1. Vous pouvez maintenant définir le paramètre `DryRun` comme `false` pour désactiver l’essai.

------
#### [ JSON ]

   ```
   {
       "DryRun": false,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------
#### [ YAML ]

   ```
   DryRun: false
   ImageId: 'ami-dfc39aef'
   KeyName: 'mykey'
   SecurityGroups:
   - 'my-sg'
   InstanceType: 't2.micro'
   Monitoring: 
     Enabled: true
   ```

------

1. Quand vous exécutez la commande, `run-instances` lance réellement une instance EC2 et affiche les détails générés par le lancement réussi. Le format de la sortie est contrôlé par le paramètre `--output`, séparément du format de votre modèle de paramètre d’entrée.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
   ```

   ```
   {
       "OwnerId": "123456789012",
       "ReservationId": "r-d94a2b1",
       "Groups": [],
       "Instances": [
   ...
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --output yaml
   ```

   ```
   OwnerId: '123456789012'
   ReservationId: 'r-d94a2b1',
   Groups":
   - ''
   Instances:
   ...
   ```

------

## Combinaison de fichiers d’entrée et de paramètres de ligne de commande
<a name="cli-usage-skeleton-combine"></a>

Un fichier d’entrée peut être utilisé pour tous les paramètres ou peut être combiné avec les paramètres spécifiés dans l’ AWS CLI. Vous pouvez utiliser cette fonctionnalité pour les paramètres que vous réutilisez fréquemment dans un fichier d’entrée, tout en conservant vos paramètres individuels dans la commande elle-même.

Les exemples `aws ec2 run-instances` suivants combinent l’utilisation d’un fichier d’entrée et de paramètres. Nous indiquons le type d'instance, le nom de clé, le groupe de sécurité, l'identifiant de l'Amazon Machine Image (AMI) à utiliser et nous supposons qu'il s'agit de l'image par défaut Région AWS. L’AMI `ami-dfc39aef` est une image Amazon Linux 64 bits hébergée dans la région `us-west-2`. Si vous utilisez une autre région, vous devez [identifier le bon ID d’AMI à utiliser](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

Contenu du fichier JSON :

```
{
    "ImageId": "ami-dfc39aef",
    "KeyName": "mykey",
    "SecurityGroups": [
        "my-sg"
    ],
    "InstanceType": "t2.micro",
    "Monitoring": {
        "Enabled": true
    }
}
```

------
#### [ YAML ]

Contenu du fichier YAML :

```
ImageId: 'ami-dfc39aef'
KeyName: 'mykey'
SecurityGroups:
- 'my-sg'
InstanceType: 't2.micro'
Monitoring: 
  Enabled: true
```

------

L’exemple suivant utilise le fichier d’entrée en combinaison avec le paramètre `--dry-run` pour exécuter un essai de la commande afin de confirmer que vous disposez des autorisations requises et que vous avez renseigné le fichier avec des valeurs valides.

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --dry-run
```

```
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
```

------
#### [ YAML ]

```
$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --dry-run
```

```
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
```

------

L’exemple suivant utilise ensuite le même fichier d’entrée, mais avec le paramètre `--no-dry-run` afin d’exécuter la commande dans son intégralité.

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --no-dry-run --output json
```

```
{
    "OwnerId": "123456789012",
    "ReservationId": "r-d94a2b1",
    "Groups": [],
    "Instances": [
...
```

------
#### [ YAML ]

```
$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --no-dry-run --output yaml
```

```
OwnerId: '123456789012'
ReservationId: 'r-d94a2b1',
Groups":
- ''
Instances:
...
```

------

# En utilisant la syntaxe abrégée dans le AWS CLI
<a name="cli-usage-shorthand"></a>

Le AWS Command Line Interface (AWS CLI) peut accepter plusieurs de ses paramètres d'option au format JSON. Toutefois, il peut être fastidieux de saisir de longues listes ou structures JSON sur la ligne de commande. Pour vous faciliter la tâche, il prend AWS CLI également en charge une syntaxe abrégée qui permet une représentation plus simple des paramètres de vos options qu'en utilisant le format JSON complet.

**Topics**
+ [Paramètres de structure avec paires clé-valeur](#shorthand-structure-parameters)
+ [Chargement d’un fichier en tant que valeur de syntaxe raccourcie](#shorthand-files)
+ [En utilisant une syntaxe abrégée avec le AWS CLI](#shorthand-list-parameters)

## Paramètres de structure avec paires clé-valeur
<a name="shorthand-structure-parameters"></a>

La syntaxe abrégée utilisée dans le AWS CLI permet aux utilisateurs de saisir plus facilement des paramètres plats (structures non imbriquées). Le format est une liste séparée par des virgules des paires clé-valeur. Veillez à utiliser les règles de [guillemets](cli-usage-parameters-quoting-strings.md) et d’échappement adaptées à votre terminal, car les syntaxes raccourcies sont des chaînes.

------
#### [ Linux or macOS ]

```
--option key1=value1,key2=value2,key3=value3
```

Cela équivaut à l’exemple suivant, au format JSON.

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------
#### [ Windows ]

```
--option "key1=value1,key2=value2,key3=value3"
```

Cela équivaut à l’exemple suivant, au format JSON.

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------

Il ne doit y avoir aucun espace entre chaque paire clé-valeur séparée par des virgules. Voici un exemple de la commande `update-table` Amazon DynamoDB avec l’option `--provisioned-throughput` indiquée en syntaxe raccourcie.

```
$ aws dynamodb update-table \
    --provisioned-throughput ReadCapacityUnits=15,WriteCapacityUnits=10 \
    --table-name MyDDBTable
```

Cela équivaut à l’exemple suivant au format JSON.

```
$ aws dynamodb update-table \
    --provisioned-throughput '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}' \
    --table-name MyDDBTable
```

## Chargement d’un fichier en tant que valeur de syntaxe raccourcie
<a name="shorthand-files"></a>

Lorsqu’une valeur est grande ou complexe, il est souvent plus facile de la charger en tant que valeur. Pour charger un fichier en tant que valeur de syntaxe raccourcie, le formatage changera légèrement. Au lieu de `key=value`, vous utiliserez l’opérateur `@=` au lieu de l’opérateur `=`. Cela `@=` signifie AWS CLI que la valeur doit être lue comme un chemin de fichier et non comme une chaîne. Lorsque vous chargez des fichiers en syntaxe raccourcie, les [règles habituelles de formatage des fichiers de l’AWS CLI](cli-usage-parameters-file.md) s’appliquent. L’exemple suivant montre une paire clé-valeur en train de charger un fichier pour sa valeur.

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

L’exemple suivant montre comment charger un fichier de certificat pour la commande `aws rolesanywhere create-trust-anchor`.

```
$ aws rolesanywhere create-trust-anchor --name TrustAnchor \
    --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE"  \ 
    --enabled
```

## En utilisant une syntaxe abrégée avec le AWS CLI
<a name="shorthand-list-parameters"></a>

Vous pouvez spécifier les paramètres d’entrée sous forme de liste de deux manières : JSON ou syntaxe raccourcie. La syntaxe raccourcie de l’ AWS CLI est conçue pour faciliter la transmission de listes comportant des nombres, des chaînes ou des structures non imbriquées. 

Le format de base est illustré ici, avec les valeurs de la liste séparées par une seule espace.

```
--option value1 value2 value3
```

Cela équivaut à l’exemple suivant au format JSON.

```
--option '[value1,value2,value3]'
```

Comme indiqué plus haut, vous pouvez utiliser une syntaxe raccourcie pour indiquer une liste de nombres, une liste de chaînes ou une liste de structures non imbriquées. Voici un exemple de commande `stop-instances` pour Amazon Elastic Compute Cloud (Amazon EC2), dans laquelle le paramètre d’entrée (liste de chaînes) de l’option `--instance-ids` est indiqué en syntaxe raccourcie.

```
$ aws ec2 stop-instances \
    --instance-ids i-1486157a i-1286157c i-ec3a7e87
```

Cela équivaut à l’exemple suivant au format JSON.

```
$ aws ec2 stop-instances \
    --instance-ids '["i-1486157a","i-1286157c","i-ec3a7e87"]'
```

L’exemple suivant montre la commande `create-tags` d’Amazon EC2, qui utilise une liste de structures non imbriquées pour l’option `--tags`. L’option `--resources` spécifie l’ID de l’instance à baliser.

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags Key=My1stTag,Value=Value1 Key=My2ndTag,Value=Value2 Key=My3rdTag,Value=Value3
```

Cela équivaut à l’exemple suivant au format JSON. Le paramètre JSON est écrit sur plusieurs lignes pour une meilleure lisibilité.

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags '[
        {"Key": "My1stTag", "Value": "Value1"},
        {"Key": "My2ndTag", "Value": "Value2"},
        {"Key": "My3rdTag", "Value": "Value3"}
    ]'
```

# Activation et utilisation des invites de commande dans AWS CLI
<a name="cli-usage-parameters-prompting"></a>

La AWS CLI version 2 peut vous demander des commandes, des paramètres et des ressources lorsque vous exécutez une `aws` commande.

**Topics**
+ [Comment ça marche](#cli-usage-auto-prompt-about)
+ [Fonctionnalités d’invite automatique](#cli-usage-auto-prompt-features)
+ [Modes d’invite automatique](#cli-usage-auto-prompt-modes)
+ [Configuration de l’invite automatique](#cli-usage-auto-prompt-configure)

## Comment ça marche
<a name="cli-usage-auto-prompt-about"></a>

Si cette option est activée, l’invite automatique vous permet d’utiliser la touche **ENTRÉE** pour terminer une commande partiellement saisie. Une fois que vous avez appuyé sur la touche **ENTRÉE**, des commandes, des paramètres et des ressources sont suggérés en fonction de ce que vous continuez à saisir. Les suggestions indiquent le nom de la commande, du paramètre ou de la ressource sur la gauche et leur description sur la droite. Pour sélectionner et utiliser une suggestion, utilisez les flèches pour mettre en évidence une ligne, puis appuyez sur la touche **ESPACE**. Lorsque vous avez fini de saisir votre commande, appuyez sur **ENTRÉE** pour l’utiliser. L’exemple suivant montre à quoi ressemble une liste suggérée à partir d’une invite automatique.

```
$ aws
> aws a
       accessanalyzer                Access Analyzer
       acm                           AWS Certificate Manager
       acm-pca                       AWS Certificate Manager Private Certificate Authority
       alexaforbusiness              Alexa For Business
       amplify                       AWS Amplify
```

## Fonctionnalités d’invite automatique
<a name="cli-usage-auto-prompt-features"></a>

L’invite automatique contient les fonctionnalités utiles suivantes :

**Panneau de documentation**  
Fournit la documentation d’aide pour la commande en cours. Pour ouvrir la documentation, appuyez sur la touche **F3**.

**Saisie automatique des commandes**  
Suggère des commandes `aws` à utiliser. Pour voir une liste, entrez partiellement la commande. L’exemple suivant recherche un service commençant par la lettre `a`.  

```
$ aws
> aws a
       accessanalyzer                Access Analyzer
       acm                           AWS Certificate Manager
       acm-pca                       AWS Certificate Manager Private Certificate Authority
       alexaforbusiness              Alexa For Business
       amplify                       AWS Amplify
```

**Saisie automatique d’un paramètre**  
Une fois qu’une commande est saisie, l’invite automatique commence à suggérer des paramètres. Les descriptions des paramètres incluent le type de valeur et une description de ce qu’est le paramètre. Les paramètres obligatoires sont répertoriés en premier et sont étiquetés comme obligatoires. L’exemple suivant montre la liste de paramètres générée par l’invite automatique pour `aws dynamodb describe-table`.  

```
$ aws dynamodb describe-table
> aws dynamodb describe-table 
                              --table-name (required)  [string] The name of the table to describe.
                               --cli-input-json         [string] Reads arguments from the JSON string provided. The JSON string follows the format provide...
                               --cli-input-yaml         [string] Reads arguments from the YAML string provided. The YAML string follows the format provide...
                               --generate-cli-skeleton  [string] Prints a JSON skeleton to standard output without sending an API request. If provided wit...
```

**Saisie automatique des ressources**  
L’invite automatique effectue des appels d’API AWS en utilisant les propriétés des ressources AWS disponibles pour suggérer des valeurs de ressources. Cela permet à l’invite automatique de suggérer d’éventuelles ressources que vous possédez lors de la saisie des paramètres. Dans l’exemple suivant, l’invite automatique affiche la liste des noms de tables lorsque vous saisissez le paramètre `--table-name` de la commande `aws dynamodb describe-table`.  

```
$ aws dynamodb describe-table
> aws dynamodb describe-table --table-name 
                                            Table1
                                            Table2
                                            Table3
```

**Saisie automatique d’une syntaxe raccourcie**  
Pour les paramètres utilisant une syntaxe raccourcie, l’invite automatique suggère les valeurs à utiliser. Dans l’exemple suivant, l’invite automatique affiche la liste de valeurs de syntaxe raccourcie pour le paramètre `--placement` de la commande `aws ec2 run-instances`.  

```
$ aws ec2 run-instances
> aws ec2 run-instances --placement 
 AvailabilityZone=      [string] The Availability Zone of the instance. If not specified, an Availability Zone wil...
 Affinity=              [string] The affinity setting for the instance on the Dedicated Host. This parameter is no...
 GroupName=             [string] The name of the placement group the instance is in.
 PartitionNumber=       [integer] The number of the partition the instance is in. Valid only if the placement grou...
```

**Saisie automatique du fichier**  
Lorsque vous remplissez des paramètres dans des commandes `aws`, la saisie automatique suggère des noms de fichiers locaux après utilisation du préfixe `file://` ou `fileb://`. Dans l’exemple suivant, l’invite automatique suggère des fichiers locaux après la saisie de `--item file://` pour la commande `aws ec2 run-instances`.  

```
$ aws ec2 run-instances
> aws ec2 run-instances --item file:// 
                         item1.txt
                         file1.json
                         file2.json
```

**Saisie automatique de région**  
Lorsque vous utilisez le paramètre global `--region`, l’invite automatique affiche la liste des régions qu’il est possible de sélectionner. Dans l’exemple suivant, l’invite automatique suggère des régions dans l’ordre alphabétique après la saisie de `--region` pour la commande `aws dynamodb list-tables`.  

```
$ aws dynamodb list-tables
> aws dynamodb list-tables --region 
                                     af-south-1
                                     ap-east-1
                                     ap-northeast-1
                                     ap-northeast-2
```

**Saisie automatique de profil**  
Lors de l’utilisation du paramètre global `--profile`, l’invite automatique affiche la liste de vos profils. Dans l’exemple suivant, l’invite automatique suggère vos profils après la saisie de `--profile` pour la commande `aws dynamodb list-tables`.  

```
$ aws dynamodb list-tables
> aws dynamodb list-tables --profile 
                                     profile1
                                     profile2
                                     profile3
```

**Recherches approximatives**  
Commandes et valeurs complètes contenant un jeu de caractères spécifique. Dans l’exemple suivant, l’invite automatique suggère des régions qui contiennent `eu` après la saisie de `--region eu` pour la commande `aws dynamodb list-tables`.  

```
$ aws dynamodb list-tables
> aws dynamodb list-tables --region west
                                         eu-west-1
                                         eu-west-2
                                         eu-west-3
                                         us-west-1
```

**History (Historique)**  
Pour afficher et exécuter les commandes précédemment utilisées en mode invite automatique, appuyez sur **CTRL \$1 R**. L’historique répertorie les commandes précédentes que vous pouvez sélectionner à l’aide des touches fléchées. Dans l’exemple suivant, l’historique du mode d’invite automatique est affiché.  

```
$ aws
> aws 
        dynamodb list-tables
        s3 ls
```

## Modes d’invite automatique
<a name="cli-usage-auto-prompt-modes"></a>

L'invite automatique pour la AWS CLI version 2 dispose de 2 modes qui peuvent être configurés :
+ **Mode complet :** utilise l’invite automatique chaque fois que vous essayez d’exécuter une commande `aws`, que vous l’appeliez manuellement à l’aide du paramètre `--cli-auto-prompt` ou que vous l’activiez définitivement. Cela inclut le fait d’appuyer sur **ENTRÉE** après la saisie d’une commande complète ou incomplète.
+ **Mode partiel :** utilise l’invite automatique si une commande est incomplète ou ne peut pas être exécutée en raison d’erreurs de validation côté client. Ce mode est particulièrement utile si vous avez des scripts ou des dossiers d’exploitation préexistants, ou si vous souhaitez uniquement être automatiquement invité à entrer des commandes que vous ne connaissez pas au lieu d’être invité à chaque commande.

## Configuration de l’invite automatique
<a name="cli-usage-auto-prompt-configure"></a>

Pour configurer l’invite automatique, vous pouvez utiliser les méthodes suivantes par ordre de priorité : 
+ Les **options de ligne de commande** activent ou désactivent l’invite automatique d’une commande unique. Utilisez `--cli-auto-prompt` pour appeler l’invite automatique et `--no-cli-auto-prompt` pour désactiver l’invite automatique.
+ Les **variables d’environnement** utilisent la variable `aws\$1cli\$1auto\$1prompt`.
+ Les **fichiers de configuration partagés** utilisent le paramètre `cli\$1auto\$1prompt`.

# Contrôle de la sortie des commandes dans le AWS CLI
<a name="cli-usage-output"></a>

Cette section décrit les différentes façons de contrôler la sortie de l’ AWS Command Line Interface (AWS CLI). La personnalisation de la AWS CLI sortie dans votre terminal peut améliorer la lisibilité, rationaliser l'automatisation des scripts et faciliter la navigation dans des ensembles de données plus volumineux.

Il AWS CLI prend en charge plusieurs [formats de sortie [`json`[`text`](cli-usage-output-format.md#text-output)](cli-usage-output-format.md#json-output)](cli-usage-output-format.md), notamment [`yaml`](cli-usage-output-format.md#yaml-output), [`off`](cli-usage-output-format.md#off-output), et [`table`](cli-usage-output-format.md#table-output). Certains services proposent une [pagination](cli-usage-pagination.md) côté serveur pour leurs données et AWS CLI fournissent leurs propres fonctionnalités côté client pour des options de pagination supplémentaires.

Enfin, il AWS CLI dispose d'un [filtrage côté serveur et côté client](cli-usage-filter.md) que vous pouvez utiliser individuellement ou ensemble pour filtrer votre sortie. AWS CLI 

**Topics**
+ [Sortie sensible](#cli-usage-output-sensitive)
+ [Options de sortie côté serveur ou côté client](#cli-usage-output-server-client)
+ [Réglage du format de sortie dans AWS CLI](cli-usage-output-format.md)
+ [Sortie d'erreur structurée dans AWS CLI](cli-usage-error-format.md)
+ [À l'aide des options de pagination du AWS CLI](cli-usage-pagination.md)
+ [Filtrage de la sortie dans AWS CLI](cli-usage-filter.md)

## Sortie sensible
<a name="cli-usage-output-sensitive"></a>

Certaines opérations AWS CLI peuvent renvoyer des informations pouvant être considérées comme sensibles, notamment des informations provenant de variables d'environnement. L’exposition de ces informations peut représenter un risque de sécurité dans certains scénarios ; par exemple, les informations peuvent être incluses dans les journaux d’intégration continue et de déploiement continu (CI/CD). Il est donc important de vérifier à quel moment vous incluez une telle sortie dans vos journaux et de supprimer la sortie lorsqu’elle n’est pas nécessaire.

Pour plus d’informations sur la protection des données sensibles, consultez [Protection des données dans le AWS CLI](data-protection.md).

Tenez compte des bonnes pratiques suivantes :
+ Envisagez d’extraire vos secrets par programmation dans un magasin de secrets, tel que AWS Secrets Manager.
+ Vérifiez le contenu de vos journaux de génération pour vous assurer qu’ils ne contiennent pas d’informations sensibles. Envisagez des approches telles que le transfert `/dev/null` ou la capture de la sortie sous forme de bash ou de PowerShell variable pour supprimer les sorties de commande. 

  Voici un exemple bash pour rediriger la sortie, mais pas les erreurs, vers `/dev/null` :

  ```
  $ aws s3 ls > /dev/null
  ```

  Pour plus d’informations sur la suppression de la sortie de votre terminal, consultez la documentation utilisateur du terminal que vous utilisez.
+ Tenez compte de l’accès à vos journaux et délimitez cet accès en fonction de votre cas d’utilisation.

## Options de sortie côté serveur ou côté client
<a name="cli-usage-output-server-client"></a>

 AWS CLI Il dispose d'un [filtrage côté serveur et côté client](cli-usage-filter.md) que vous pouvez utiliser individuellement ou ensemble pour filtrer votre sortie. AWS CLI Le filtrage côté serveur est traité en premier et renvoie votre sortie pour le filtrage côté client. Le filtrage côté serveur est pris en charge par l’API du service. Le filtrage côté client est pris en charge par le AWS CLI client à l'aide du `--query` paramètre.

Les options de sortie **côté serveur** sont des fonctionnalités directement prises en charge par l' Service AWS API. Les données filtrées ou renvoyées ne sont pas envoyées au client, ce qui peut accélérer les temps de réponse HTTP et améliorer la bande passante pour les jeux de données plus volumineux.

Les options de sortie **côté client** sont des fonctionnalités créées par l’ AWS CLI. Toutes les données sont envoyées au client, puis les AWS CLI filtres ou les pages affichent le contenu. Les opérations côté client ne permettent pas d’économiser en termes de vitesse ou de bande passante pour les jeux de données plus volumineux.

Lorsque les options côté serveur et côté client sont utilisées conjointement, les opérations côté serveur sont d’abord effectuées, puis envoyées au client pour les opérations côté client. Cela permet de réaliser des économies de vitesse et de bande passante potentielles des options côté serveur, tout en utilisant des fonctionnalités d’ AWS CLI supplémentaires pour obtenir le résultat souhaité.

# Réglage du format de sortie dans AWS CLI
<a name="cli-usage-output-format"></a>

Cette rubrique décrit les différents formats de sortie pour le AWS Command Line Interface (AWS CLI). L’ AWS CLI prend en charge les formats de sortie suivants :
+ **[`json`](#json-output)** : la sortie est au format d’une chaîne [JSON](https://json.org/).
+  **[`yaml`](#yaml-output)** : la sortie est au format d’une chaîne [YAML](https://yaml.org/).
+ **[`yaml-stream`](#yaml-stream-output)** : la sortie est diffusée et au format d’une chaîne [YAML](https://yaml.org/). La diffusion permet de traiter plus rapidement de gros types de données.
+ **[`text`](#text-output)** : la sortie a le format de plusieurs lignes de valeurs de chaîne séparées par des tabulations. Cela peut être utile pour transmettre la sortie à un processeur de texte, comme `grep`, `sed` ou `awk`.
+ **[`table`](#table-output)** : la sortie est au format d’un tableau utilisant les caractères \$1\$1- pour délimiter les bordures des cellules. La présentation des informations est dans un format beaucoup plus lisible par l’utilisateur que les autres, mais peu pratique du point de vue programmation.
+ **[`off`](#off-output)**— La sortie supprime toutes les sorties de commande vers stdout. Cela est utile dans les scripts d'automatisation et les CI/CD pipelines où il suffit de vérifier le code de sortie de la commande sans traiter la sortie.

## Comment sélectionner le format de sortie
<a name="cli-usage-output-format-how"></a>

Comme expliqué dans la rubrique de [configuration](cli-chap-configure.md), le format de sortie peut être spécifié de trois façons :
+ **Utilisation de l’option `output` dans un profil nommé du fichier `config`** : l’exemple suivant définit le format de sortie par défaut sur `text`.

  ```
  [default]
  output=text
  ```
+ **Utilisation de la variable d’environnement `AWS_DEFAULT_OUTPUT`** : la sortie suivante définit le format sur `table` pour les commandes de cette session de ligne de commande jusqu’à ce que la variable soit modifiée ou que la session se termine. L’utilisation de cette variable d’environnement remplace toute valeur définie dans le fichier `config`.

  ```
  $ export AWS_DEFAULT_OUTPUT="table"
  ```
+ **Utilisation de l’option `--output` sur la ligne de commande** : l’exemple suivant définit la sortie de cette seule commande sur `json`. Utiliser cette option sur la commande remplace n’importe quelle variable d’environnement actuellement définie ou la valeur dans le fichier `config`.

  ```
  $ aws swf list-domains --registration-status REGISTERED --output json
  ```

**Important**  
Le type de sortie que vous spécifiez influe sur la façon dont l’option `--query` fonctionne :  
Si vous le spécifiez`--output text`, la sortie est paginée *avant que* le `--query` filtre ne soit appliqué, et la AWS CLI requête est exécutée une fois sur *chaque page* de la sortie. De ce fait, la requête inclut le premier élément correspondant sur chaque page, ce qui peut entraîner une sortie supplémentaire inattendue. Pour filtrer davantage la sortie, vous pouvez utiliser d’autres outils de ligne de commande, comme `head` ou `tail`.
Si vous spécifiez `--output json`, `--output yaml` ou `--output yaml-stream`, la sortie est totalement traitée et convertie en une structure JSON avant que le filtre `--query` ne soit appliqué. La requête n'est AWS CLI exécutée qu'une seule fois sur l'ensemble de la structure, produisant un résultat filtré qui est ensuite affiché.

## Format de sortie JSON
<a name="json-output"></a>

[JSON](https://json.org) est le format de sortie par défaut de l’ AWS CLI. La plupart des langages de programmation peuvent facilement décoder les chaînes JSON à l’aide de fonctions intégrées ou de bibliothèques disponibles au public. Vous pouvez combiner la sortie JSON avec l'[option --query](cli-usage-filter.md) de manière puissante pour filtrer et formater la sortie au format AWS CLI JSON. 

Pour un filtrage plus avancé que vous ne pourriez peut-être pas faire avec `--query`, vous pouvez envisager `jq`, processeur JSON de ligne de commande. Vous pouvez le télécharger et trouver le didacticiel officiel à l’adresse [http://stedolan.github.io/jq/](http://stedolan.github.io/jq/).

Voici un exemple de données JSON :

```
$ aws iam list-users --output json
```

```
{
    "Users": [
        {
            "Path": "/",
            "UserName": "Admin",
            "UserId": "AIDA1111111111EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:user/Admin",
            "CreateDate": "2014-10-16T16:03:09+00:00",
            "PasswordLastUsed": "2016-06-03T18:37:29+00:00"
        },
        {
            "Path": "/backup/",
            "UserName": "backup-user",
            "UserId": "AIDA2222222222EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:user/backup/backup-user",
            "CreateDate": "2019-09-17T19:30:40+00:00"
        },
        {
            "Path": "/",
            "UserName": "cli-user",
            "UserId": "AIDA3333333333EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:user/cli-user",
            "CreateDate": "2019-09-17T19:11:39+00:00"
        }
    ]
}
```

## Format de sortie YAML
<a name="yaml-output"></a>

[YAML](https://yaml.org) [est un bon choix pour gérer la sortie par programmation avec des services et des outils qui émettent ou consomment des chaînes au format [YAML](https://yaml.org), comme CloudFormation sa prise en charge des modèles au format YAML.](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-formats.html)

Pour un filtrage plus avancé que vous ne pourriez peut-être pas faire avec `--query`, vous pouvez envisager `yq`, processeur YAML de ligne de commande. Vous pouvez le télécharger `yq` dans le [référentiel yq](https://github.com/mikefarah/yq) sur *GitHub*.

Voici un exemple de résultat YAML :

```
$ aws iam list-users --output yaml
```

```
Users:
- Arn: arn:aws:iam::123456789012:user/Admin
  CreateDate: '2014-10-16T16:03:09+00:00'
  PasswordLastUsed: '2016-06-03T18:37:29+00:00'
  Path: /
  UserId: AIDA1111111111EXAMPLE
  UserName: Admin
- Arn: arn:aws:iam::123456789012:user/backup/backup-user
  CreateDate: '2019-09-17T19:30:40+00:00'
  Path: /backup/
  UserId: AIDA2222222222EXAMPLE
  UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- Arn: arn:aws:iam::123456789012:user/cli-user
  CreateDate: '2019-09-17T19:30:40+00:00'
  Path: /
  UserId: AIDA3333333333EXAMPLE
  UserName: cli-user
```

## Format de sortie du flux YAML
<a name="yaml-stream-output"></a>

Le format `yaml-stream` tire parti du format [YAML](https://yaml.org) tout en offrant une visualisation plus réactive/rapide des grands jeux de données en vous transmettant les données en streaming. Vous pouvez commencer à visualiser et à utiliser les données YAML avant le téléchargement complet des requêtes. 

Pour un filtrage plus avancé que vous ne pourriez peut-être pas faire avec `--query`, vous pouvez envisager `yq`, processeur YAML de ligne de commande. Vous pouvez le télécharger `yq` dans le [référentiel yq](https://github.com/mikefarah/yq) sur *GitHub*.

Voici un exemple de sortie `yaml-stream`.

```
$ aws iam list-users --output yaml-stream
```

```
- IsTruncated: false
  Users:
  - Arn: arn:aws:iam::123456789012:user/Admin
    CreateDate: '2014-10-16T16:03:09+00:00'
    PasswordLastUsed: '2016-06-03T18:37:29+00:00'
    Path: /
    UserId: AIDA1111111111EXAMPLE
    UserName: Admin
  - Arn: arn:aws:iam::123456789012:user/backup/backup-user
    CreateDate: '2019-09-17T19:30:40+00:00'
    Path: /backup/
    UserId: AIDA2222222222EXAMPLE
    UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
  - Arn: arn:aws:iam::123456789012:user/cli-user
    CreateDate: '2019-09-17T19:30:40+00:00'
    Path: /
    UserId: AIDA3333333333EXAMPLE
    UserName: cli-user
```

Voici un exemple de sortie `yaml-stream` associé à l’utilisation du paramètre `--page-size` pour paginer le contenu YAML diffusé.

```
$ aws iam list-users --output yaml-stream --page-size 2
```

```
- IsTruncated: true
  Marker: ab1234cdef5ghi67jk8lmo9p/q012rs3t445uv6789w0x1y2z/345a6b78c9d00/1efgh234ij56klmno78pqrstu90vwxyx  
  Users:
  - Arn: arn:aws:iam::123456789012:user/Admin
    CreateDate: '2014-10-16T16:03:09+00:00'
    PasswordLastUsed: '2016-06-03T18:37:29+00:00'
    Path: /
    UserId: AIDA1111111111EXAMPLE
    UserName: Admin
  - Arn: arn:aws:iam::123456789012:user/backup/backup-user
    CreateDate: '2019-09-17T19:30:40+00:00'
    Path: /backup/
    UserId: AIDA2222222222EXAMPLE
    UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- IsTruncated: false
  Users:
  - Arn: arn:aws:iam::123456789012:user/cli-user
    CreateDate: '2019-09-17T19:30:40+00:00'
    Path: /
    UserId: AIDA3333333333EXAMPLE
    UserName: cli-user
```

## Format de sortie texte
<a name="text-output"></a>

Le `text` format organise la AWS CLI sortie en lignes délimitées par des tabulations. Il fonctionne bien avec les outils de texte Unix traditionnels tels que `grep``sed`,`awk`, et le traitement de texte effectué par PowerShell. 

Le format de sortie `text` suit la structure de base ci-dessous. Les colonnes sont triées dans l’ordre alphabétique sur les noms de clés correspondants de l’objet JSON sous-jacent.

```
IDENTIFIER  sorted-column1 sorted-column2
IDENTIFIER2 sorted-column1 sorted-column2
```

Voici un exemple de sortie `text`. Chaque champ est un onglet séparé des autres, avec un onglet supplémentaire où il y a un champ vide.

```
$ aws iam list-users --output text
```

```
USERS   arn:aws:iam::123456789012:user/Admin                2014-10-16T16:03:09+00:00   2016-06-03T18:37:29+00:00   /          AIDA1111111111EXAMPLE   Admin
USERS   arn:aws:iam::123456789012:user/backup/backup-user   2019-09-17T19:30:40+00:00                               /backup/   AIDA2222222222EXAMPLE   backup-user
USERS   arn:aws:iam::123456789012:user/cli-user             2019-09-17T19:11:39+00:00                               /          AIDA3333333333EXAMPLE   cli-user
```

La quatrième colonne est le champ `PasswordLastUsed`. Elle est vide pour les deux dernières entrées, car ces utilisateurs ne se connectent jamais à la console AWS Management Console.

**Important**  
*Si vous spécifiez la sortie `text`, il est également fortement recommandé de toujours utiliser l’option [`--query`](cli-usage-filter.md) pour assurer un comportement cohérent*.   
Cela est dû au fait que le format de texte classe les colonnes de sortie par ordre alphabétique selon le nom de clé de l'objet JSON sous-jacent renvoyé par le AWS service, et des ressources similaires peuvent ne pas porter les mêmes noms de clé. Par exemple, la représentation JSON d’une instance Amazon EC2 basée sur Linux peut comporter des éléments qui ne sont pas présents dans la représentation JSON d’une instance basée sur Windows, ou inversement. En outre, des ressources peuvent comporter des éléments clé-valeur ajoutés ou supprimés lors de futures mises à jour, ce qui modifie l’ordre des colonnes. C’est à ce stade que le code `--query` augmente la fonctionnalité de la sortie `text` afin de vous offrir un contrôle total sur le format de sortie.   
Dans l’exemple suivant, la commande spécifie les éléments à afficher et *définit l’ordre* des colonnes avec la notation de liste `[key1, key2, ...]`. Cela vous permet d’être absolument sûr que les valeurs de clés correctes sont toujours affichées dans la colonne prévue. Enfin, remarquez comment les AWS CLI sorties sont `None` des valeurs pour des clés qui n'existent pas.  

```
$ aws iam list-users --output text --query 'Users[*].[UserName,Arn,CreateDate,PasswordLastUsed,UserId]'
```

```
Admin         arn:aws:iam::123456789012:user/Admin         2014-10-16T16:03:09+00:00   2016-06-03T18:37:29+00:00   AIDA1111111111EXAMPLE
backup-user   arn:aws:iam::123456789012:user/backup-user   2019-09-17T19:30:40+00:00   None                        AIDA2222222222EXAMPLE
cli-user      arn:aws:iam::123456789012:user/cli-backup    2019-09-17T19:11:39+00:00   None                        AIDA3333333333EXAMPLE
```

L’exemple suivant montre comment vous pouvez utiliser `grep` et `awk` avec la sortie `text` à partir de la commande `aws ec2 describe-instances`. La première commande affiche la zone de disponibilité, l’état actuel et l’ID d’instance de chaque instance dans la sortie `text`. La deuxième commande traite cette sortie pour afficher uniquement l'instance IDs de toutes les instances en cours d'exécution dans la zone de `us-west-2a` disponibilité.

```
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text
```

```
us-west-2a      running i-4b41a37c
us-west-2a      stopped i-a071c394
us-west-2b      stopped i-97a217a0
us-west-2a      running i-3045b007
us-west-2a      running i-6fc67758
```

```
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | grep us-west-2a | grep running | awk '{print $3}'
```

```
i-4b41a37c
i-3045b007
i-6fc67758
```

L’exemple suivant va encore plus loin et indique comment filtrer la sortie, mais également comment utiliser cette sortie pour automatiser la modification des types d’instance pour chaque instance arrêtée.

```
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[State.Name, InstanceId]' --output text |
> grep stopped |
> awk '{print $2}' |
> while read line;
> do aws ec2 modify-instance-attribute --instance-id $line --instance-type '{"Value": "m1.medium"}';
> done
```

La `text` sortie peut également être utile dans PowerShell. Comme les colonnes de la `text` sortie sont séparées par des tabulations, vous pouvez facilement diviser la sortie en tableau en utilisant le PowerShell ``t` délimiteur. La commande suivante affiche la valeur de la troisième colonne (`InstanceId`) si la première colonne (`AvailabilityZone`) correspond à la chaîne `us-west-2a`.

```
PS C:\>aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text |
%{if ($_.split("`t")[0] -match "us-west-2a") { $_.split("`t")[2]; } }
```

```
-4b41a37c
i-a071c394
i-3045b007
i-6fc67758
```

Notez que même si l'exemple précédent montre comment utiliser le `--query` paramètre pour analyser les objets JSON sous-jacents et extraire la colonne souhaitée, il PowerShell possède sa propre capacité à gérer le JSON, si la compatibilité entre plateformes n'est pas un problème. Au lieu de gérer la sortie sous forme de texte, comme l'exigent la plupart des interfaces de commande, PowerShell vous pouvez utiliser l'`ConvertFrom-JSON`applet de commande pour produire un objet structuré hiérarchiquement. Vous pouvez ensuite accéder directement au membre souhaité à partir de cet objet.

```
(aws ec2 describe-instances --output json | ConvertFrom-Json).Reservations.Instances.InstanceId
```

**Astuce**  
Si vous avez une sortie de texte et que vous filtrez la sortie vers un champ unique à l’aide du paramètre `--query`, la sortie consiste en une seule ligne de valeurs séparées par une tabulation. Pour voir chaque valeur sur une ligne distincte, vous pouvez placer le champ de sortie entre crochets comme illustré dans les exemples suivants :  
Séparées par tabulation, sortie à ligne unique :  

```
$ aws iam list-groups-for-user --user-name susan  --output text --query "Groups[].GroupName"
```

```
HRDepartment    Developers      SpreadsheetUsers  LocalAdmins
```
Chaque valeur sur sa propre ligne en plaçant `[GroupName]` entre crochets :  

```
$ aws iam list-groups-for-user --user-name susan  --output text --query "Groups[].[GroupName]"
```

```
HRDepartment
Developers
SpreadsheetUsers
LocalAdmins
```

## Format de sortie de tableau
<a name="table-output"></a>

Le format `table` produit des représentations explicites de la sortie complexe de l’ AWS CLI sous la forme d’un tableau.

```
$ aws iam list-users --output table
```

```
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                                 ListUsers                                                                     |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
||                                                                                  Users                                                                      ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
||                         Arn                        |       CreateDate          |    PasswordLastUsed       |   Path   |        UserId         |   UserName  ||
|+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+|
||  arn:aws:iam::123456789012:user/Admin              | 2014-10-16T16:03:09+00:00 | 2016-06-03T18:37:29+00:00 | /        | AIDA1111111111EXAMPLE | Admin       ||
||  arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 |                           | /backup/ | AIDA2222222222EXAMPLE | backup-user ||
||  arn:aws:iam::123456789012:user/cli-user           | 2019-09-17T19:11:39+00:00 |                           | /        | AIDA3333333333EXAMPLE | cli-user    ||
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

Vous pouvez combiner l’option `--query` avec le format `table` pour afficher un ensemble d’éléments pré-sélectionnés dans la sortie brute. Notez les différences de sortie entre le dictionnaire et les notations de liste : les noms de colonnes sont triés par ordre alphabétique dans le premier exemple et les colonnes sans nom sont triées en fonction du choix de l’utilisateur dans le second exemple. Pour plus d’informations sur l’option `--query`, consultez [Filtrage de la sortie dans AWS CLI](cli-usage-filter.md).

```
$ aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table
```

```
------------------------------------------------------
|                   DescribeVolumes                  | 
+------------+----------------+--------------+-------+
|     AZ     |      ID        | InstanceId   | Size  |
+------------+----------------+--------------+-------+
|  us-west-2a|  vol-e11a5288  |  i-a071c394  |  30   |
|  us-west-2a|  vol-2e410a47  |  i-4b41a37c  |  8    |
+------------+----------------+--------------+-------+
```

```
$ aws ec2 describe-volumes --query 'Volumes[*].[VolumeId,Attachments[0].InstanceId,AvailabilityZone,Size]' --output table
```

```
----------------------------------------------------
|                  DescribeVolumes                 |
+--------------+--------------+--------------+-----+
|  vol-e11a5288|  i-a071c394  |  us-west-2a  |  30 |
|  vol-2e410a47|  i-4b41a37c  |  us-west-2a  |  8  |
+--------------+--------------+--------------+-----+
```

## Format hors sortie
<a name="off-output"></a>

Le `off` format supprime toutes les sorties de commande vers stdout. Cela est utile dans les scripts d'automatisation et les CI/CD pipelines où il suffit de vérifier le code de sortie de la commande sans traiter la sortie. Les messages d'erreur sont toujours affichés sur stderr.

L'exemple suivant montre comment le `off` format supprime une sortie réussie. Vous pouvez vérifier le code de sortie pour déterminer le succès :

```
$ aws s3api list-buckets --output off
$ echo $?
0
```

Cela est particulièrement utile dans les scripts shell où vous souhaitez vérifier l'existence d'une ressource sans capturer la sortie :

```
#!/bin/bash
if aws s3api head-bucket --bucket my-bucket --output off 2>/dev/null; then
    echo "Bucket exists"
else
    echo "Bucket does not exist"
fi
```

**Note**  
Le `off` format supprime uniquement la sortie standard. Les erreurs sont toujours écrites dans stderr.

# Sortie d'erreur structurée dans AWS CLI
<a name="cli-usage-error-format"></a>

Cette rubrique décrit les formats de sortie d'erreur structurés pour le AWS Command Line Interface (AWS CLI). La CLI écrit les erreurs dans stderr et prend en charge les formats suivants :
+ **[`enhanced`](#cli-error-format-enhanced)**(par défaut) — Message d'erreur avec des détails supplémentaires affichés en ligne. À utiliser pour un débogage lisible par l'homme.
+ **[`json`](#cli-error-format-json)**— La sortie est formatée sous forme de chaîne [JSON](https://json.org/) avec tous les champs d'erreur. À utiliser pour l'automatisation et la création de scripts.
+ **[`yaml`](#cli-error-format-yaml)**— La sortie est formatée sous forme de chaîne [YAML](https://yaml.org/) avec tous les champs d'erreur. À utiliser pour l'automatisation et la création de scripts.
+ **[`text`](#cli-error-format-text)**— Erreurs de formatage à l'aide du formateur de texte. À utiliser pour un scan visuel rapide.
+ **[`table`](#cli-error-format-table)**— Formate les erreurs à l'aide du formateur de tableau. À utiliser pour un scan visuel rapide.
+ **[`legacy`](#cli-error-format-legacy)**— Format d'erreur original sans détails structurés. À utiliser pour des raisons de rétrocompatibilité.

## Configuration du format d'erreur
<a name="cli-error-format-configuring"></a>

Vous pouvez configurer le format d'erreur à l'aide de l'une des méthodes suivantes :

Drapeau de ligne de commande  

```
$ aws <command> --cli-error-format json
```

Fichier de configuration (`~/.aws/config`)  

```
[default]
cli_error_format = json
```

Variable d'environnement  

```
$ export AWS_CLI_ERROR_FORMAT=yaml
```

## Formats de sortie d'erreur
<a name="cli-error-output-formats"></a>

Les sections suivantes décrivent chaque format :

### Format amélioré (par défaut)
<a name="cli-error-format-enhanced"></a>

Le format amélioré affiche les messages d'erreur avec des détails supplémentaires intégrés pour les valeurs simples. Pour les structures complexes, le format indique l'utilisation de JSON ou de YAML.

**Exemple : configuration de région manquante**

```
aws: [ERROR]: An error occurred (NoRegion): You must specify a region. You can also configure your region by running "aws configure".
```

**Exemple : fonction Lambda inexistante avec des champs supplémentaires**

```
aws: [ERROR]: An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345

Additional error details:
Type: User
```

La section « Informations supplémentaires sur les erreurs » affiche uniquement les champs définis dans le modèle de forme d'erreur du service. Les champs non modélisés issus de la réponse d'erreur ne sont pas affichés.

**Exemple : champs d'erreur complexes**

```
An error occurred (TransactionCanceledException) when calling the TransactWriteItems operation: Transaction cancelled, please refer cancellation reasons for specific reasons [ConditionalCheckFailed, None]

Additional error details:
CancellationReasons: <complex value>
Use "--cli-error-format json" or another error format to see the full details.
```

### Format JSON
<a name="cli-error-format-json"></a>

Le format JSON fournit une représentation structurée avec tous les champs d'erreur.

**Exemple : configuration de région manquante**

```
{
    "Code": "NoRegion",
    "Message": "You must specify a region. You can also configure your region by running \"aws configure\"."
}
```

**Exemple : fonction Lambda inexistante**

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

### Format YAML
<a name="cli-error-format-yaml"></a>

Le format YAML fournit une représentation structurée avec tous les champs d'erreur.

**Exemple : configuration de région manquante**

```
Code: NoRegion
Message: You must specify a region. You can also configure your region by running "aws configure".
```

**Exemple : fonction Lambda inexistante**

```
Code: ResourceNotFoundException
Message: "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345"
Type: User
```

### Format texte
<a name="cli-error-format-text"></a>

Le format de texte utilise le même formateur que la sortie de commande réussie.

**Exemple : fonction Lambda inexistante**

```
ResourceNotFoundException    Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345    User
```

### Format de tableau
<a name="cli-error-format-table"></a>

Le format de table utilise le même formateur que la sortie de commande réussie.

**Exemple : fonction Lambda inexistante**

```
------------------------------------------------------------------------------------------------------------------------------------|
|                                                              error                                                                 |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|            Code            |                              Message                                                             | Type |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|  ResourceNotFoundException |  Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345   | User |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
```

### Ancien format
<a name="cli-error-format-legacy"></a>

L'ancien format fournit le format d'erreur d'origine sans détails structurés. Ce format n'inclut pas le préfixe « Une erreur s'est produite (ErrorCode) : » pour les exceptions de la CLI.

**Exemple : configuration de région manquante**

```
aws: [ERROR]: You must specify a region. You can also configure your region by running "aws configure".
```

**Exemple : fonction Lambda inexistante**

```
An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345
```

**Note**  
Les erreurs incluent désormais systématiquement le `aws: [ERROR]:` préfixe des exceptions de la CLI. Les versions antérieures n'incluaient pas toujours ce préfixe.  
Les exceptions suivantes utilisent toujours l'ancien format, quel que soit le format d'erreur configuré :  
`UnknownArgumentError`— Affiche les informations d'utilisation
Interruptions du clavier () `KeyboardInterrupt`

## Exemple complet
<a name="cli-error-format-example"></a>

L'exemple suivant montre une commande avec un formatage d'erreur JSON :

```
$ aws lambda get-function \
    --function-name nonexistent-function-12345 \
    --cli-error-format json
```

Sortie (stderr) :

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

Le `Type` champ est un membre d'erreur modélisé défini dans la forme d'erreur du service Lambda. Seuls les champs définis dans le modèle d'erreur du service sont inclus dans la sortie d'erreur structurée.

# À l'aide des options de pagination du AWS CLI
<a name="cli-usage-pagination"></a>

Cette rubrique décrit les différentes méthodes de pagination de la sortie à partir de AWS Command Line Interface (AWS CLI). 

Il existe principalement deux manières de contrôler la pagination à partir de l’ AWS CLI.
+ [Utilisation des paramètres de pagination côté serveur.](#cli-usage-pagination-serverside)
+ [Utilisation de votre programme de pagination côté client en sortie par défaut](#cli-usage-pagination-clientside).

Les paramètres de pagination côté serveur traitent en premier et toute sortie est envoyée à la pagination côté client.

## Pagination côté serveur
<a name="cli-usage-pagination-serverside"></a>

Pour la plupart des commandes qui renvoient une longue liste d'éléments, plusieurs options côté serveur permettent de contrôler le nombre d'éléments inclus dans la sortie lorsque l'API d' AWS CLI un service est appelée pour remplir la liste. AWS CLI La pagination côté serveur dans le AWS CLI est activée par l'API du AWS service. Par conséquent, ces options ne fonctionnent que si l'API du service les active.

**Topics**
+ [--no-paginate](#cli-usage-pagination-nopaginate)
+ [--page-size](#cli-usage-pagination-pagesize)
+ [--max-items](#cli-usage-pagination-maxitems)
+ [--starting-token](#cli-usage-pagination-startingtoken)

Par défaut, il AWS CLI utilise un format de page déterminé par le service individuel et récupère tous les éléments disponibles. Par exemple, Amazon S3 a une taille de page par défaut de 1 000. Si vous exécutez le code `aws s3api list-objects` sur un compartiment S3 qui contient 3 500 objets, l’ AWS CLI effectue quatre appels à Amazon S3, en gérant la logique de pagination spécifique à un service en arrière-plan et en envoyant tous les 3 500 objets dans la sortie finale.

Pour savoir si une commande spécifique possède une pagination côté serveur, consultez le guide de référence [AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/reference/index.html) du .

### Utilisation du paramètre --no-paginate
<a name="cli-usage-pagination-nopaginate"></a>

L’option `--no-paginate` désactive les jetons de pagination suivants côté client. Lorsque vous utilisez une commande, par défaut, elle effectue AWS CLI automatiquement plusieurs appels pour renvoyer tous les résultats possibles afin de créer une pagination. Un appel par page. La désactivation de la pagination AWS CLI ne nécessite qu'une seule fois la première page des résultats de commande. 

Par exemple, si vous exécutez `aws s3api list-objects` un bucket Amazon S3 qui contient 3 500 objets, AWS CLI seul le premier appel est envoyé à Amazon S3, renvoyant uniquement les 1 000 premiers objets dans le résultat final.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --no-paginate
{
    "Contents": [
...
```

### Utilisation du paramètre --page-size
<a name="cli-usage-pagination-pagesize"></a>

Si vous constatez des problèmes lors de l’exécution de commandes de liste sur un grand nombre de ressources, la taille de page par défaut peut être trop élevée. Cela peut entraîner un dépassement de la durée maximale autorisée pour les appels aux AWS services et générer une erreur de « expiration du délai imparti ». Vous pouvez utiliser cette `--page-size` option pour spécifier que le AWS CLI nombre d'éléments demandés à chaque appel au AWS service est réduit. Il récupère AWS CLI toujours la liste complète, mais exécute un plus grand nombre d'appels d'API de service en arrière-plan et récupère un plus petit nombre d'éléments à chaque appel. Cela donne aux appels individuels une plus grande chance de réussite sans délai d’expiration. Modifier la taille de la page n’affecte pas la sortie ; cela affecte uniquement le nombre d’appels d’API qui doivent être effectués pour générer la sortie.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --page-size 100
{
    "Contents": [
...
```

### Utilisation du paramètre --max-items
<a name="cli-usage-pagination-maxitems"></a>

Pour inclure moins d'éléments à la fois dans la AWS CLI sortie, utilisez l'`--max-items`option. Le gère AWS CLI toujours la pagination avec le service comme décrit précédemment, mais n'imprime que le nombre d'éléments que vous spécifiez à la fois.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --max-items 100
{
    "NextToken": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==",
    "Contents": [
...
```

### Utilisation du paramètre --starting-token
<a name="cli-usage-pagination-startingtoken"></a>

Si le nombre d’éléments en sortie (`--max-items`) est inférieur au nombre total d’éléments renvoyés par les appels d’API sous-jacents, la sortie inclut un code `NextToken` que vous pouvez transmettre dans une commande suivante pour récupérer le prochain ensemble d’éléments. L’exemple suivant montre comment utiliser la valeur `NextToken` renvoyée par l’exemple précédent et vous permet de récupérer la deuxième centaine d’éléments.

**Note**  
Le paramètre `--starting-token` ne peut pas être nul ni vide. Si la commande précédente ne renvoie pas de valeur `NextToken`, il n’y a plus aucun élément à renvoyer et vous ne devez plus rappeler la commande.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --max-items 100 \
    --starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==
{
    "Contents": [
...
```

Le AWS service spécifié peut ne pas retourner les articles de la même commande à chaque fois que vous appelez. Si vous spécifiez des valeurs différentes pour les codes `--page-size` et `--max-items`, vous pouvez obtenir des résultats inattendus avec des éléments manquants ou des doublons. Pour empêcher que cela ne se produise, utilisez le même nombre pour les codes `--page-size` et `--max-items`, afin de synchroniser la pagination de l’ AWS CLI et celle du service sous-jacent. Vous pouvez également extraire la liste complète et exécuter les opérations de pagination nécessaires localement.

## Pager côté client
<a name="cli-usage-pagination-clientside"></a>

AWS CLI la version 2 fournit l'utilisation d'un programme de téléavertisseur côté client pour la sortie. Par défaut, cette fonctionnalité renvoie toutes les sorties via le programme de pager par défaut de votre système d’exploitation. 

Par ordre de priorité, vous pouvez spécifier le pager de sortie de deux manières :
+ En utilisant le paramètre `cli_pager` du fichier `config` dans le profil `default` ou nommé.
+ À l’aide de la variable d’environnement `AWS_PAGER`.
+ À l’aide de la variable d’environnement `PAGER`.

Par ordre de priorité, vous pouvez désactiver toute utilisation d’un programme de pagination externe de la manière suivante :
+ Utilisez l’option de ligne de commande `--no-cli-pager` pour désactiver le pager pour l’utilisation d’une commande unique. 
+ Définissez le paramètre `cli_pager` ou la variable `AWS_PAGER` sur une chaîne vide.

**Topics**
+ [cli\$1pager](#cli-usage-pagination-clipager)
+ [AWS\$1PAGER](#cli-usage-pagination-awspager)
+ [--no-cli-pager](#cli-usage-pagination-noclipager)
+ [Indicateurs de pager](#cli-usage-pagination-flags)

### Utilisation du paramètre cli\$1pager
<a name="cli-usage-pagination-clipager"></a>

Vous pouvez enregistrer vos paramètres de configuration utilisés fréquemment et vos informations d’identification dans des fichiers qui sont gérés par l’ AWS CLI. Les paramètres d’un profil de nom ont priorité sur les paramètres du profil `default`. Pour plus d’informations sur les paramètres de configuration, consultez [Paramètres des fichiers de configuration et d'identification dans AWS CLI](cli-configure-files.md).

L’exemple suivant définit le pager de sortie par défaut sur le programme `less`.

```
[default]
cli_pager=less
```

L’exemple suivant définit la valeur par défaut pour désactiver l’utilisation d’un pager.

```
[default]
cli_pager=
```



### Comment définir la variable d' AWS\$1PAGERenvironnement
<a name="cli-usage-pagination-awspager"></a>

L’exemple suivant définit le pager de sortie par défaut sur le programme `less`. Pour plus d’informations sur les variables d’environnement, consultez [Configuration des variables d'environnement pour AWS CLI](cli-configure-envvars.md).

------
#### [ Linux and macOS ]

```
$ export AWS_PAGER="less"
```

------
#### [ Windows ]

```
C:\> setx AWS_PAGER "less"
```

------

### Comment utiliser l'no-cli-pager option --
<a name="cli-usage-pagination-noclipager"></a>

Pour désactiver l’utilisation d’un pager sur une commande unique, utilisez l’option `--no-cli-pager`. Pour plus d’informations sur les options de ligne de commande, consultez [Options de ligne de commande dans le AWS CLI](cli-configure-options.md).

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --no-cli-pager
{
    "Contents": [
...
```

### Utilisation des indicateurs de pager
<a name="cli-usage-pagination-flags"></a>

Vous pouvez définir des indicateurs à utiliser automatiquement avec votre programme de pagination. Les indicateurs dépendent du programme de pagination que vous utilisez. Les exemples ci-dessous concernent les valeurs par défaut typiques de `less` et `more`.

------
#### [ Linux and macOS ]

Si vous ne spécifiez pas le contraire, le téléavertisseur utilisé par défaut par la AWS CLI version 2 est`less`. Si la variable d'`LESS`environnement n'est pas définie, la AWS CLI version 2 utilise les `FRX` drapeaux. Vous pouvez combiner des drapeaux en les spécifiant lors de la configuration du AWS CLI pager.

L’exemple suivant utilise l’indicateur `S`. Cet indicateur se combine ensuite avec les indicateurs `FRX` par défaut pour créer un indicateur `FRXS` final.

```
$ export AWS_PAGER="less -S"
```

Si vous ne voulez aucun des indicateurs `FRX`, vous pouvez les supprimer. L’exemple suivant refuse l’indicateur `F` afin de créer un indicateur `RX` final.

```
$ export AWS_PAGER="less -+F"
```

Pour plus d’informations sur les indicateurs `less`, consultez [less](http://manpages.org/less/1#options) sur *manpages.org*. 

------
#### [ Windows ]

Si vous ne spécifiez pas le contraire, le téléavertisseur utilisé par défaut par la AWS CLI version 2 ne `more` comporte aucun indicateur supplémentaire.

L’exemple suivant utilise le paramètre `/c`.

```
C:\> setx AWS_PAGER "more /c"
```

Pour plus d’informations sur les indicateurs `more`, consultez `[more](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/more)` sur *Microsoft Docs*.

------

# Filtrage de la sortie dans AWS CLI
<a name="cli-usage-filter"></a>

Le AWS Command Line Interface (AWS CLI) dispose d'un filtrage côté serveur et côté client que vous pouvez utiliser individuellement ou ensemble pour filtrer votre sortie. AWS CLI Le filtrage côté serveur est traité en premier et renvoie votre sortie pour le filtrage côté client. 
+ Le filtrage côté serveur est pris en charge par l’API, et vous l’implémentez généralement avec un paramètre `--filter`. Le service renvoie uniquement les résultats correspondants, ce qui peut accélérer les temps de réponse HTTP pour les jeux de données volumineux.
+ Le filtrage côté client est pris en charge par le AWS CLI client à l'aide du `--query` paramètre. Ce paramètre possède des fonctionnalités que le filtrage côté serveur ne possède peut-être pas.

**Topics**
+ [Filtrage côté serveur](#cli-usage-filter-server-side)
+ [Filtrage côté client](#cli-usage-filter-client-side)
+ [Combinaison d’un filtrage côté serveur et côté client](#cli-usage-filter-combining)
+ [Ressources supplémentaires](#cli-usage-filter-resources)

## Filtrage côté serveur
<a name="cli-usage-filter-server-side"></a>

Le filtrage côté serveur dans le AWS CLI est fourni par l'API du AWS service. Le service AWS renvoie uniquement dans la réponse HTTP les enregistrements qui correspondent à votre filtre, ce qui peut accélérer les temps de réponse HTTP pour les jeux de données volumineux. Le filtrage côté serveur étant défini par l’API du service, les noms des paramètres et les fonctions varient d’un service à l’autre. Les noms de paramètres couramment utilisés pour le filtrage sont les suivants : 
+ `--filter` tels que [ses](https://docs.aws.amazon.com/cli/latest/reference/ses/create-receipt-filter.html) et [ce](https://docs.aws.amazon.com/cli/latest/reference/ce/get-cost-and-usage.html). 
+ `--filters` tels que [ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-volumes.html), [autoscaling](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-tags.html) et [rds](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html). 
+ Noms commençant par le mot `filter`, par exemple `--filter-expression` pour la commande [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html).

Pour savoir si une commande spécifique dispose d'un filtrage côté serveur et sur les règles de filtrage, consultez le guide de [de référence](https://docs.aws.amazon.com/cli/latest/reference/index.html).

## Filtrage côté client
<a name="cli-usage-filter-client-side"></a>

 AWS CLI fournit des fonctionnalités intégrées de filtrage côté client basées sur JSON avec le paramètre. `--query` Le paramètre `--query` est un outil puissant que vous pouvez utiliser pour personnaliser le contenu et le style de votre sortie. Le paramètre `--query` prend la réponse HTTP qui revient du serveur et filtre les résultats avant de les afficher. Comme l’intégralité de la réponse HTTP est envoyée au client avant le filtrage, le filtrage côté client peut être plus lent que le filtrage côté serveur pour les jeux de données volumineux.

Les requêtes utilisent [JMESPath la syntaxe](https://jmespath.org/) pour créer des expressions permettant de filtrer votre sortie. Pour apprendre JMESPath la syntaxe, consultez le [didacticiel](https://jmespath.org/tutorial.html) sur le *JMESPath site Web*.

**Important**  
Le type de sortie que vous spécifiez influe sur la façon dont l’option `--query` fonctionne :  
Si vous le spécifiez`--output text`, la sortie est paginée *avant que* le `--query` filtre ne soit appliqué, et la AWS CLI requête est exécutée une fois sur *chaque page* de la sortie. De ce fait, la requête inclut le premier élément correspondant sur chaque page, ce qui peut entraîner une sortie supplémentaire inattendue. Pour filtrer davantage la sortie, vous pouvez utiliser d’autres outils de ligne de commande, comme `head` ou `tail`.
Si vous spécifiez `--output json`, `--output yaml` ou `--output yaml-stream`, la sortie est totalement traitée et convertie en une structure JSON avant que le filtre `--query` ne soit appliqué. La requête n'est AWS CLI exécutée qu'une seule fois sur l'ensemble de la structure, produisant un résultat filtré qui est ensuite affiché.

**Topics**
+ [Avant de commencer](#cli-usage-filter-client-side-output)
+ [Identifiants](#cli-usage-filter-client-side-identifiers)
+ [Sélection dans une liste](#cli-usage-filter-client-side-select-list)
+ [Filtrage des données imbriquées](#cli-usage-filter-client-side-nested)
+ [Aplatissement des résultats](#cli-usage-filter-client-side-specific-flattening)
+ [Filtrage de valeurs spécifiques](#cli-usage-filter-client-side-specific-values)
+ [Expressions de redirection](#cli-usage-filter-client-side-pipe)
+ [Filtrage de plusieurs valeurs d’identifiant](#cli-usage-filter-client-side-miltiselect-list)
+ [Ajout d’étiquettes aux valeurs d’identifiant](#cli-usage-filter-client-side-multiselect-hash)
+ [Fonctions](#cli-usage-filter-client-side-functions)
+ [Exemples `--query` avancés](#cli-usage-filter-client-side-advanced)

### Avant de commencer
<a name="cli-usage-filter-client-side-output"></a>

**Note**  
Ces exemples d’expressions de filtre sont écrits pour des shells de base de type Linux. Lorsque vous utilisez ces exemples, veillez à utiliser les bonnes règles de guillemets pour votre shell de terminal. La façon dont votre terminal interprète vos entrées peut modifier considérablement ce qui est envoyé à l’ AWS CLI. La façon dont votre terminal lit les guillemets simples `'`, les guillemets doubles `"` ou les accents graves ``` peut modifier la façon dont le contenu est lu.  
Pour de plus amples informations, veuillez consulter [Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI](cli-usage-parameters-quoting-strings.md).

La sortie JSON suivante montre un exemple de ce que le paramètre `--query` peut produire. La sortie décrit trois volumes Amazon EBS attachés à des instances Amazon EC2 distinctes.

#### Exemple de sortie
<a name="cli-usage-filter-client-side-output-example"></a>

```
$ aws ec2 describe-volumes
{
  "Volumes": [
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2013-09-17T00:55:03.000Z",
          "InstanceId": "i-a071c394",
          "VolumeId": "vol-e11a5288",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-e11a5288",
      "State": "in-use",
      "SnapshotId": "snap-f23ec1c8",
      "CreateTime": "2013-09-17T00:55:03.000Z",
      "Size": 30
    },
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2013-09-18T20:26:16.000Z",
          "InstanceId": "i-4b41a37c",
          "VolumeId": "vol-2e410a47",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-2e410a47",
      "State": "in-use",
      "SnapshotId": "snap-708e8348",
      "CreateTime": "2013-09-18T20:26:15.000Z",
      "Size": 8
    },
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2020-11-20T19:54:06.000Z",
          "InstanceId": "i-1jd73kv8",
          "VolumeId": "vol-a1b3c7nd",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-a1b3c7nd",
      "State": "in-use",
      "SnapshotId": "snap-234087fb",
      "CreateTime": "2020-11-20T19:54:05.000Z",
      "Size": 15
    }
  ]
}
```

### Identifiants
<a name="cli-usage-filter-client-side-identifiers"></a>

Les identifiants sont les étiquettes des valeurs de sortie. Lorsque vous créez des filtres, vous utilisez des identifiants pour affiner les résultats de vos requêtes. Dans l’exemple de sortie suivant, tous les identifiants, tels que `Volumes`, `AvailabilityZone` et `AttachTime` sont mis en évidence. 

```
$ aws ec2 describe-volumes
{
  "Volumes": [
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2013-09-17T00:55:03.000Z",
          "InstanceId": "i-a071c394",
          "VolumeId": "vol-e11a5288",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-e11a5288",
      "State": "in-use",
      "SnapshotId": "snap-f23ec1c8",
      "CreateTime": "2013-09-17T00:55:03.000Z",
      "Size": 30
    },
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2013-09-18T20:26:16.000Z",
          "InstanceId": "i-4b41a37c",
          "VolumeId": "vol-2e410a47",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-2e410a47",
      "State": "in-use",
      "SnapshotId": "snap-708e8348",
      "CreateTime": "2013-09-18T20:26:15.000Z",
      "Size": 8
    },
    {
      "AvailabilityZone": "us-west-2a",
      "Attachments": [
        {
          "AttachTime": "2020-11-20T19:54:06.000Z",
          "InstanceId": "i-1jd73kv8",
          "VolumeId": "vol-a1b3c7nd",
          "State": "attached",
          "DeleteOnTermination": true,
          "Device": "/dev/sda1"
        }
      ],
      "VolumeType": "standard",
      "VolumeId": "vol-a1b3c7nd",
      "State": "in-use",
      "SnapshotId": "snap-234087fb",
      "CreateTime": "2020-11-20T19:54:05.000Z",
      "Size": 15
    }
  ]
}
```

Pour plus d'informations, consultez la section [Identifiants](https://jmespath.org/specification.html#identifiers ) sur le *JMESPath site Web*.

### Sélection dans une liste
<a name="cli-usage-filter-client-side-select-list"></a>

Une liste ou un tableau est un identifiant suivi d’un crochet « `[` » tel que `Volumes` et `Attachments` dans [Avant de commencer](#cli-usage-filter-client-side-output). 

**Syntaxe**

```
<listName>[ ]
```

Pour filtrer toutes les sorties d’un tableau, vous pouvez utiliser la notation générique. Les expressions [génériques](http://jmespath.org/specification.html#wildcard-expressions) sont des expressions utilisées pour renvoyer des éléments à l’aide de la notation `*`. 

L’exemple suivant interroge tout le contenu `Volumes`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*]'
[
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2013-09-17T00:55:03.000Z",
        "InstanceId": "i-a071c394",
        "VolumeId": "vol-e11a5288",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-e11a5288",
    "State": "in-use",
    "SnapshotId": "snap-f23ec1c8",
    "CreateTime": "2013-09-17T00:55:03.000Z",
    "Size": 30
  },
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2020-11-20T19:54:06.000Z",
        "InstanceId": "i-1jd73kv8",
        "VolumeId": "vol-a1b3c7nd",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-a1b3c7nd",
    "State": "in-use",
    "SnapshotId": "snap-234087fb",
    "CreateTime": "2020-11-20T19:54:05.000Z",
    "Size": 15
  }
]
```

Pour afficher un volume spécifique du tableau par index, vous appelez l’index de tableau. Par exemple, le premier élément du tableau `Volumes` a un indice 0, ce qui donne lieu à la requête `Volumes[0]`. Pour plus d'informations sur les index de tableaux, consultez la section [expressions d'index](http://jmespath.org/specification.html#index-expressions) sur le *JMESPathsite Web*.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[0]'
{
  "AvailabilityZone": "us-west-2a",
  "Attachments": [
    {
      "AttachTime": "2013-09-17T00:55:03.000Z",
      "InstanceId": "i-a071c394",
      "VolumeId": "vol-e11a5288",
      "State": "attached",
      "DeleteOnTermination": true,
      "Device": "/dev/sda1"
    }
  ],
  "VolumeType": "standard",
  "VolumeId": "vol-e11a5288",
  "State": "in-use",
  "SnapshotId": "snap-f23ec1c8",
  "CreateTime": "2013-09-17T00:55:03.000Z",
  "Size": 30
}
```

Pour afficher une plage spécifique de volumes par index, utilisez `slice` avec la syntaxe suivante, où **start** est l’index du tableau de départ, **stop** est l’index où le filtre arrête le traitement et **step** est l’intervalle de saut. 

**Syntaxe**

```
<arrayName>[<start>:<stop>:<step>]
```

Si l’une de ces valeurs est omise dans l’expression slice, elle utilise les valeurs par défaut suivantes :
+ Départ : premier index de la liste, 0.
+ Arrêt : dernier index de la liste.
+ Étape : aucune étape n’est omise, la valeur étant 1.

Pour renvoyer uniquement les deux premiers volumes, vous devez utiliser une valeur de départ de 0, une valeur d’arrêt de 2 et une valeur d’étape de 1, comme indiqué dans l’exemple suivant.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[0:2:1]'
[
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2013-09-17T00:55:03.000Z",
        "InstanceId": "i-a071c394",
        "VolumeId": "vol-e11a5288",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-e11a5288",
    "State": "in-use",
    "SnapshotId": "snap-f23ec1c8",
    "CreateTime": "2013-09-17T00:55:03.000Z",
    "Size": 30
  },
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2013-09-18T20:26:16.000Z",
        "InstanceId": "i-4b41a37c",
        "VolumeId": "vol-2e410a47",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-2e410a47",
    "State": "in-use",
    "SnapshotId": "snap-708e8348",
    "CreateTime": "2013-09-18T20:26:15.000Z",
    "Size": 8
  }
]
```

Comme cet exemple contient des valeurs par défaut, vous pouvez raccourcir la tranche de `Volumes[0:2:1]` à `Volumes[:2]`.

L’exemple suivant omet les valeurs par défaut et renvoie tous les deux volumes de l’intégralité du tableau.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[::2]'
[
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2013-09-17T00:55:03.000Z",
        "InstanceId": "i-a071c394",
        "VolumeId": "vol-e11a5288",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-e11a5288",
    "State": "in-use",
    "SnapshotId": "snap-f23ec1c8",
    "CreateTime": "2013-09-17T00:55:03.000Z",
    "Size": 30
  },
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2020-11-20T19:54:06.000Z",
        "InstanceId": "i-1jd73kv8",
        "VolumeId": "vol-a1b3c7nd",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-a1b3c7nd",
    "State": "in-use",
    "SnapshotId": "snap-234087fb",
    "CreateTime": "2020-11-20T19:54:05.000Z",
    "Size": 15
  }
]
```

Les étapes peuvent également utiliser des nombres négatifs pour filtrer les valeurs dans l’ordre inverse d’un tableau, comme illustré dans l’exemple suivant. 

```
$ aws ec2 describe-volumes \
    --query 'Volumes[::-2]'
[
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2020-11-20T19:54:06.000Z",
        "InstanceId": "i-1jd73kv8",
        "VolumeId": "vol-a1b3c7nd",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-a1b3c7nd",
    "State": "in-use",
    "SnapshotId": "snap-234087fb",
    "CreateTime": "2020-11-20T19:54:05.000Z",
    "Size": 15
  },
  {
    "AvailabilityZone": "us-west-2a",
    "Attachments": [
      {
        "AttachTime": "2013-09-17T00:55:03.000Z",
        "InstanceId": "i-a071c394",
        "VolumeId": "vol-e11a5288",
        "State": "attached",
        "DeleteOnTermination": true,
        "Device": "/dev/sda1"
      }
    ],
    "VolumeType": "standard",
    "VolumeId": "vol-e11a5288",
    "State": "in-use",
    "SnapshotId": "snap-f23ec1c8",
    "CreateTime": "2013-09-17T00:55:03.000Z",
    "Size": 30
  }
]
```

Pour plus d'informations, consultez la section [Slices](https://jmespath.org/specification.html#slices) sur le *JMESPath site Web*.

### Filtrage des données imbriquées
<a name="cli-usage-filter-client-side-nested"></a>

Pour affiner le filtrage de `Volumes[*]` pour les valeurs imbriquées, vous pouvez utiliser des sous-expressions en ajoutant un point et vos critères de filtre.

**Syntaxe**

```
<expression>.<expression>
```

L’exemple suivant montre toutes les informations `Attachments` pour tous les volumes.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments'
[
  [
    {
      "AttachTime": "2013-09-17T00:55:03.000Z",
      "InstanceId": "i-a071c394",
      "VolumeId": "vol-e11a5288",
      "State": "attached",
      "DeleteOnTermination": true,
      "Device": "/dev/sda1"
    }
  ],
  [
    {
      "AttachTime": "2013-09-18T20:26:16.000Z",
      "InstanceId": "i-4b41a37c",
      "VolumeId": "vol-2e410a47",
      "State": "attached",
      "DeleteOnTermination": true,
      "Device": "/dev/sda1"
    }
  ],
  [
    {
      "AttachTime": "2020-11-20T19:54:06.000Z",
      "InstanceId": "i-1jd73kv8",
      "VolumeId": "vol-a1b3c7nd",
      "State": "attached",
      "DeleteOnTermination": true,
      "Device": "/dev/sda1"
    }
  ]
]
```

Pour filtrer davantage les valeurs imbriquées, ajoutez l’expression pour chaque identifiant imbriqué. L’exemple suivant répertorie le `State` pour tous les `Volumes`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[*].State'
[
  [
    "attached"
  ],
  [
    "attached"
  ],
  [
    "attached"
  ]
]
```

### Aplatissement des résultats
<a name="cli-usage-filter-client-side-specific-flattening"></a>

Pour plus d'informations, consultez [SubExpressions](https://jmespath.org/specification.html#subexpressions)le *JMESPathsite Web*.

Vous pouvez aplatir les résultats de `Volumes[*].Attachments[*].State` en supprimant la notation générique à l’origine de la requête `Volumes[*].Attachments[].State`. L’aplatissement fréquent est utile pour améliorer la lisibilité des résultats.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[].State'
[
  "attached",
  "attached",
  "attached"
]
```

Pour plus d'informations, voir [Flatten](https://jmespath.org/specification.html#flatten) sur le *JMESPath site Web*.

### Filtrage de valeurs spécifiques
<a name="cli-usage-filter-client-side-specific-values"></a>

Pour filtrer des valeurs spécifiques dans une liste, vous devez utiliser une expression de filtre, comme indiqué dans la syntaxe suivante.

**Syntaxe**

```
? <expression> <comparator> <expression>]
```

Les comparateurs d’expressions incluent `==`, `!=`, `<`, `<=`, `>` et `>=`. L’exemple suivant filtre les `VolumeIds` de tous les `Volumes` ayant l’état `Attached``State`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[?State==`attached`].VolumeId'
[
  [
    "vol-e11a5288"
  ],
  [
    "vol-2e410a47"
  ],
  [
    "vol-a1b3c7nd"
  ]
]
```

Cela peut ensuite être aplati, comme dans l’exemple suivant.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[?State==`attached`].VolumeId[]'
[
  "vol-e11a5288",
  "vol-2e410a47",
  "vol-a1b3c7nd"
]
```

L’exemple suivant filtre les `VolumeIds` de tous les `Volumes` dont la taille est inférieure à 20.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[?Size < `20`].VolumeId'
[
  "vol-2e410a47",
  "vol-a1b3c7nd"
]
```

Pour plus d'informations, consultez [Filtrer les expressions](https://jmespath.org/specification.html#filterexpressions) sur le *JMESPathsite Web*.

### Expressions de redirection
<a name="cli-usage-filter-client-side-pipe"></a>

Vous pouvez rediriger les résultats d’un filtre vers une nouvelle liste, puis filtrer le résultat avec une autre expression en utilisant la syntaxe suivante : 

**Syntaxe**

```
<expression> | <expression>] 
```

L’exemple suivant prend les résultats du filtre de l’expression `Volumes[*].Attachments[].InstanceId` et affiche le premier résultat dans le tableau. 

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[].InstanceId | [0]'
"i-a071c394"
```

Pour ce faire, cet exemple crée d’abord le tableau à partir de l’expression suivante.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[].InstanceId'
"i-a071c394",
  "i-4b41a37c",
  "i-1jd73kv8"
```

Il renvoie ensuite le premier élément de ce tableau.

```
"i-a071c394"
```

Pour plus d'informations, consultez la section [Pipe Expressions](https://jmespath.org/specification.html#pipe-expressions) sur le *JMESPathsite Web*.

### Filtrage de plusieurs valeurs d’identifiant
<a name="cli-usage-filter-client-side-miltiselect-list"></a>

Pour filtrer plusieurs identifiants, vous devez utiliser une liste à sélection multiple en utilisant la syntaxe suivante : 

**Syntaxe**

```
<listName>[].[<expression>, <expression>]
```

Dans l’exemple suivant, `VolumeId` et `VolumeType` sont filtrés dans la liste `Volumes`, ce qui donne l’expression suivante.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[].[VolumeId, VolumeType]'
[
  [
    "vol-e11a5288",
    "standard"
  ],
  [
    "vol-2e410a47",
    "standard"
  ],
  [
    "vol-a1b3c7nd",
    "standard"
  ]
]
```

Pour ajouter des données imbriquées à la liste, vous devez ajouter une autre liste de sélection multiple. L’exemple suivant développe l’exemple précédent en filtrant également `InstanceId` et `State` dans la liste imbriquée `Attachments`. Cela produit l’expression suivante.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State]]'
[
  [
    "vol-e11a5288",
    "standard",
    [
      [
        "i-a071c394",
        "attached"
      ]
    ]
  ],
  [
    "vol-2e410a47",
    "standard",
    [
      [
        "i-4b41a37c",
        "attached"
      ]
    ]
  ],
  [
    "vol-a1b3c7nd",
    "standard",
    [
      [
        "i-1jd73kv8",
        "attached"
      ]
    ]
  ]
]
```

Pour qu’elle soit plus lisible, aplatissez l’expression, comme illustré dans l’exemple suivant.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State][]][]'
[
  "vol-e11a5288",
  "standard",
  [
    "i-a071c394",
    "attached"
  ],
  "vol-2e410a47",
  "standard",
  [
    "i-4b41a37c",
    "attached"
  ],
  "vol-a1b3c7nd",
  "standard",
  [
    "i-1jd73kv8",
    "attached"
  ]
]
```

Pour plus d'informations, consultez la section [Liste de sélections multiples](https://jmespath.org/specification.html#multiselectlist) sur le *JMESPath site Web*.

### Ajout d’étiquettes aux valeurs d’identifiant
<a name="cli-usage-filter-client-side-multiselect-hash"></a>

Pour faciliter la lecture de cette sortie, utilisez un hachage à sélection multiple avec la syntaxe suivante.

**Syntaxe**

```
<listName>[].{<label>: <expression>, <label>: <expression>}
```

Il n’est pas nécessaire que votre étiquette d’identifiant soit identique au nom de l’identifiant. L’exemple suivant utilise l’étiquette `VolumeType` pour les valeurs `VolumeType`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[].{VolumeType: VolumeType}'
[
  {
    "VolumeType": "standard",
  },
  {
    "VolumeType": "standard",
  },
  {
    "VolumeType": "standard",
  }
]
```

Pour des raisons de simplicité, l’exemple suivant conserve les noms d’identifiant pour chaque étiquette et affiche les noms `VolumeId`, `VolumeType`, `InstanceId` et `State` pour tous les volumes :

```
$ aws ec2 describe-volumes \
    --query 'Volumes[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[
  {
    "VolumeId": "vol-e11a5288",
    "VolumeType": "standard",
    "InstanceId": "i-a071c394",
    "State": "attached"
  },
  {
    "VolumeId": "vol-2e410a47",
    "VolumeType": "standard",
    "InstanceId": "i-4b41a37c",
    "State": "attached"
  },
  {
    "VolumeId": "vol-a1b3c7nd",
    "VolumeType": "standard",
    "InstanceId": "i-1jd73kv8",
    "State": "attached"
  }
]
```

*Pour plus d'informations, consultez la section [Multiselect Hash](https://jmespath.org/specification.html#multiselecthash) sur le JMESPath site Web.*

### Fonctions
<a name="cli-usage-filter-client-side-functions"></a>

La JMESPath syntaxe contient de nombreuses fonctions que vous pouvez utiliser pour vos requêtes. Pour plus d'informations sur JMESPath les fonctions, voir [Fonctions intégrées](https://jmespath.org/specification.html#built-in-functions) sur le *JMESPathsite Web*.

Pour montrer comment intégrer une fonction dans vos requêtes, l’exemple suivant utilise la fonction `sort_by`. La fonction `sort_by` trie un tableau en utilisant une expression comme clé de tri selon la syntaxe suivante :

**Syntaxe**

```
sort_by(<listName>, <sort expression>)[].<expression>
```

L’exemple suivant utilise l’[exemple de hachage à sélection multiple](#cli-usage-filter-client-side-multiselect-hash) précédent et trie la sortie par `VolumeId`. 

```
$ aws ec2 describe-volumes \
    --query 'sort_by(Volumes, &VolumeId)[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[
  {
    "VolumeId": "vol-2e410a47",
    "VolumeType": "standard",
    "InstanceId": "i-4b41a37c",
    "State": "attached"
  },
  {
    "VolumeId": "vol-a1b3c7nd",
    "VolumeType": "standard",
    "InstanceId": "i-1jd73kv8",
    "State": "attached"
  },
  {
    "VolumeId": "vol-e11a5288",
    "VolumeType": "standard",
    "InstanceId": "i-a071c394",
    "State": "attached"
  }
]
```

*Pour plus d'informations, consultez [sort\$1by sur le site Web](https://jmespath.org/specification.html#sort-by). JMESPath *

### Exemples `--query` avancés
<a name="cli-usage-filter-client-side-advanced"></a>

**Pour récupérer les informations d’un élément spécifique**

L’exemple suivant utilise le paramètre `--query` pour rechercher un élément spécifique dans une liste, puis extrait les informations de cet élément. L’exemple répertorie toutes les `AvailabilityZones` associées au point de terminaison de service spécifié. Il extrait l’élément de la liste `ServiceDetails` pour lequel `ServiceName` est spécifié, puis il génère en sortie le champ `AvailabilityZones` à partir de cet élément sélectionné. 

```
$ aws --region us-east-1 ec2 describe-vpc-endpoint-services \
    --query 'ServiceDetails[?ServiceName==`com.amazonaws.us-east-1.ecs`].AvailabilityZones'
[
    [
        "us-east-1a",
        "us-east-1b",
        "us-east-1c",
        "us-east-1d",
        "us-east-1e",
        "us-east-1f"
    ]
]
```

**Pour afficher les instantanés après la date de création spécifiée**

L’exemple suivant montre comment référencer tous vos instantanés qui ont été créés après une date spécifiée, y compris certains champs disponibles dans la sortie.

```
$ aws ec2 describe-snapshots --owner self \
    --output json \
    --query 'Snapshots[?StartTime>=`2018-02-07`].{Id:SnapshotId,VId:VolumeId,Size:VolumeSize}'
[
    {
        "id": "snap-0effb42b7a1b2c3d4",
        "vid": "vol-0be9bb0bf12345678",
        "Size": 8
    }
]
```

**Pour afficher le plus récent AMIs**

L'exemple suivant répertorie les cinq images Amazon Machine (AMIs) les plus récentes que vous avez créées, triées de la plus récente à la plus ancienne.

```
$ aws ec2 describe-images \
    --owners self \
    --query 'reverse(sort_by(Images,&CreationDate))[:5].{id:ImageId,date:CreationDate}'
[
    {
        "id": "ami-0a1b2c3d4e5f60001",
        "date": "2018-11-28T17:16:38.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60002",
        "date": "2018-09-15T13:51:22.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60003",
        "date": "2018-08-19T10:22:45.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60004",
        "date": "2018-05-03T12:04:02.000Z"
    },
    {
        "id": "ami-0a1b2c3d4e5f60005",
        "date": "2017-12-13T17:16:38.000Z"
    }
]
```

**Pour afficher les instances autoscaling défectueuses**

L’exemple suivant affiche uniquement l’`InstanceId` de toutes les instances défectueuses dans le groupe Auto Scaling spécifié.

```
$ aws autoscaling describe-auto-scaling-groups \
    --auto-scaling-group-name My-AutoScaling-Group-Name \
    --output text \
    --query 'AutoScalingGroups[*].Instances[?HealthStatus==`Unhealthy`].InstanceId'
```

**Pour inclure des volumes dotés de la balise spécifiée**

L’exemple suivant décrit toutes les instances comportant une balise `test`. Tant qu’il y a une autre balise en plus de la balise `test` attachée au volume, le volume est toujours renvoyé dans les résultats.

L’expression ci-dessous renvoie toutes les balises contenant la balise `test` dans un tableau. Toute balise autre que la balise `test` contient une valeur `null`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Tags[?Value == `test`]'
```

**Pour exclure des volumes dotés de la balise spécifiée**

L’exemple suivant décrit toutes les instances ne comportant aucune balise `test`. L’utilisation d’une expression `?Value != `test`` simple ne fonctionne pas pour exclure un volume, car les volumes peuvent avoir plusieurs balises. Tant qu’il y a une autre balise en plus de la balise `test` attachée au volume, le volume est toujours renvoyé dans les résultats.

Pour exclure tous les volumes dotés de la balise `test`, commencez par l’expression ci-dessous pour renvoyer toutes les balises contenant la balise `test` dans un tableau. Toute balise autre que la balise `test` contient une valeur `null`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Tags[?Value == `test`]'
```

Filtrez ensuite tous les résultats `test` positifs à l’aide de la fonction `not_null`. 

```
$ aws ec2 describe-volumes \
    --query 'Volumes[?!not_null(Tags[?Value == `test`].Value)]'
```

Redirigez les résultats pour les aplatir, ce qui donne lieu à la requête suivante.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[?!not_null(Tags[?Value == `test`].Value)] | []'
```

## Combinaison d’un filtrage côté serveur et côté client
<a name="cli-usage-filter-combining"></a>

Vous pouvez utiliser conjointement un filtrage côté serveur et côté client. Le filtrage côté serveur est effectué en premier, ce qui envoie les données au client que le paramètre `--query` filtre ensuite. Si vous utilisez de grands ensembles de données, le fait d'utiliser d'abord le filtrage côté serveur peut réduire la quantité de données envoyées au client pour chaque AWS CLI appel, tout en conservant la puissante personnalisation qu'offre le filtrage côté client.

L’exemple suivant répertorie les volumes Amazon EC2 utilisant le filtrage côté serveur et côté client. Le service filtre une liste de tous les volumes attachés dans la zone de disponibilité `us-west-2a`. Le paramètre `--query` supplémentaire limite la sortie uniquement aux volumes ayant une valeur `Size` supérieure à 50, et indique uniquement les champs spécifiés avec des noms définis par l’utilisateur.

```
$ aws ec2 describe-volumes \
    --filters "Name=availability-zone,Values=us-west-2a" "Name=status,Values=attached" \
    --query 'Volumes[?Size > `50`].{Id:VolumeId,Size:Size,Type:VolumeType}'
[
    {
        "Id": "vol-0be9bb0bf12345678",
        "Size": 80,
        "VolumeType": "gp2"
    }
]
```

L’exemple suivant récupère une liste d’images qui répondent à plusieurs critères. Il utilise ensuite le paramètre `--query` pour trier la sortie `CreationDate`, en sélectionnant uniquement les plus récentes. Il affiche ensuite l’`ImageId` de cette seule image.

```
$ aws ec2 describe-images \
    --owners amazon \
    --filters "Name=name,Values=amzn*gp2" "Name=virtualization-type,Values=hvm" "Name=root-device-type,Values=ebs" \
    --query "sort_by(Images, &CreationDate)[-1].ImageId" \
    --output text
ami-00ced3122871a4921
```

L’exemple suivant montre comment afficher le nombre de volumes disponibles qui sont supérieurs à 1 000 E/S par seconde en utilisant `length` pour compter leur nombre dans une liste.

```
$ aws ec2 describe-volumes \
    --filters "Name=status,Values=available" \
    --query 'length(Volumes[?Iops > `1000`])'
3
```

L'exemple suivant récupère les noms des groupes Auto Scaling qui utilisent des configurations de lancement dans les configurations spécifiées Région AWS qui utilisent des CloudFormation stacks.

```
$ aws autoscaling describe-auto-scaling-groups --region us-west-2 \
  --filters Name=tag-key,Values=aws:cloudformation:stack-name \
  --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'
[
    "group-1",
    "group-2",
    "group-3"
]
```

## Ressources supplémentaires
<a name="cli-usage-filter-resources"></a>

**Invite automatique dans l’AWS CLI **  
Lorsque vous commencez à utiliser des expressions de filtre, vous pouvez utiliser la fonction d'invite automatique de la AWS CLI version 2. La fonctionnalité d’invite automatique fournit un aperçu lorsque vous appuyez sur la touche **F5**. Pour de plus amples informations, veuillez consulter [Activation et utilisation des invites de commande dans AWS CLI](cli-usage-parameters-prompting.md).

**JMESPath Borne**  
JMESPath Terminal est une commande de terminal interactive permettant d'expérimenter JMESPath des expressions utilisées pour le filtrage côté client. À l’aide de la commande `jpterm`, le terminal affiche les résultats de la requête immédiatement au fur et à mesure que vous tapez. Vous pouvez directement diriger la AWS CLI sortie vers le terminal, ce qui permet d'expérimenter des requêtes avancées.   
L'exemple suivant indique des canaux `aws ec2 describe-volumes` de sortie directement vers JMESPath le terminal.  

```
$ aws ec2 describe-volumes | jpterm
```
Pour plus d'informations sur le JMESPath terminal et les instructions d'installation, voir [JMESPathTerminal](https://github.com/jmespath/jmespath.terminal) activé *GitHub*.

**Utilitaire jq**  
L’utilitaire `jq` vous permet de transformer votre sortie côté client dans le format de sortie que vous souhaitez. Pour plus d'informations `jq` et des instructions d'installation, consultez [jq](https://stedolan.github.io/jq/) on *GitHub*.

# Codes de retour de ligne de commande dans l’AWS CLI
<a name="cli-usage-returncodes"></a>

Le code de retour est généralement un code caché envoyé après l’exécution d’une commande AWS Command Line Interface (AWS CLI) qui décrit l’état de la commande. Vous pouvez utiliser la commande `echo` pour afficher le code envoyé depuis la dernière commande AWS CLI et utiliser ces codes pour déterminer si une commande a réussi ou si elle a échoué, et pourquoi une commande peut contenir une erreur. Outre les codes de retour, vous pouvez consulter plus de détails sur une panne en exécutant vos commandes avec le commutateur `--debug`. Cela génère un rapport détaillé indiquant les étapes que l’AWS CLI utilise pour traiter la commande et le résultat de chaque étape.

Pour déterminer le code de retour d’une commande AWS CLI, exécutez l’une des commandes suivantes immédiatement après l’exécution de la commande CLI. 

------
#### [ Linux and macOS ]

```
$ echo $?
0
```

------
#### [ Windows PowerShell ]

```
PS> echo $lastexitcode
0
```

------
#### [ Windows Command Prompt ]

```
C:\> echo %errorlevel%
0
```

------

Voici les valeurs des codes de retour qui peuvent être renvoyés à la fin de l’exécution d’une commande AWS Command Line Interface (AWS CLI).


| Code | Signification | 
| --- | --- | 
| 0 |  Le service a répondu avec un code d’état de réponse HTTP 200, ce qui indique qu’aucune erreur n’avait été générée par l’AWS CLI et le service AWS auquel la demande avait été envoyée.  | 
| 1 |  Une ou plusieurs opérations de transfert S3 ont échoué. *Limité aux commandes S3.*  | 
| 2 |  La signification de ce code de retour dépend de la commande.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/cli/latest/userguide/cli-usage-returncodes.html)  | 
| 130 |  La commande a été interrompue par un SIGINT. Il s’agit du signal que vous envoyez pour annuler une commande avec `Ctrl`\$1`C`.  | 
| 252 |  La syntaxe de la commande n’était pas valide, un paramètre inconnu a été fourni ou une valeur de paramètre incorrecte a empêché l’exécution de la commande.  | 
| 253 |  L’environnement ou la configuration du système n’était pas valide. Bien que la commande fournie soit syntaxiquement valide, l’absence de configuration ou d’informations d’identification a empêché l’exécution de la commande.  | 
| 254 |  La commande a été correctement analysée et une demande a été envoyée au service spécifié, mais le service a renvoyé une erreur. Cela indique généralement une utilisation incorrecte de l’API ou d’autres problèmes spécifiques au service.  | 
| 255 |  La commande a échoué. Des erreurs ont été générées par l’AWS CLI ou par le service AWS auquel la requête a été envoyée.  | 

# Utilisation d'assistants personnalisés pour exécuter des commandes interactives dans AWS CLI
<a name="cli-usage-wizard"></a>

Le AWS Command Line Interface (AWS CLI) permet d'utiliser un assistant pour certaines commandes. Pour contribuer ou consulter la liste complète des AWS CLI assistants disponibles, consultez le [dossier des AWS CLI assistants](https://github.com/aws/aws-cli/tree/v2/awscli/customizations/wizard/wizards) sur. GitHub 

## Comment ça marche
<a name="cli-usage-wizard-how"></a>

Semblable à la AWS console, AWS CLI elle dispose d'un assistant d'interface utilisateur qui vous guide dans la gestion de vos AWS ressources. Pour utiliser l’assistant, vous devez appeler la sous-commande `wizard` et le nom de l’assistant après le nom du service dans une commande. La structure de la commande est la suivante :

**Syntaxe :**

```
$ aws <command> wizard <wizardName>
```

L’exemple suivant appelle l’assistant pour créer une nouvelle table `dynamodb`.

```
$ aws dynamodb wizard new-table
```

`aws configure` est le seul assistant qui ne possède pas de nom d’assistant. Quand vous exécutez l’assistant, exécutez la commande `aws configure wizard` comme illustré dans l’exemple suivant.

```
$ aws configure wizard
```

Après avoir appelé un assistant, un formulaire s’affiche dans le shell. Pour chaque paramètre, soit une liste d’options que vous pouvez sélectionner vous est fournie, soit vous êtes invité à saisir une chaîne. Pour effectuer une sélection dans la liste, utilisez les flèches haut et bas, puis appuyez sur **ENTRÉE**. Pour afficher les détails d’une option, appuyez sur la flèche droite. Lorsque vous avez terminé de renseigner un paramètre, appuyez sur **ENTRÉE**.

```
$ aws configure wizard
What would you like to configure
> Static Credentials
  Assume Role
  Process Provider
  Additional CLI configuration
Enter the name of the profile: 
Enter your Access Key Id: 
Enter your Secret Access Key:
```

Pour modifier les réponses aux invites précédentes, utilisez les touches **MAJ** \$1 **TAB.** Pour certains assistants, après avoir rempli toutes les instructions, vous pouvez prévisualiser un AWS CloudFormation modèle ou la AWS CLI commande contenant vos informations. Ce mode de prévisualisation est utile pour apprendre à utiliser AWS CLI, à gérer APIs et à créer des modèles pour les scripts.

Appuyez sur **ENTRÉE** une fois la prévisualisation terminée, ou à la dernière invite pour exécuter la commande finale.

```
$ aws configure wizard
What would you like to configure
Enter the name of the profile: testWizard
Enter your Access Key Id: AB1C2D3EF4GH5I678J90K
Enter your Secret Access Key: ab1c2def34gh5i67j8k90l1mnop2qr3s45tu678v90
<ENTER>
```

# Création et utilisation d'alias dans AWS CLI
<a name="cli-usage-alias"></a>

Les alias sont des raccourcis que vous pouvez créer dans le AWS Command Line Interface (AWS CLI) pour raccourcir les commandes ou les scripts que vous utilisez fréquemment. Vous créez des alias dans le fichier `alias` situé dans votre dossier de configuration.

**Topics**
+ [Conditions préalables](#cli-usage-alias-prepreqs)
+ [Étape 1 : création du fichier d’alias](#cli-usage-alias-create-file)
+ [Étape 2 : création d’un alias](#cli-usage-alias-create-alias)
+ [Étape 3 : appel d’un alias](#cli-usage-alias-call-alias)
+ [Exemples de référentiel d’alias](#cli-usage-alias-examples)
+ [Ressources](#cli-usage-alias-references)

## Conditions préalables
<a name="cli-usage-alias-prepreqs"></a>

Pour utiliser les commandes d’alias, vous devez respecter les exigences suivantes :
+ Installez et configurez l’ AWS CLI. Pour plus d’informations, consultez [Installation ou mise à jour vers la dernière version du AWS CLI](getting-started-install.md) et [Authentification et informations d'accès pour AWS CLI](cli-chap-authentication.md).
+ Utilisez une AWS CLI version minimale de 1.11.24 ou 2.0.0.
+ (Facultatif) Pour utiliser des scripts AWS CLI alias bash, vous devez utiliser un terminal compatible avec bash.

## Étape 1 : création du fichier d’alias
<a name="cli-usage-alias-create-file"></a>

Pour créer le `alias` fichier, vous pouvez utiliser la navigation dans les fichiers et un éditeur de texte, ou utiliser votre terminal préféré en suivant la step-by-step procédure. Pour créer rapidement votre fichier d’alias, utilisez le bloc de commande suivant.

------
#### [ Linux and macOS ]

```
$ mkdir -p ~/.aws/cli
$ echo '[toplevel]' > ~/.aws/cli/alias
```

------
#### [ Windows ]

```
C:\> md %USERPROFILE%\.aws\cli
C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias
```

------

**Pour créer le fichier d’alias**

1. Créez un dossier nommé `cli` dans votre dossier AWS CLI de configuration. Par défaut, le dossier de configuration est `~/.aws/` sous Linux ou macOS, et `%USERPROFILE%\.aws\` sous Windows. Vous pouvez le créer par le biais de votre navigation dans les fichiers ou à l’aide de la commande suivante.

------
#### [ Linux and macOS ]

   ```
   $ mkdir -p ~/.aws/cli
   ```

------
#### [ Windows ]

   ```
   C:\> md %USERPROFILE%\.aws\cli
   ```

------

   Le chemin par défaut du dossier `cli` obtenu est `~/.aws/cli/` sous Linux ou macOS, et `%USERPROFILE%\.aws\cli` sous Windows.

1. Dans le dossier `cli`, créez un fichier texte nommé `alias` sans extension et ajoutez `[toplevel]` à la première ligne. Vous pouvez créer ce fichier via votre éditeur de texte préféré ou utiliser la commande suivante.

------
#### [ Linux and macOS ]

   ```
   $ echo '[toplevel]' > ~/.aws/cli/alias
   ```

------
#### [ Windows ]

   ```
   C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias
   ```

------

## Étape 2 : création d’un alias
<a name="cli-usage-alias-create-alias"></a>

Vous pouvez créer un alias à l’aide de commandes de base ou de scripts bash.

### Création d’un alias de commande de base
<a name="cli-usage-alias-create-alias-basic"></a>

Vous pouvez créer votre alias en ajoutant une commande à l’aide de la syntaxe suivante dans le fichier `alias` que vous avez créé à l’étape précédente. 

**Syntaxe**

```
aliasname = command [--options]
```

*aliasname*C'est ce que tu appelles ton alias. *command*Il s'agit de la commande que vous souhaitez appeler, qui peut inclure d'autres alias. Vous pouvez inclure des options ou des paramètres dans votre alias, ou les ajouter lorsque vous appelez votre alias.

L’exemple suivant crée un alias nommé `aws whoami` à l’aide de la commande [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html). Comme cet alias appelle une commande existante de l’ AWS CLI , vous pouvez écrire la commande sans le préfixe `aws`.

```
whoami = sts get-caller-identity
```

L’exemple suivant reprend l’exemple `whoami` précédent et ajoute le filtre `Account` et les options `output` de texte.

```
whoami2 = sts get-caller-identity --query Account --output text
```

### Création d’un alias de sous-commande
<a name="cli-usage-alias-create-alias-sub-command"></a>

**Note**  
La fonctionnalité d'alias de sous-commande nécessite une AWS CLI version minimale de 1.11.24 ou 2.0.0

Vous pouvez créer un alias pour des sous-commandes en ajoutant une commande à l’aide de la syntaxe suivante dans le fichier `alias` que vous avez créé à l’étape précédente. 

**Syntaxe**

```
[command commandGroup]
aliasname = command [--options]
```

*commandGroup*Il s'agit de l'espace de noms de commande, par exemple la commande `aws ec2 describe-regions` se trouve sous le groupe de `ec2` commandes. *aliasname*C'est ce que tu appelles ton alias. *command*Il s'agit de la commande que vous souhaitez appeler, qui peut inclure d'autres alias. Vous pouvez inclure des options ou des paramètres dans votre alias, ou les ajouter lorsque vous appelez votre alias.

L’exemple suivant crée un alias nommé `aws ec2 regions` à l’aide de la commande [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html). Comme cet alias appelle une commande existante de l’ AWS CLI dans l’espace de noms de commande `ec2`, vous pouvez écrire la commande sans le préfixe `aws ec2`.

```
[command ec2]
regions = describe-regions --query Regions[].RegionName
```

Pour créer des alias à partir de commandes situées en dehors de l’espace de noms des commandes, préfixez la commande complète avec un point d’exclamation. L’exemple suivant crée un alias nommé `aws ec2 instance-profiles` à l’aide de la commande [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html).

```
[command ec2]
instance-profiles = !aws iam list-instance-profiles
```

**Note**  
Les alias utilisent uniquement les espaces de noms de commande existants et vous ne pouvez pas en créer de nouveaux. Par exemple, vous ne pouvez pas créer d’alias avec la section `[command johnsmith]`, car l’espace de noms de commande `johnsmith` n’existe pas déjà.

### Création d’un alias de script bash
<a name="cli-usage-alias-create-alias-scripting"></a>

**Avertissement**  
Pour utiliser des scripts AWS CLI alias bash, vous devez utiliser un terminal compatible avec bash

Vous pouvez créer un alias à l’aide de scripts bash pour des processus plus avancés en utilisant la syntaxe suivante.

**Syntaxe**

```
aliasname = 
    !f() {
        script content
}; f
```

*aliasname*C'est ce que vous appelez votre alias et *script content* c'est le script que vous souhaitez exécuter lorsque vous appelez l'alias.

L’exemple suivant utilise `opendns` pour générer votre adresse IP actuelle. Comme vous pouvez utiliser des alias dans d’autres alias, l’alias `myip` suivant est utile pour autoriser ou révoquer l’accès à votre adresse IP depuis d’autres alias. 

```
myip =
  !f() {
    dig +short myip.opendns.com @resolver1.opendns.com
  }; f
```

L’exemple de script suivant appelle l’alias `aws myip` précédent pour autoriser votre adresse IP pour l’entrée d’un groupe de sécurité Amazon EC2.

```
authorize-my-ip =
  !f() {
    ip=$(aws myip)
    aws ec2 authorize-security-group-ingress --group-id ${1} --cidr $ip/32 --protocol tcp --port 22
  }; f
```

Lorsque vous appelez des alias utilisant des scripts bash, les variables sont toujours transmises dans l’ordre dans lequel vous les avez saisies. Dans les scripts bash, les noms des variables ne sont pas pris en compte, mais uniquement l’ordre dans lequel elles apparaissent. Dans l’exemple d’alias `textalert` suivant, la variable de l’option `--message` est la première et l’option `--phone-number` la deuxième.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

## Étape 3 : appel d’un alias
<a name="cli-usage-alias-call-alias"></a>

Pour exécuter l’alias que vous avez créé dans votre fichier `alias`, utilisez la syntaxe suivante. Vous pouvez ajouter des options supplémentaires lorsque vous appelez votre alias.

**Syntaxe**

```
$ aws aliasname
```

L’exemple suivant utilise l’alias de commande `aws whoami`.

```
$ aws whoami
{
    "UserId": "A12BCD34E5FGHI6JKLM",
    "Account": "1234567890987",
    "Arn": "arn:aws:iam::1234567890987:user/userName"
}
```

L’exemple suivant utilise l’alias `aws whoami` avec des options supplémentaires pour renvoyer uniquement le nombre `Account` dans la sortie `text`.

```
$ aws whoami --query Account --output text
1234567890987
```

L’exemple suivant utilise l’[alias de sous-commande](#cli-usage-alias-create-alias-sub-command) `aws ec2 regions`.

```
$ aws ec2 regions
[
    "ap-south-1",
    "eu-north-1",
    "eu-west-3",
    "eu-west-2",
...
```

### Appel d’un alias à l’aide de variables de script bash
<a name="cli-usage-alias-call-alias-variables"></a>

Lorsque vous appelez des alias utilisant des scripts bash, les variables sont toujours transmises dans l’ordre dans lequel vous les avez saisies. Dans les scripts bash, le nom des variables n’est pas pris en compte, mais uniquement l’ordre dans lequel elles apparaissent. Dans l’exemple d’alias `textalert` suivant, la variable de l’option `--message` est la première et l’option `--phone-number` la deuxième.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

Lorsque vous appelez l’alias `textalert`, vous devez transmettre les variables dans le même ordre que celui dans lequel elles sont exécutées dans l’alias. Dans l’exemple suivant, nous utilisons les variables `$message` et `$phone`. La variable `$message` est transmise sous la forme `${1}` pour l’option `--message` et la variable `$phone` est transmise sous la forme `${2}` pour l’option `--phone-number`. Cela permet d’appeler avec succès l’alias `textalert` afin d’envoyer un message.

```
$ aws textalert $message $phone
{
    "MessageId": "1ab2cd3e4-fg56-7h89-i01j-2klmn34567"
}
```

Dans l’exemple suivant, l’ordre est changé lors de l’appel de l’alias à `$phone` et `$message`. La variable `$phone` est transmise sous la forme `${1}` pour l’option `--message` et la variable `$message` est transmise sous la forme `${2}` pour l’option `--phone-number`. Comme les variables ne sont pas dans l’ordre, l’alias les transmet de manière incorrecte. Cela provoque une erreur, car le contenu de `$message` ne correspond pas aux exigences de formatage des numéros de téléphone pour l’option `--phone-number`.

```
$ aws textalert $phone $message
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: text
```

## Exemples de référentiel d’alias
<a name="cli-usage-alias-examples"></a>

Le [référentiel d'AWS CLI alias *GitHub*](https://github.com/awslabs/awscli-aliases)contient des exemples d' AWS CLI alias créés par l'équipe de AWS CLI développeurs et la communauté. Vous pouvez utiliser l’exemple de fichier `alias` complet ou utiliser des alias individuels pour votre propre usage.

**Avertissement**  
L’exécution des commandes de cette section supprime votre fichier `alias` existant. Pour éviter de remplacer votre fichier d’alias existant, modifiez l’emplacement de votre téléchargement.

**Pour utiliser les alias du référentiel**

1. Installez Git. Pour les instructions d’installation, consultez [Getting Started - Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) dans la *documentation Git*.

1. Installez la commande `jp`. La commande `jp` est utilisée dans l’alias `tostring`. Pour les instructions d'installation, consultez le fichier [JMESPath (jp) README.md](https://github.com/jmespath/jp) sur. *GitHub*

1. Installez la commande `jq`. La commande `jq` est utilisée dans l’alias `tostring-with-jq`. Pour les instructions d'installation, consultez le [processeur JSON (jq) activé *GitHub*](https://stedolan.github.io/jq/download/).

1. Téléchargez le fichier `alias` en effectuant l’une des actions suivantes :
   + Exécutez les commandes suivantes pour télécharger le fichier `alias` depuis le référentiel et le copier dans votre dossier de configuration.

------
#### [ Linux and macOS ]

     ```
     $ git clone https://github.com/awslabs/awscli-aliases.git
     $ mkdir -p ~/.aws/cli
     $ cp awscli-aliases/alias ~/.aws/cli/alias
     ```

------
#### [ Windows ]

     ```
     C:\> git clone https://github.com/awslabs/awscli-aliases.git
     C:\> md %USERPROFILE%\.aws\cli
     C:\> copy awscli-aliases\alias %USERPROFILE%\.aws\cli
     ```

------
   + Téléchargez-le directement depuis le référentiel et enregistrez-le dans le `cli` dossier de votre dossier AWS CLI de configuration. Par défaut, le dossier de configuration est `~/.aws/` sous Linux ou macOS, et `%USERPROFILE%\.aws\` sous Windows. 

1. Pour vérifier que les alias fonctionnent, exécutez l’alias suivant.

   ```
   $ aws whoami
   ```

   Cela affiche la même réponse que la commande `aws sts get-caller-identity` :

   ```
   {
       "Account": "012345678901",
       "UserId": "AIUAINBADX2VEG2TC6HD6",
       "Arn": "arn:aws:iam::012345678901:user/myuser"
   }
   ```

## Ressources
<a name="cli-usage-alias-references"></a>
+ Le [référentiel d'AWS CLI alias *GitHub*](https://github.com/awslabs/awscli-aliases)contient des exemples d' AWS CLI alias créés par l'équipe de AWS CLI développeurs et la contribution de la AWS CLI communauté.
+ L'annonce de la fonctionnalité d'alias publiée dans [AWS re:Invent 2016 : The Effective AWS CLI User](https://www.youtube.com/watch?t=1590&v=Xc1dHtWa9-Q) on. *YouTube* 
+ [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html)

# Résolution des erreurs liées au AWS CLI
<a name="cli-chap-troubleshooting"></a>

Cette section décrit les erreurs courantes et les étapes de résolution des problèmes à suivre pour résoudre votre problème. Nous vous suggérons de suivre d’abord la section de [résolution des problèmes généraux](#tshoot-general).

**Contents**
+ [Résolution des problèmes généraux à essayer en premier](#tshoot-general)
  + [Vérifiez le formatage AWS CLI de vos commandes](#general-formatting)
  + [Vérifiez que Région AWS votre AWS CLI commande utilise](#general-region)
  + [Vérifiez que vous utilisez une version récente du AWS CLI](#general-latest)
  + [Utilisation de l’option `--debug`](#general-debug)
  + [Activer et consulter les journaux d'historique des AWS CLI commandes](#tshoot-general-history)
  + [Confirmez AWS CLI que votre](#tshoot-general-config)
+ [Erreurs de type Commande introuvable](#tshoot-install-not-found)
+ [La commande « `aws --version` » renvoie une version différente de celle que vous avez installée](#tshoot-install-wrong-version)
+ [La commande « `aws --version` » renvoie une version après avoir désinstallé le AWS CLI](#tshoot-uninstall-1)
+ [Le a AWS CLI traité une commande avec un nom de paramètre incomplet](#tshoot-parameter-abbrev)
+ [Erreurs d’accès refusé](#tshoot-access-denied)
+ [Informations d’identification non valides et erreurs liées aux clés](#tshoot-permissions-wrongcreds)
+ [La signature ne correspond pas aux erreurs](#tshoot-signature-does-not-match)
+ [Erreurs liées à un certificat SSL](#tshoot-certificate-verify-failed)
+ [Erreurs de type JSON non valide](#tshoot-invalid-json)
+ [Ressources supplémentaires](#tshoot-resources)

## Résolution des problèmes généraux à essayer en premier
<a name="tshoot-general"></a>

Si vous recevez un message d'erreur ou rencontrez un problème avec le AWS CLI, nous vous suggérons de suivre les conseils généraux suivants pour vous aider à résoudre le problème.

[Haut de la page](#cli-chap-troubleshooting-top)

### Vérifiez le formatage AWS CLI de vos commandes
<a name="general-formatting"></a>

Si vous recevez un message d’erreur indiquant qu’une commande n’existe pas ou qu’elle ne reconnaît pas un paramètre (`Parameter validation failed`) qui, selon la documentation, est disponible, votre commande est peut-être mal formatée. Nous vous suggérons de contrôler les éléments suivants :
+ Vérifiez que votre commande ne comporte pas de fautes d’orthographe ni d’erreurs de mise en forme.
+ Vérifiez que tous les [guillemets et les échappements appropriés pour votre terminal](cli-usage-parameters-quoting-strings.md) sont corrects dans votre commande.
+ Générez un [AWS CLI squelette](cli-usage-skeleton.md) pour confirmer la structure de votre commande.
+ Pour le JSON, consultez le [dépannage supplémentaire pour les valeurs JSON](#tshoot-invalid-json). Si vous rencontrez des problèmes avec le traitement du formatage JSON par votre terminal, nous vous suggérons d’ignorer les règles de guillemets du terminal en utilisant des [blobs pour transmettre les données JSON directement à l’ AWS CLI](cli-usage-parameters-types.md#parameter-type-blob).

Pour plus d'informations sur la manière dont une commande spécifique doit être structurée, consultez le [version 2 du guide de référence](https://docs.aws.amazon.com/cli/latest/reference/index.html).

[Haut de la page](#cli-chap-troubleshooting-top)

### Vérifiez que Région AWS votre AWS CLI commande utilise
<a name="general-region"></a>

**Note**  
Vous devez spécifier un Région AWS lorsque vous utilisez le AWS CLI, soit explicitement, soit en définissant une région par défaut. Pour obtenir la liste de tous les éléments Régions AWS que vous pouvez spécifier, consultez la section [AWS Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html) dans le *Référence générale d'Amazon Web Services*. Les Région AWS désignateurs utilisés par le AWS CLI sont les mêmes que ceux que vous voyez dans les points de terminaison AWS Management Console URLs de service.

Des erreurs ou des résultats inattendus peuvent se produire si un Service AWS n'est pas disponible pour ce que vous avez spécifié Région AWS ou si vos ressources se trouvent dans un autre endroit Région AWS. Par ordre de priorité, le Région AWS est défini de la manière suivante :
+ Option de ligne de commande `--region`.
+ Variable d’environnement `AWS\$1REGION` compatible avec le kit SDK.
+ Variable d’environnement `AWS\$1DEFAULT\$1REGION`.
+ Paramètre de profil [`region`](cli-configure-files.md#cli-config-region).

Vérifiez que vous utilisez Région AWS les bonnes ressources. 

[Haut de la page](#cli-chap-troubleshooting-top)

### Vérifiez que vous utilisez une version récente du AWS CLI
<a name="general-latest"></a>

Si vous recevez un message d'erreur indiquant qu'une commande n'existe pas ou qu'elle ne reconnaît pas un paramètre indiqué comme disponible dans le de [référence AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/reference/index.html), vérifiez d'abord que votre commande est correctement formatée. Si le formatage est correct, nous vous recommandons de passer à la version la plus récente de l’ AWS CLI. Des versions mises à jour AWS CLI sont publiées presque tous les jours ouvrables. De nouveaux AWS services, fonctionnalités et paramètres sont introduits dans ces nouvelles versions du AWS CLI. Le seul moyen d’accéder à ces nouveaux services, fonctionnalités ou paramètres consiste à effectuer une mise à niveau vers une version publiée après la première introduction de cet élément.

La façon dont vous mettez à jour votre version du AWS CLI dépend de la manière dont vous l'avez initialement installée, comme décrit dans [Installation ou mise à jour vers la dernière version du AWS CLI](getting-started-install.md).

Si vous avez utilisé l’un des programmes d’installation fournis, vous devez peut-être supprimer l’installation existante avant de télécharger et d’installer la dernière version pour votre système d’exploitation.

[Haut de la page](#cli-chap-troubleshooting-top)

### Utilisation de l’option `--debug`
<a name="general-debug"></a>

Lorsque le AWS CLI signale une erreur que vous ne comprenez pas immédiatement ou produit des résultats auxquels vous ne vous attendez pas, vous pouvez obtenir plus de détails sur l'erreur en exécutant à nouveau la commande avec l'`--debug`option. Avec cette option, l’ AWS CLI produit des résultats qui fournissent des informations détaillées sur chaque étape nécessaire au traitement de votre commande. Les détails de la sortie peuvent vous aider à déterminer à quelle étape l’erreur se produit et fournissent des indices sur l’origine de cette erreur.

Vous pouvez envoyer la sortie vers un fichier texte en vue d’une révision ultérieure ou l’envoyer à AWS Support lorsque vous y êtes invité.

Lorsque vous incluez l’option `--debug`, les détails fournis sont les suivants :
+ La recherche d’informations d’identification
+ L’analyse des paramètres fournis
+ Construction de la requête envoyée aux AWS serveurs
+ Le contenu de la demande envoyée à AWS
+ Le contenu de la réponse brute
+ La sortie formatée

Voici un exemple de commande exécutée avec et sans l’option `--debug`.

```
$ aws iam list-groups --profile MyTestProfile
{
    "Groups": [
        {
            "Path": "/",
            "GroupName": "MyTestGroup",
            "GroupId": "AGPA0123456789EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:group/MyTestGroup",
            "CreateDate": "2019-08-12T19:34:04Z"
        }
    ]
}
```

```
$ aws iam list-groups --profile MyTestProfile --debug
2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205
2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['iam', 'list-groups', '--debug']
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function add_scalar_parsers at 0x7fdf173161e0>
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function register_uri_param_handler at 0x7fdf17dec400>
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function inject_assume_role_provider_cache at 0x7fdf17da9378>
2019-08-12 12:36:18,307 - MainThread - botocore.credentials - DEBUG - Skipping environment variable credential check because profile name was explicitly set.
2019-08-12 12:36:18,307 - MainThread - botocore.hooks - DEBUG - Event session-initialized: calling handler <function attach_history_handler at 0x7fdf173ed9d8>
2019-08-12 12:36:18,308 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/service-2.json
2019-08-12 12:36:18,317 - MainThread - botocore.hooks - DEBUG - Event building-command-table.iam: calling handler <function add_waiters at 0x7fdf1731a840>
2019-08-12 12:36:18,320 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/waiters-2.json
2019-08-12 12:36:18,321 - MainThread - awscli.clidriver - DEBUG - OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>)])
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_streaming_output_arg at 0x7fdf17316510>
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_cli_input_json at 0x7fdf17da9d90>
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function unify_paging_params at 0x7fdf17328048>
2019-08-12 12:36:18,326 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/paginators-1.json
2019-08-12 12:36:18,326 - MainThread - awscli.customizations.paginate - DEBUG - Modifying paging parameters for operation: ListGroups
2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event building-argument-table.iam.list-groups: calling handler <function add_generate_skeleton at 0x7fdf1737eae8>
2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method OverrideRequiredArgsArgument.override_required_args of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>>
2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event before-building-argument-table-parser.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.override_required_args of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>>
2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event operation-args-parsed.iam.list-groups: calling handler functools.partial(<function check_should_enable_pagination at 0x7fdf17328158>, ['marker', 'max-items'], {'max-items': <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>}, OrderedDict([('path-prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker', <awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c58d0>), ('cli-input-json', <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>), ('starting-token', <awscli.customizations.paginate.PageArgument object at 0x7fdf171b0a20>), ('page-size', <awscli.customizations.paginate.PageArgument object at 0x7fdf171c5828>), ('generate-cli-skeleton', <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>)]))
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.path-prefix: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.marker: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.max-items: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.cli-input-json: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.starting-token: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.page-size: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-arg.iam.list-groups.generate-cli-skeleton: calling handler <awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method CliInputJSONArgument.add_to_call_parameters of <awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>>
2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG - Event calling-command.iam.list-groups: calling handler <bound method GenerateCliSkeletonArgument.generate_json_skeleton of <awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at 0x7fdf171c5978>>
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials
2019-08-12 12:36:18,330 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/endpoints.json
2019-08-12 12:36:18,334 - MainThread - botocore.hooks - DEBUG - Event choose-service-name: calling handler <function handle_service_name_alias at 0x7fdf1898eb70>
2019-08-12 12:36:18,337 - MainThread - botocore.hooks - DEBUG - Event creating-client-class.iam: calling handler <function add_generate_presigned_url at 0x7fdf18a028c8>
2019-08-12 12:36:18,337 - MainThread - botocore.regions - DEBUG - Using partition endpoint for iam, us-west-2: aws-global
2019-08-12 12:36:18,337 - MainThread - botocore.args - DEBUG - The s3 config key is not a dictionary type, ignoring its value of: None
2019-08-12 12:36:18,340 - MainThread - botocore.endpoint - DEBUG - Setting iam timeout as (60, 60)
2019-08-12 12:36:18,341 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/ec2-user/venv/lib/python3.7/site-packages/botocore/data/_retry.json
2019-08-12 12:36:18,341 - MainThread - botocore.client - DEBUG - Registering retry handlers for service: iam
2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-parameter-build.iam.ListGroups: calling handler <function generate_idempotent_uuid at 0x7fdf189b10d0>
2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-call.iam.ListGroups: calling handler <function inject_api_version_header_if_needed at 0x7fdf189b2a60>
2019-08-12 12:36:18,343 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=ListGroups) with params: {'url_path': '/', 'query_string': '', 'method': 'POST', 'headers': {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205'}, 'body': {'Action': 'ListGroups', 'Version': '2010-05-08'}, 'url': 'https://iam.amazonaws.com/', 'context': {'client_region': 'aws-global', 'client_config': <botocore.config.Config object at 0x7fdf16e9a4a8>, 'has_streaming_input': False, 'auth_type': None}}
2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event request-created.iam.ListGroups: calling handler <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7fdf16e9a470>>
2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event choose-signer.iam.ListGroups: calling handler <function set_operation_specific_signer at 0x7fdf18996f28>
2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - Calculating signature using v4 auth.
2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:iam.amazonaws.com
x-amz-date:20190812T193618Z

content-type;host;x-amz-date
5f776d91EXAMPLE9b8cb5eb5d6d4a787a33ae41c8cd6eEXAMPLEca69080e1e1f
2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20190812T193618Z
20190812/us-east-1/iam/aws4_request
ab7e367eEXAMPLE2769f178ea509978cf8bfa054874b3EXAMPLE8d043fab6cc9
2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - Signature:
d85a0EXAMPLEb40164f2f539cdc76d4f294fe822EXAMPLE18ad1ddf58a1a3ce7
2019-08-12 12:36:18,344 - MainThread - botocore.endpoint - DEBUG - Sending http request: <AWSPreparedRequest stream_output=False, method=POST, url=https://iam.amazonaws.com/, headers={'Content-Type': b'application/x-www-form-urlencoded; charset=utf-8', 'User-Agent': b'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205', 'X-Amz-Date': b'20190812T193618Z', 'Authorization': b'AWS4-HMAC-SHA256 Credential=AKIA01234567890EXAMPLE-east-1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=d85a07692aceb401EXAMPLEa1b18ad1ddf58a1a3ce7EXAMPLE', 'Content-Length': '36'}>
2019-08-12 12:36:18,344 - MainThread - urllib3.util.retry - DEBUG - Converted retries value: False -> Retry(total=False, connect=None, read=None, redirect=0, status=None)
2019-08-12 12:36:18,344 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): iam.amazonaws.com:443
2019-08-12 12:36:18,664 - MainThread - urllib3.connectionpool - DEBUG - https://iam.amazonaws.com:443 "POST / HTTP/1.1" 200 570
2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amzn-RequestId': '74c11606-bd38-11e9-9c82-559da0adb349', 'Content-Type': 'text/xml', 'Content-Length': '570', 'Date': 'Mon, 12 Aug 2019 19:36:18 GMT'}
2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response body:
b'<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">\n  <ListGroupsResult>\n    <IsTruncated>false</IsTruncated>\n    <Groups>\n      <member>\n        <Path>/</Path>\n        <GroupName>MyTestGroup</GroupName>\n        <Arn>arn:aws:iam::123456789012:group/MyTestGroup</Arn>\n        <GroupId>AGPA1234567890EXAMPLE</GroupId>\n        <CreateDate>2019-08-12T19:34:04Z</CreateDate>\n      </member>\n    </Groups>\n  </ListGroupsResult>\n  <ResponseMetadata>\n    <RequestId>74c11606-bd38-11e9-9c82-559da0adb349</RequestId>\n  </ResponseMetadata>\n</ListGroupsResponse>\n'
2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event needs-retry.iam.ListGroups: calling handler <botocore.retryhandler.RetryHandler object at 0x7fdf16e9a780>
2019-08-12 12:36:18,665 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event after-call.iam.ListGroups: calling handler <function json_decode_policies at 0x7fdf189b1d90>
{
    "Groups": [
        {
            "Path": "/",
            "GroupName": "MyTestGroup",
            "GroupId": "AGPA123456789012EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:group/MyTestGroup",
            "CreateDate": "2019-08-12T19:34:04Z"
        }
    ]
}
```

[Haut de la page](#cli-chap-troubleshooting-top)

### Activer et consulter les journaux d'historique des AWS CLI commandes
<a name="tshoot-general-history"></a>

Vous pouvez activer les journaux d'historique des AWS CLI commandes à l'aide du paramètre de `cli\$1history` fichier. Après avoir activé ce paramètre, AWS CLI enregistre l'historique des `aws` commandes.

Vous pouvez répertorier votre historique à l’aide de la commande `aws history list` et utiliser la valeur command\$1ids obtenue dans la commande `aws history show` pour plus de détails. Pour plus d’informations, consultez [https://docs.aws.amazon.com/cli/latest/reference/history/index.html](https://docs.aws.amazon.com/cli/latest/reference/history/index.html) dans le guide de référence de l’*AWS CLI *.

Lorsque vous incluez l’option `--debug`, les détails fournis sont les suivants :
+ Appels d’API à botocore
+ Codes d’état
+ Réponses HTTP
+ En-têtes
+ Codes de retour

Vous pouvez utiliser ces informations pour confirmer que les données des paramètres et les appels d’API se comportent comme prévu, puis déduire à quelle étape du processus votre commande échoue.

[Haut de la page](#cli-chap-troubleshooting-top)

### Confirmez AWS CLI que votre
<a name="tshoot-general-config"></a>

Diverses erreurs peuvent se produire si vos fichiers `config` et `credentials` ou votre utilisateur ou rôle IAM ne sont pas correctement configurés. Pour plus d’informations sur la résolution des erreurs liées aux fichiers `config` et `credentials` ou à votre utilisateur ou à vos rôles IAM, consultez [Erreurs d’accès refusé](#tshoot-access-denied) et [Informations d’identification non valides et erreurs liées aux clés](#tshoot-permissions-wrongcreds).

[Haut de la page](#cli-chap-troubleshooting-top)

## Erreurs de type Commande introuvable
<a name="tshoot-install-not-found"></a>

Cette erreur signifie que le système d'exploitation ne trouve pas la AWS CLI commande. L’installation est peut-être incomplète ou elle nécessite une mise à jour.

**Cause possible : vous essayez d'utiliser une AWS CLI fonctionnalité plus récente que la version installée, ou vous avez un formatage incorrect**  
*Exemple de texte d’erreur* :  

```
$ aws s3 copy
aws: [ERROR]: argument operation: Found invalid choice 'copy'

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
```
Diverses erreurs peuvent se produire si votre commande est mal formatée ou si vous utilisez une version antérieure à la publication de la fonctionnalité. Pour plus d’informations sur la résolution des erreurs liées à ces deux problèmes, consultez [Vérifiez le formatage AWS CLI de vos commandes](#general-formatting) et [Vérifiez que vous utilisez une version récente du AWS CLI](#general-latest).  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : le terminal doit être redémarré après l’installation**  
*Exemple de texte d’erreur* :  

```
$ aws --version
command not found: aws
```
Si la `aws` commande est introuvable après l'avoir installée ou mise à jour pour la première fois AWS CLI, vous devrez peut-être redémarrer votre terminal pour qu'il reconnaisse les `PATH` mises à jour.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : L'installation AWS CLI n'a pas été complète**  
*Exemple de texte d’erreur* :  

```
$ aws --version
command not found: aws
```
Si la `aws` commande est introuvable après l'installation ou la mise à jour initiale AWS CLI, il se peut qu'elle n'ait pas été complètement installée. Essayez de la réinstaller en suivant les étapes correspondant à votre plateforme dans [Installation ou mise à jour vers la dernière version du AWS CLI](getting-started-install.md).  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : Le AWS CLI n'a pas d'autorisations (Linux)**  
Si la `aws` commande est introuvable après l'avoir installée ou mise à jour pour la AWS CLI première fois sous Linux, il est possible qu'elle ne dispose pas des `execute` autorisations nécessaires pour le dossier dans lequel elle a été installée. Exécutez la commande suivante avec le `PATH` pour votre AWS CLI installation, afin de fournir `[chmod](https://en.wikipedia.org/wiki/Chmod)` des autorisations à AWS CLI :  

```
$ sudo chmod -R 755 /usr/local/aws-cli/
```
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : la variable `PATH` du système d’exploitation n’a pas été mise à jour pendant l’installation.**  
*Exemple de texte d’erreur* :  

```
$ aws --version
command not found: aws
```
Vous allez peut-être devoir ajouter le fichier exécutable `aws` à la variable d’environnement `PATH` de votre système d’exploitation. Pour ajouter le AWS CLI à votre`PATH`, suivez les instructions ci-dessous pour votre système d'exploitation.  

1. Recherchez le script de profil de votre shell dans votre répertoire utilisateur. Si vous n’êtes pas certain du shell utilisé, exécutez `echo $SHELL`.

   ```
   $ ls -a ~
   .  ..  .bash_logout  .bash_profile  .bashrc  Desktop  Documents  Downloads
   ```
   + **Bash** : `.bash_profile`, `.profile` ou `.bash_login`
   + **Zsh** – `.zshrc`
   + **Tcsh** : `.tcshrc`, `.cshrc` ou `.login`

1. Ajoutez une commande d’exportation à votre script de profil. La commande suivante ajoute votre bin local à la variable `PATH` actuelle.

   ```
   export PATH=/usr/local/bin:$PATH
   ```

1. Rechargez le profil mis à jour dans votre session en cours.

   ```
   $ source ~/.bash_profile
   ```

1. Dans une invite de commande Windows, utilisez la commande `where` avec le paramètre `/R path` pour trouver l’emplacement du fichier `aws`. Les résultats renvoient tous les dossiers contenant `aws`.

   ```
   C:\> where /R c:\ aws
   c:\Program Files\Amazon\AWSCLIV2\aws.exe
   ...
   ```

   Par défaut, la AWS CLI version 2 se trouve dans :

   ```
   c:\Program Files\Amazon\AWSCLIV2\aws.exe
   ```

1. Appuyez sur la touche Windows et entrez **environment variables**.

1. Dans la liste des suggestions, choisissez **Modifier les variables d’environnement pour votre compte**.

1. Choisissez **PATH**, puis **Modifier**.

1. Ajoutez le chemin que vous avez trouvé à la première étape dans le champ **Valeur de la variable**, par exemple : ***C:\$1Program Files\$1Amazon\$1AWSCLIV2\$1aws.exe***.

1. Sélectionnez **OK** deux fois pour appliquer les nouveaux paramètres.

1. Fermez toute invite de commande en cours d’exécution et rouvrez une invite de commande.

[Haut de la page](#cli-chap-troubleshooting-top)

## La commande « `aws --version` » renvoie une version différente de celle que vous avez installée
<a name="tshoot-install-wrong-version"></a>

Il se peut que votre terminal renvoie une valeur différente `PATH` de AWS CLI celle à laquelle vous vous attendiez.

**Cause possible : le terminal doit être redémarré après l’installation**  
Si la commande `aws` affiche une version incorrecte, vous devrez peut-être redémarrer votre terminal pour qu’il reconnaisse les mises à jour de la variable `PATH`. Tous les terminaux ouverts doivent être fermés, pas seulement votre terminal actif.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : le système doit être redémarré après l’installation**  
Si la commande `aws` affiche une version incorrecte et que le redémarrage du terminal ne fonctionne pas, vous devrez peut-être redémarrer votre système pour qu’il reconnaisse les mises à jour de la variable `PATH`.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : vous disposez de plusieurs versions du AWS CLI**  
Si vous avez mis à jour AWS CLI et utilisé une méthode d'installation différente de celle de votre installation préexistante, plusieurs versions peuvent être installées. Par exemple, si sur Linux ou macOS, vous avez utilisé `pip` pour votre installation actuelle, et que vous avez essayé de procéder à la mise à jour à l’aide du fichier d’installation `.pkg`, cela peut provoquer des conflits, en particulier si `PATH` pointe vers l’ancienne version.  
Pour résoudre ce problème, [désinstallez toutes les versions de l’ AWS CLI](#tshoot-uninstall-multiple-version) et effectuez une nouvelle installation.   
Après avoir désinstallé toutes les versions, suivez les instructions propres à votre système d’exploitation pour installer la version souhaitée de l’[AWS CLI version 1](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) ou de l’[AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).  
Si cela se produit après avoir installé la AWS CLI version 2 avec une installation préexistante de la AWS CLI version 1, suivez les instructions de migration figurant dans les 1. [Installation de AWS CLI la version 2 à partir de AWS CLI la version 1](cliv2-migration-instructions.md)
[Haut de la page](#cli-chap-troubleshooting-top)

## La commande « `aws --version` » renvoie une version après avoir désinstallé le AWS CLI
<a name="tshoot-uninstall-1"></a>

Cela se produit souvent lorsqu'il y en a encore un AWS CLI installé quelque part sur votre système.

**Cause possible : le terminal doit être redémarré après la désinstallation**  
Si la commande `aws --version` affiche encore un résultat, vous devrez peut-être redémarrer votre terminal pour qu’il reconnaisse les mises à jour du terminal.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : vous disposez de plusieurs versions de AWS CLI votre système ou vous n'avez pas utilisé la même méthode de désinstallation que celle que vous avez utilisée pour installer le AWS CLI**  
La désinstallation AWS CLI peut ne pas être correcte si vous l'avez désinstallée AWS CLI en utilisant une méthode différente de celle que vous avez utilisée pour l'installer, ou si vous avez installé plusieurs versions. Par exemple, si vous avez utilisé `pip` pour votre installation actuelle, vous devez utiliser `pip` pour la désinstallation. Pour résoudre ce problème, désinstallez-le AWS CLI en utilisant la même méthode que celle que vous avez utilisée pour l'installer.  

1. Suivez les instructions correspondant à votre système d’exploitation et à votre méthode d’installation d’origine pour désinstaller la [version 1 de l’AWS CLI](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) et la [version 2 de l’AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/uninstall.html).

1. Fermez tous les terminaux que vous avez ouverts.

1. Ouvrez votre terminal préféré, entrez la commande suivante et confirmez qu’aucune version n’est renvoyée.

   ```
   $ aws --version
   command not found: aws
   ```

   Si une version est toujours répertoriée dans la sortie, AWS CLI elle a probablement été installée à l'aide d'une autre méthode ou il existe plusieurs versions. Si vous ne savez pas quelle méthode vous avez installée AWS CLI, suivez les instructions pour chaque méthode de désinstallation pour les [AWS CLI versions 1](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) et [AWS CLI 2](https://docs.aws.amazon.com/cli/latest/userguide/uninstall.html) appropriées à votre système d'exploitation jusqu'à ce qu'aucune sortie de version ne soit reçue.
**Note**  
Si vous avez utilisé un gestionnaire de packages pour installer l’ AWS CLI (`pip`, `apt`, `brew`, etc.), vous devez utiliser le même gestionnaire de packages pour la désinstallation. Assurez-vous de suivre les instructions fournies par le gestionnaire de packages pour savoir comment désinstaller toutes les versions d’un package. 
[Haut de la page](#cli-chap-troubleshooting-top)

## Le a AWS CLI traité une commande avec un nom de paramètre incomplet
<a name="tshoot-parameter-abbrev"></a>

**Cause possible : vous avez utilisé une abréviation reconnue du paramètre AWS CLI **  
Étant donné que le AWS CLI est construit en utilisant Python, il AWS CLI utilise la `argparse` bibliothèque Python, y compris l'[https://docs.python.org/3/library/argparse.html#allow-abbrev](https://docs.python.org/3/library/argparse.html#allow-abbrev)argument. Les abréviations des paramètres sont reconnues par le AWS CLI et traitées.  
L'exemple de commande suivant modifie le nom de la CloudFormation pile. Le paramètre `--change-set-n` est reconnu comme une abréviation de`--change-set-name`, et AWS CLI traite la commande.  

```
$ aws cloudformation create-change-set --stack-name my-stack --change-set-n my-change-set
```
Lorsque votre abréviation peut correspondre à plusieurs commandes, le paramètre n’est pas reconnu comme une abréviation.  
L'exemple de commande suivant modifie le nom de la CloudFormation pile. Le paramètre `--change-set-` **n’est pas** reconnu comme une abréviation, car il pourrait s’agir de l’abréviation de plusieurs paramètres, comme `--change-set-name` et `--change-set-type`. Par conséquent, la commande AWS CLI **n'**est pas traitée.  

```
$ aws cloudformation create-change-set --stack-name my-stack --change-set- my-change-set
```
**N’utilisez pas** délibérément des abréviations de paramètres. Elles ne sont pas fiables et ne sont pas rétrocompatibles. Si de nouveaux paramètres sont ajoutés à une commande qui confond vos abréviations, vos commandes seront annulées.  
En outre, si le paramètre est un argument à valeur unique, il peut entraîner un comportement inattendu de vos commandes. Si plusieurs instances d’un argument à valeur unique sont transmises, seule la dernière instance sera exécutée. Dans l’exemple suivant, le paramètre `--filters` est un argument à valeur unique. Les paramètres `--filters` et `--filter` sont spécifiés. Le paramètre `--filter` est l’abréviation de `--filters`. Cela entraîne l’application de deux instances de `--filters` et seul le dernier argument `--filter` s’applique.   

```
$ aws ec2 describe-vpc-peering-connections \
    --filters Name=tag:TagName,Values=VpcPeeringConnection \
    --filter Name=status-code,Values=active
```
Vérifiez que vous utilisez des paramètres valides avant d’exécuter une commande afin d’éviter tout comportement inattendu.
[Haut de la page](#cli-chap-troubleshooting-top)

## Erreurs d’accès refusé
<a name="tshoot-access-denied"></a>

**Cause possible : le fichier AWS CLI programme n'a pas l'autorisation « Exécuter »**  
Sous Linux ou macOS, assurez-vous que le programme `aws` dispose des autorisations d’exécution pour l’utilisateur appelant. En général, les autorisations sont définies sur `755`.  
Pour ajouter une autorisation d'exécution à votre utilisateur, exécutez la commande suivante en la *\$1/.local/bin/aws* remplaçant par le chemin d'accès au programme sur votre ordinateur.  

```
$ chmod +x ~/.local/bin/aws
```
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : votre identité IAM ne dispose pas de l’autorisation d’exécuter l’opération.**  
*Exemple de texte d’erreur* :  

```
$ aws s3 ls
An error occurred (AcessDenied) when calling the ListBuckets operation: Access denied.
```
Lorsque vous exécutez une AWS CLI commande, les AWS opérations sont effectuées en votre nom, à l'aide des informations d'identification qui vous associent à un compte ou à un rôle IAM. Les politiques attachées doivent vous accorder l’autorisation d’appeler les actions d’API qui correspondent aux commandes que vous exécutez avec l’ AWS CLI.   
La plupart des commandes appellent une seule action avec un nom correspondant au nom de la commande. Cependant, des commandes personnalisées telles que `aws s3 sync` l'appel multiple APIs. Vous pouvez voir quelle APIs commande appelle en utilisant l'`--debug`option.  
Si vous êtes certain que l'utilisateur ou le rôle dispose des autorisations appropriées attribuées par la politique, assurez-vous que votre AWS CLI commande utilise les informations d'identification que vous attendez. Consultez la [section suivante sur les informations d'identification](#tshoot-permissions-wrongcreds) pour vérifier que les AWS CLI informations d'identification utilisées sont celles que vous attendez.  
Pour plus d’informations sur l’attribution d’autorisations IAM, consultez [Présentation de la gestion des accès : autorisations et stratégies](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_access-management.html) dans le *Guide de l’utilisateur IAM*.  
[Haut de la page](#cli-chap-troubleshooting-top)

## Informations d’identification non valides et erreurs liées aux clés
<a name="tshoot-permissions-wrongcreds"></a>

*Exemple de texte d’erreur* :

```
$ aws s3 ls
An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id 
you provided does not exist in our records.
```

```
$ aws s3 ls
An error occurred (InvalidClientTokenId) when calling the ListBuckets operation: The security token 
included in the request is invalid.
```

**Cause possible : les informations d'identification AWS CLI sont en train de lire des informations d'identification incorrectes ou proviennent d'un emplacement inattendu**  
 AWS CLI Il est possible qu'ils lisent les informations d'identification à un endroit différent de celui prévu ou que les informations relatives à votre paire de clés soient incorrectes. Vous pouvez exécuter `aws configure list` pour confirmer les informations d’identification qui sont utilisées.  
L’exemple suivant montre comment vérifier les informations d’identification utilisées pour le profil par défaut.  

```
$ aws configure list
NAME       : VALUE                : TYPE                    : LOCATION
profile    : <not set>            : None                    : None
access_key : ****************ABCD : shared-credentials-file : 
secret_key : ****************ABCD : shared-credentials-file : 
region     : us-west-2            : env                     : AWS_DEFAULT_REGION
```
L’exemple suivant montre comment vérifier les informations d’identification utilisées pour un profil nommé.  

```
$ aws configure list --profile dev01
NAME       : VALUE                : TYPE                    : LOCATION
profile    : dev01                : None                    : --profile
access_key : ****************ABCD : shared-credentials-file : 
secret_key : ****************ABCD : shared-credentials-file : 
region     : us-west-2            : config-file             : ~/.aws/config
```
Pour confirmer les détails de votre paire de clés, consultez vos fichiers `config` et `credentials`. Pour plus d’informations sur les fichiers `config` et `credentials`, consultez [Paramètres des fichiers de configuration et d'identification dans AWS CLI](cli-configure-files.md). Pour plus d’informations sur les informations d’identification et l’authentification, y compris la priorité des informations d’identification, consultez [Authentification et informations d'accès pour AWS CLI](cli-chap-authentication.md).  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : l’horloge de votre ordinateur est désynchronisée**  
Si vous utilisez des informations d’identification valides, l’erreur peut être due à un défaut de synchronisation de l’horloge. Sur Linux ou macOS, exécutez `date` pour vérifier l’heure.  

```
$ date
```
Si l’horloge de votre système n’est pas exacte en quelques minutes, utilisez `ntpd` pour la synchroniser.  

```
$ sudo service ntpd stop
$ sudo ntpdate time.nist.gov
$ sudo service ntpd start
$ ntpstat
```
Sous Windows, utilisez les options de date et d’heure du Panneau de configuration pour configurer votre horloge système.  
[Haut de la page](#cli-chap-troubleshooting-top)

## La signature ne correspond pas aux erreurs
<a name="tshoot-signature-does-not-match"></a>

*Exemple de texte d’erreur* :

```
$ aws s3 ls
An error occurred (SignatureDoesNotMatch) when calling the ListBuckets operation: The request signature we 
calculated does not match the signature you provided. Check your key and signing method.
```

Lorsque le AWS CLI exécute une commande, il envoie une demande cryptée aux AWS serveurs pour effectuer les opérations de AWS service appropriées. Vos informations d'identification (clé d'accès et clé secrète) sont impliquées dans le chiffrement et permettent AWS d'authentifier la personne qui fait la demande. Plusieurs éléments peuvent interférer avec le bon fonctionnement de ce processus, comme suit :

**Cause possible : votre horloge n'est pas synchronisée avec les AWS serveurs**  
Pour vous protéger contre les [attaques en replay](https://wikipedia.org/wiki/Replay_attack), l'heure actuelle peut être utilisée pendant le encryption/decryption processus. Si la différence d’heure entre le client et le serveur est supérieure à la valeur autorisée, le processus peut échouer et la demande est rejetée. Cela peut également se produire lorsque vous exécutez une commande dans une machine virtuelle dont l’horloge est désynchronisée par rapport à l’horloge de la machine hôte. Parmi les causes possibles, on peut citer le cas où la machine virtuelle est en veille prolongée et prend un certain temps après le réveil pour synchroniser son horloge avec la machine hôte.  
Sur Linux ou macOS, exécutez `date` pour vérifier l’heure.  

```
$ date
```
Si l’horloge de votre système n’est pas exacte en quelques minutes, utilisez `ntpd` pour la synchroniser.  

```
$ sudo service ntpd stop
$ sudo ntpdate time.nist.gov
$ sudo service ntpd start
$ ntpstat
```
Sous Windows, utilisez les options de date et d’heure du Panneau de configuration pour configurer votre horloge système.   
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : votre système d'exploitation ne gère pas correctement AWS les touches contenant certains caractères spéciaux**  
Si vos AWS touches contiennent certains caractères spéciaux, tels que,`-`, `+` `/``%`, ou si certaines variantes du système d'exploitation traitent la chaîne de manière incorrecte, ce qui entraîne une interprétation incorrecte de la chaîne de touches.  
Si vous traitez vos clés à l'aide d'autres outils ou scripts, tels que des outils qui créent le fichier d'informations d'identification sur une nouvelle instance dans le cadre de sa création, ces outils et scripts peuvent avoir leur propre gestion des caractères spéciaux, ce qui les transforme en quelque chose qui AWS ne les reconnaît plus.  
Nous vous suggérons de régénérer la clé secrète pour obtenir une clé qui n’inclut aucun caractère spécial à l’origine des problèmes.  
[Haut de la page](#cli-chap-troubleshooting-top)

## Erreurs liées à un certificat SSL
<a name="tshoot-certificate-verify-failed"></a>

**Cause possible : le certificat de votre proxy AWS CLI n'est pas fiable**  
*Exemple de texte d’erreur* :  

```
$ aws s3 ls
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
```
Lorsque vous utilisez une AWS CLI commande, vous recevez un message `[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed` d'erreur. Cela est dû au fait que vous AWS CLI ne faites pas confiance au certificat de votre proxy en raison de facteurs tels que le certificat de votre proxy étant auto-signé, votre entreprise étant définie comme autorité de certification (CA). L’ AWS CLI ne peut par conséquent pas trouver le certificat racine de l’autorité de certification de votre entreprise dans le registre local de l’autorité de certification.  
Pour résoudre ce problème, indiquez AWS CLI où trouver le fichier de votre entreprise à l'aide du paramètre du `.pem` fichier de `ca\$1bundle` configuration, de l'option de ligne de **[--ca-bundle](cli-configure-options.md#cli-configure-options-ca-bundle)** commande ou de la variable d'`AWS\$1CA\$1BUNDLE`environnement.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : votre configuration ne pointe pas vers le bon emplacement du certificat racine de l’autorité de certification**  
*Exemple de texte d’erreur* :  

```
$ aws s3 ls
SSL validation failed for regionname [Errno 2] No such file or directory
```
Cela est dû au fait que l’emplacement du fichier de votre bundle d’autorité de certification (CA) n’est pas correctement configuré dans l’ AWS CLI. Pour résoudre ce problème, confirmez où se trouve le fichier `.pem` de votre entreprise et mettez à jour la configuration de l’ AWS CLI à l’aide du paramètre de fichier de configuration `ca\$1bundle`, de l’option de ligne de commande **[--ca-bundle](cli-configure-options.md#cli-configure-options-ca-bundle)** ou de la variable d’environnement `AWS\$1CA\$1BUNDLE`.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : votre configuration n'utilise pas le bon Région AWS**  
*Exemple de texte d’erreur* :  

```
$ aws s3 ls
[SSL: CERTIFICATE_ VERIFY_FAILED] certificate verify failed
```
Des erreurs ou des résultats inattendus peuvent se produire si un Service AWS n'est pas disponible pour ce que vous avez spécifié Région AWS ou si vos ressources se trouvent dans un autre endroit Région AWS. Pour obtenir les étapes de dépannage, consultez [Vérifiez que Région AWS votre AWS CLI commande utilise](#general-region).  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : votre version TLS doit être mise à jour **  
*Exemple de texte d’erreur* :  

```
$ aws s3 ls
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled
```
 Service AWS Il utilise une version de TLS incompatible avec la version TLS de votre appareil. Pour résoudre ce problème, procédez à une mise à niveau vers une version TLS prise en charge. Pour de plus amples informations, veuillez consulter [Appliquer une version minimale du protocole TLS pour AWS CLI](cli-security-enforcing-tls.md).  
[Haut de la page](#cli-chap-troubleshooting-top)

## Erreurs de type JSON non valide
<a name="tshoot-invalid-json"></a>

*Exemple de texte d’erreur* :

```
$ aws dynamodb update-table \
    --provisioned-throughput '{"ReadCapacityUnits":15,WriteCapacityUnits":10}' \
    --table-name MyDDBTable
Error parsing parameter '--provisioned-throughput': Invalid JSON: Expecting property name enclosed in 
double quotes: line 1 column 25 (char 24)
JSON received: {"ReadCapacityUnits":15,WriteCapacityUnits":10}
```

Lorsque vous utilisez une AWS CLI commande, vous recevez un message d'erreur `Invalid JSON` « ». Il s'agit généralement d'une erreur qui se produit lorsque vous entrez une commande au format JSON attendu et que vous AWS CLI ne pouvez pas lire correctement votre JSON.

**Cause possible : Vous n'avez pas saisi un code JSON valide AWS CLI pour l'utiliser**  
Vérifiez que vous avez saisi un code JSON valide pour votre commande. Nous vous suggérons d’utiliser un validateur JSON pour les fichiers JSON pour lesquels vous rencontrez des problèmes de formatage.   
Pour une utilisation plus avancée du JSON dans la ligne de commande, pensez à utiliser un processeur JSON de ligne de commande, par exemple `jq`, pour créer des chaînes JSON. Pour plus d'informations sur`jq`, consultez le [référentiel jq](http://stedolan.github.io/jq/) sur *GitHub*.  
[Haut de la page](#cli-chap-troubleshooting-top)

**Cause possible : les règles de citation de votre terminal empêchent l'envoi d'un JSON valide au AWS CLI**  
Avant de AWS CLI recevoir quoi que ce soit d'une commande, votre terminal traite la commande en utilisant ses propres règles de citation et d'échappement. En raison des règles de formatage d’un terminal, une partie de votre contenu JSON peut être supprimée avant que la commande ne soit transmise à l’ AWS CLI. Lorsque vous formulez des commandes, veillez à utiliser les [règles de guillemets de votre terminal](cli-usage-parameters-quoting-strings.md).  
Pour résoudre le problème, utilisez la commande `echo` pour voir comment le shell gère vos paramètres :  

```
$ echo {"ReadCapacityUnits":15,"WriteCapacityUnits":10}
ReadCapacityUnits:15 WriteCapacityUnits:10
```

```
$ echo '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}'
{"ReadCapacityUnits":15,"WriteCapacityUnits":10}
```
Modifiez votre commande jusqu’à ce que votre JSON valide soit renvoyé.  
Pour un dépannage plus approfondi, utilisez le paramètre `--debug` pour afficher les journaux de débogage, car ils afficheront exactement ce qui a été transmis à l’ AWS CLI :  

```
$ aws dynamodb update-table \
    --provisioned-throughput '{"ReadCapacityUnits":15,WriteCapacityUnits":10}' \
    --table-name MyDDBTable \
    --debug
2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/1.18.147 
Python/2.7.18 Linux/5.4.196-119.356.amzn2int.x86_64 botocore/1.18.6
2022-07-19 22:25:07,741 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: 
['dynamodb', 'update-table', '--provisioned-throughput', '{"ReadCapacityUnits":15,WriteCapacityUnits":10}',
 '--table-name', 'MyDDBTable', '--debug']
```
Utilisez les règles de guillemets de votre terminal pour résoudre les problèmes rencontrés par votre entrée JSON lorsqu’elle est envoyée à l’ AWS CLI. Pour plus d’informations sur les règles de guillemets, consultez [Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI](cli-usage-parameters-quoting-strings.md).  
Si vous rencontrez des problèmes pour obtenir un code JSON valide dans le AWS CLI, nous vous recommandons de contourner les règles de citation d'un terminal pour la saisie de données JSON en utilisant des blobs pour transmettre vos données JSON directement au. AWS CLI Pour plus d’informations sur les blobs, consultez [Blob](cli-usage-parameters-types.md#parameter-type-blob).
[Haut de la page](#cli-chap-troubleshooting-top)

## Ressources supplémentaires
<a name="tshoot-resources"></a>

Pour obtenir de l'aide supplémentaire AWS CLI concernant vos problèmes, consultez la [AWS CLI communauté *GitHub*](https://github.com/aws/aws-cli/issues)ou la [AWS re:Post communauté](https://repost.aws/).

[Haut de la page](#cli-chap-troubleshooting-top)