

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.

# Exécution des images officielles Amazon ECR Public ou Docker pour le AWS CLI
<a name="getting-started-docker"></a>

Cette rubrique décrit comment exécuter, contrôler les versions et configurer la AWS CLI version 2 sur Docker à l'aide de l'image officielle Amazon Elastic Container Registry Public (Amazon ECR Public) ou de Docker Hub. Pour plus d’informations sur l’utilisation de Docker, consultez la [Documentation de Docker](https://docs.docker.com/).

Les images officielles offrent une isolation, une portabilité et une sécurité qui les soutiennent et les maintiennent AWS directement. Cela vous permet d'utiliser la AWS CLI version 2 dans un environnement basé sur des conteneurs sans avoir à gérer vous-même l'installation. 

**Topics**
+ [Conditions préalables](#cliv2-docker-prereq)
+ [Choix entre Amazon ECR Public et Docker Hub](#cliv2-docker-versus)
+ [Exécutez les images de AWS CLI la version officielle 2](#cliv2-docker-install)
+ [Remarques sur les interfaces et la rétrocompatibilité des images officielles](#cliv2-docker-install-notes)
+ [Utiliser des versions et des balises spécifiques](#cliv2-docker-upgrade)
+ [Mettre à jour vers la dernière image officielle](#cliv2-docker-update)
+ [Partage des fichiers d’hôte, des informations d’identification et de la configuration](#cliv2-docker-share-files)
+ [Abréviation de la commande docker run](#cliv2-docker-aliases)

## Conditions préalables
<a name="cliv2-docker-prereq"></a>

Docker doit être installé. Pour obtenir les instructions d'installation, consultez le [site web Docker](https://docs.docker.com/install/). 

Pour vérifier votre installation de Docker, exécutez la commande suivante et vérifiez qu'il existe une sortie.

```
$ docker --version
Docker version 19.03.1
```

## Choix entre Amazon ECR Public et Docker Hub
<a name="cliv2-docker-versus"></a>

Nous vous recommandons d'utiliser Amazon ECR Public via Docker Hub pour les AWS CLI images. Docker Hub impose des limites de débit plus stricts pour les consommateurs publics, ce qui peut entraîner des problèmes de limitation. En outre, Amazon ECR Public réplique les images dans plusieurs régions afin de garantir une disponibilité optimale et de gérer les problèmes de panne régionaux. 

Pour plus d’informations sur les limites de débit Docker Hub, consultez [Understanding Docker Hub Rate Limiting](https://www.docker.com/increase-rate-limits/) sur le site web *Docker*.

## Exécutez les images de AWS CLI la version officielle 2
<a name="cliv2-docker-install"></a>

 La première fois que vous utilisez la commande `docker run`, l’image la plus récente est téléchargée sur votre ordinateur. Chaque utilisation ultérieure de la commande `docker run` s'exécute à partir de votre copie locale. 

Pour exécuter les images Docker AWS CLI version 2, utilisez la `docker run` commande.

------
#### [ Amazon ECR Public ]

[L'image officielle Amazon ECR Public AWS CLI version 2 est hébergée sur Amazon ECR Public dans le `aws-cli/aws-cli` référentiel.](https://gallery.ecr.aws/aws-cli/aws-cli)

```
$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

L'image Docker officielle de la AWS CLI version 2 est hébergée sur Docker Hub dans le `amazon/aws-cli` référentiel.

```
$ docker run --rm -it amazon/aws-cli command
```

------

La commande fonctionne de la manière suivante :
+ `docker run --rm -it repository/name` : équivalent de l’exécutable `aws`. Chaque fois que vous exécutez cette commande, Docker lance un conteneur de votre image téléchargée et exécute votre commande `aws`. Par défaut, l'image utilise la dernière version de la AWS CLI version 2.

  Par exemple, pour appeler la commande `aws --version` dans Docker, vous exécutez ce qui suit.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
+ `--rm` : spécifie de nettoyer le conteneur après la fin de la commande.
+ `-it` : spécifie d’ouvrir un pseudo TTY avec `stdin`. Cela vous permet de fournir des entrées à la AWS CLI version 2 lorsqu'elle s'exécute dans un conteneur, par exemple en utilisant les `aws help` commandes `aws configure` et. Lorsque vous choisissez d’exclure `-it`, tenez compte des éléments suivants :
  + `-it` n’est pas nécessaire si vous exécutez des scripts. 
  + Si vous rencontrez des erreurs avec vos scripts, exclure `-it` de votre appel Docker peut résoudre le problème.
  + Si vous essayez de diriger la sortie, `-it` peut provoquer des erreurs et exclure `-it` de votre appel Docker peut résoudre ce problème. Si vous souhaitez conserver l’indicateur `-it`, mais que vous souhaitez tout de même diriger la sortie, désactiver le [pager côté client](cli-usage-pagination.md#cli-usage-pagination-clientside) que l’ AWS CLI utilise par défaut devrait résoudre le problème.

Pour plus d’informations sur la commande `docker run`, consultez le [Guide de référence Docker](https://docs.docker.com/engine/reference/run/).

## Remarques sur les interfaces et la rétrocompatibilité des images officielles
<a name="cliv2-docker-install-notes"></a>
+ Le seul outil pris en charge sur l’image est l’ AWS CLI. Seul le fichier exécutable `aws` doit être exécuté directement. Par exemple, même si `less` et `groff` sont explicitement installés sur l'image, ils ne doivent pas être exécutés directement en dehors d'une AWS CLI commande.
+ Le répertoire de travail `/aws` est contrôlé par l’utilisateur. L'image n'écrira pas dans ce répertoire, sauf indication contraire de l'utilisateur lors de l'exécution d'une AWS CLI commande.
+ La balise « latest » n’offre aucune garantie de rétrocompatibilité. Pour garantir la rétrocompatibilité, vous devez épingler sur une balise `<major.minor.patch>` spécifique, car celles-ci sont immuables et ne sont transmises qu’une seule fois.

## Utiliser des versions et des balises spécifiques
<a name="cliv2-docker-upgrade"></a>

L'image officielle de la AWS CLI version 2 comporte plusieurs versions que vous pouvez utiliser, à commencer par la version`2.0.6`. Pour exécuter une version spécifique de la AWS CLI version 2, ajoutez la balise appropriée à votre `docker run` commande. La première fois que vous utilisez la commande `docker run` avec une balise, l’image la plus récente de cette balise est téléchargée sur votre ordinateur. Chaque utilisation ultérieure de la commande `docker run` avec cette balise s'exécute à partir de votre copie locale. 

Vous pouvez utiliser deux types de balises : 
+ `latest`— Définit la dernière version de la AWS CLI version 2 pour l'image. Nous vous recommandons d’utiliser la balise `latest` lorsque vous souhaitez obtenir la dernière version de la version 2 de l’ AWS CLI . Cependant, il n'y a aucune garantie de compatibilité descendante lorsque vous utilisez cette balise. La balise `latest` est utilisée par défaut dans la commande `docker run`. Pour utiliser explicitement la balise `latest`, ajoutez la balise au nom de l'image du conteneur.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:latest command
  ```

------
+ `<major.minor.patch>`— Définit une version spécifique de la AWS CLI version 2 pour l'image. Si vous envisagez d'utiliser une image officielle en production, nous vous recommandons d'utiliser une version spécifique de la AWS CLI version 2 pour garantir la rétrocompatibilité. Par exemple, pour exécuter la version `2.0.6`, ajoutez la version au nom de l’image du conteneur.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:2.0.6 command
  ```

------

## Mettre à jour vers la dernière image officielle
<a name="cliv2-docker-update"></a>

La dernière image n’étant téléchargée sur votre ordinateur que la première fois que vous utilisez la commande `docker run`, vous devez extraire manuellement une image mise à jour. Pour mettre à jour manuellement vers la dernière version, nous vous recommandons d'extraire l'image balisée `latest`. L’extraction de l’image télécharge la dernière version sur votre ordinateur.

------
#### [ Amazon ECR Public ]

```
$ docker pull public.ecr.aws/aws-cli/aws-cli:latest
```

------
#### [ Docker Hub ]

```
$ docker pull amazon/aws-cli:latest
```

------

## Partage des fichiers d’hôte, des informations d’identification et de la configuration
<a name="cliv2-docker-share-files"></a>

La AWS CLI version 2 étant exécutée dans un conteneur, la CLI ne peut pas accéder par défaut au système de fichiers hôte, qui inclut la configuration et les informations d'identification. Pour partager le système de fichiers hôte, les informations d'identification et la configuration avec le conteneur, montez le répertoire `~/.aws` du système hôte sur le conteneur à l'adresse `/root/.aws` avec l'indicateur `-v` défini sur la commande `docker run`. Cela permet à la AWS CLI version 2 exécutée dans le conteneur de localiser les informations du fichier hôte.

------
#### [ Amazon ECR Public ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  amazon/aws-cli command
```

------

Pour plus d’informations sur l’indicateur `-v` et le montage, consultez le [Guide de référence Docker](https://docs.docker.com/storage/volumes/). 

**Note**  
Pour en savoir plus sur les fichiers `config` et `credentials`, consultez [Paramètres des fichiers de configuration et d'identification dans AWS CLI](cli-configure-files.md).

### Exemple 1 : Fourniture d'informations d'identification et configuration
<a name="cliv2-docker-share-files-config"></a>

Dans cet exemple, nous fournissons les informations d’identification de l’hôte et la configuration lors de l’exécution de la commande `s3 ls` afin de répertorier vos compartiments dans Amazon Simple Storage Service (Amazon S3). Les exemples ci-dessous utilisent l'emplacement par défaut pour les AWS CLI informations d'identification et les fichiers de configuration. Pour utiliser un autre emplacement, modifiez le chemin du fichier.

------
#### [ Amazon ECR Public ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli s3 ls
```

------

Vous pouvez appeler des variables d’environnement spécifiques à un système à l’aide de l’indicateur `-e`. Pour utiliser une variable d’environnement, appelez-la par son nom. 

------
#### [ Amazon ECR Public ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
```

------

### Exemple 2 : téléchargement d’un fichier Amazon S3 sur votre système hôte
<a name="cliv2-docker-share-files-s3"></a>

Pour certaines commandes de AWS CLI la version 2, vous pouvez lire des fichiers depuis le système hôte dans le conteneur ou écrire des fichiers depuis le conteneur vers le système hôte. 

Dans cet exemple, nous téléchargeons l'objet `S3` `s3://aws-cli-docker-demo/hello` sur votre système de fichiers local en installant le répertoire de travail actuel dans le répertoire `/aws` du conteneur. En téléchargeant l'objet `hello` dans le répertoire `/aws` du conteneur, le fichier est également enregistré dans le répertoire de travail actuel du système hôte.

------
#### [ Amazon ECR Public ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------
#### [ Docker Hub ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------

Pour confirmer que le fichier téléchargé existe dans le système de fichiers local, exécutez la procédure suivante.

**Linux et macOS**

```
$ cat hello
Hello from Docker!
```

**Windows PowerShell**

```
$ type hello
Hello from Docker!
```

### Exemple 3 : Utilisation de votre variable d' AWS\$1PROFILEenvironnement
<a name="cliv2-docker-share-files-envvars"></a>

Vous pouvez appeler des variables d’environnement spécifiques à un système à l’aide de l’indicateur `-e`. Appelez chaque variable d’environnement que vous souhaitez utiliser. Dans cet exemple, nous fournissons les informations d'identification de l'hôte, la configuration et la variable d'*AWS\$1PROFILE*environnement lors de l'exécution de la `s3 ls` commande pour répertorier vos buckets dans Amazon Simple Storage Service (Amazon S3).

------
#### [ Amazon ECR Public ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux et macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Invite de commande Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
```

------

## Abréviation de la commande docker run
<a name="cliv2-docker-aliases"></a>

Pour abréger la commande `docker run`, nous vous suggérons d’utiliser la capacité de votre système d’exploitation afin de créer un [https://www.linux.com/topic/desktop/understanding-linux-links/](https://www.linux.com/topic/desktop/understanding-linux-links/) (lien symbolique) ou un [https://www.linux.com/topic/desktop/aliases-diy-shell-commands/](https://www.linux.com/topic/desktop/aliases-diy-shell-commands/) dans Linux et macOS, ou une [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey) dans Windows. Pour définir l'alias `aws`, vous pouvez exécuter l'une des commandes suivantes.
+ Pour un accès de base aux commandes `aws`, exécutez la procédure suivante.

------
#### [ Amazon ECR Public ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it amazon/aws-cli'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it amazon/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ Pour accéder au système de fichiers hôte et aux paramètres de configuration lors de l'utilisation des commandes `aws`, exécutez la procédure suivante.

------
#### [ Amazon ECR Public ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ Pour affecter une version spécifique à utiliser dans votre alias `aws`, ajoutez votre balise de version.

------
#### [ Amazon ECR Public ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux et macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
  ```

  **Invite de commande Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------

Après avoir défini votre alias, vous pouvez exécuter la AWS CLI version 2 depuis un conteneur comme si elle était installée sur votre système hôte. 

```
$ aws --version
aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
```