

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 d'Amazon Elastic Container Registry
<a name="ecr-working"></a>

Vous pouvez accéder au service Amazon Elastic Container Registry (Amazon ECR) directement depuis AWS l'explorateur dans VS Code et l'utiliser pour transférer une image de programme vers un référentiel Amazon ECR. Pour commencer, vous devez suivre les étapes suivantes :

1. Créez un Dockerfile contenant les informations nécessaires à la création d'une image.

1. Créez une image à partir de ce Dockerfile et balisez l'image pour le traitement.

1. Créez un référentiel dans votre instance Amazon ECR. 

1. Transmettez l'image balisée à votre référentiel.

## Conditions préalables
<a name="prereqs-awstoolkit-vscode-ecr"></a>

Vous devez suivre ces étapes pour accéder au service Amazon ECR depuis VS Code Explorer. 

### Créer un utilisateur IAM
<a name="create-an-iam-user"></a>

Avant de pouvoir accéder à un AWS service, tel qu'Amazon ECR, vous devez fournir des informations d'identification. Cela permet au service de déterminer si vous êtes autorisé à accéder à ses ressources. Nous vous déconseillons d'y accéder AWS directement via les informations d'identification de votre AWS compte root. Utilisez plutôt Gestion des identités et des accès AWS (IAM) pour créer un utilisateur IAM, puis ajoutez-le à un groupe IAM doté d'autorisations administratives. Vous pouvez ensuite accéder à AWS l'aide d'une URL spéciale et des informations d'identification de l'utilisateur IAM.

Si vous vous êtes inscrit AWS mais que vous ne l'avez pas créé vous-même, vous pouvez en créer un à l'aide de la console IAM.

Afin de créer un utilisateur administrateur, choisissez l'une des options suivantes :


****  

| Choisissez un moyen de gérer votre administrateur | À | En | Vous pouvez également | 
| --- | --- | --- | --- | 
| Dans IAM Identity Center (Recommandé) | Utiliser des informations d’identification à court terme pour accéder à AWS.C’est conforme aux bonnes pratiques en matière de sécurité. Pour plus d’informations sur les bonnes pratiques, consultez [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) dans le *Guide de l’utilisateur IAM*. | Suivant les instructions fournies dans [Mise en route](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) dans le Guide de l’utilisateur AWS IAM Identity Center . | Configurez l'accès par programmation en [configurant le AWS CLI à utiliser AWS IAM Identity Center](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html) dans le guide de l'AWS Command Line Interface utilisateur. | 
| Dans IAM (Non recommandé) | Utiliser les informations d’identification à long terme pour accéder à AWS. | Suivant les instructions fournies dans [Création d’un utilisateur IAM pour l’accès d’urgence](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html) dans le Guide de l’utilisateur IAM. | Configurer l’accès par programmation en suivant les instructions fournies dans [Gestion des clés d’accès pour les utilisateurs IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html) dans le Guide de l’utilisateur IAM. | 

Pour vous connecter en tant que nouvel utilisateur IAM, déconnectez-vous de la AWS console, puis utilisez l'URL suivante. Dans l'URL suivante, où *your\$1aws\$1account\$1id* est votre numéro de AWS compte sans les tirets (par exemple, si votre numéro de compte est, votre identifiant de AWS compte est) : `1234-5678-9012` AWS `123456789012`

```
https://your_aws_account_id.signin.aws.amazon.com/console/
```

Saisissez le nom utilisateur et le mot de passe IAM que vous venez de créer. Lorsque vous êtes connecté, la barre de navigation affiche « *votre\$1nom\$1utilisateur* @ *votre\$1id\$1de\$1compte\$1aws* ».

Si vous ne souhaitez pas que l'URL de votre page de connexion contienne votre identifiant de AWS compte, vous pouvez créer un alias de compte. Dans le tableau de bord IAM, choisissez **Personnaliser** et entrez un **alias de compte**. Il peut s'agir du nom de votre entreprise. Pour plus d'informations, consultez la section [Votre identifiant de AWS compte et son alias](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) dans le guide de l'utilisateur IAM.

Pour vous connecter après avoir créé un alias de compte, utilisez l'URL suivante :

```
https://your_account_alias.signin.aws.amazon.com/console/
```

Pour vérifier le lien de connexion des utilisateurs IAM pour votre compte, ouvrez la console IAM et vérifiez le lien sous **Lien de connexion des utilisateurs IAM** dans le tableau de bord.

Pour en savoir plus sur IAM, consultez le [guide de l'utilisateur Gestion des identités et des accès AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Installation et configuration de Docker
<a name="create-an-iam-user"></a>

Vous pouvez installer et configurer Docker en sélectionnant votre système d'exploitation préféré dans le guide d'utilisation d'[Install Docker Engine](https://docs.docker.com/engine/install/) et en suivant les instructions.

### Installation et configuration de la AWS CLI version 2
<a name="create-an-iam-user"></a>

Installez et configurez la version 2 de la AWS CLI en sélectionnant votre système d'exploitation préféré dans le guide de l'utilisateur d'[installation, de mise à jour et de désinstallation de la version 2 de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).

## 1. Création d'un fichier Dockerfile
<a name="dockerfile-ecr-vsctoolkit"></a>

Docker utilise un fichier appelé Dockerfile pour définir une image qui peut être transmise et stockée sur un référentiel distant. Avant de pouvoir télécharger une image dans un référentiel ECR, vous devez créer un Dockerfile, puis créer une image à partir de ce Dockerfile.

**Création d'un fichier Dockerfile**

1. Utilisez le Toolkit for VS Code Explorer pour accéder au répertoire dans lequel vous souhaitez stocker votre Dockerfile.

1. Créez un nouveau fichier appelé **Dockerfile**.
**Note**  
VS Code peut vous demander de sélectionner un type de fichier ou une extension de fichier. Dans ce cas, sélectionnez du **texte brut**. Vs Code possède une extension « dockerfile ». Cependant, nous vous déconseillons de l'utiliser. Cela est dû au fait que l'extension peut provoquer des conflits avec certaines versions de Docker ou d'autres applications associées.

**Modifiez votre Dockerfile à l'aide de VS Code**

Si votre fichier Dockerfile possède une extension de fichier, ouvrez le menu contextuel (clic droit) du fichier et supprimez l'extension de fichier.

Une fois l'extension de fichier supprimée de votre Dockerfile :

1. Ouvrez le Dockerfile vide directement dans VS Code.

1. Copiez le contenu de l'exemple suivant dans votre Dockerfile :  
**Example Modèle d'image de fichier Dockerfile**  

   ```
   FROM ubuntu:18.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Il s'agit d'un fichier Dockerfile qui utilise une image Ubuntu 18.04. Les instructions **RUN** mettent à jour les caches des packages. Installez les packages logiciels pour le serveur web et écrivent ensuite le contenu « Hello World \$1 » à la racine du document du serveur web. L'instruction **EXPOSE** expose le port 80 sur le conteneur et l'instruction **CMD** démarre le serveur web.

1. Enregistrez votre fichier Dockerfile.
**Important**  
Assurez-vous que le nom de votre Dockerfile n'est pas associé à une extension. Un Dockerfile avec des extensions peut provoquer des conflits avec certaines versions de Docker ou d'autres applications associées.

## 2. Créez votre image à partir de votre Dockerfile
<a name="build-docker-image"></a>

Le Dockerfile que vous avez créé contient les informations nécessaires pour créer une image pour un programme. Avant de pouvoir transférer cette image vers votre instance Amazon ECR, vous devez d'abord créer l'image.

**Créez une image à partir de votre Dockerfile**

1. Utilisez la CLI Docker ou une CLI intégrée à votre instance de Docker pour accéder au répertoire contenant votre Dockerfile.

1. Exécutez la commande **Docker build** pour créer l'image définie dans votre Dockerfile.

   ```
             docker build -t hello-world .
   ```

1. Exécutez la commande **Docker images** pour vérifier que l'image a été créée correctement.

   ```
   docker images --filter reference=hello-world
   ```  
**Example exemple de sortie :**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 
**Note**  
Cette étape n'est pas nécessaire pour créer ou transférer votre image, mais vous pouvez voir comment fonctionne l'image du programme lorsqu'elle est exécutée.

   Pour exécuter l'image nouvellement créée, utilisez la commande **Docker run**.

   ```
   docker run -t -i -p 80:80 hello-world
   ```

   L'option **-p** spécifiée dans l'exemple précédent mappe le **port 80** exposé du conteneur au **port 80** du système hôte. Si vous utilisez Docker localement, accédez à [http://localhost:80](http://localhost:80) à l'aide de votre navigateur Web. Si le programme a fonctionné correctement, un « Hello World \$1 » la déclaration s'affiche.

   Pour de plus amples informations sur la commande **Docker run**, consultez la [Référence Docker Run](https://docs.docker.com/engine/reference/run/) dans le manuel de référence Docker.

## 3. Création d'un nouveau référentiel
<a name="create-repository"></a>

Pour charger votre image dans votre instance Amazon ECR, créez un nouveau référentiel dans lequel elle peut être stockée.

**Création d'un nouveau référentiel Amazon ECR**

1. Dans la **barre d'activité** VS Code, choisissez l'**icône du AWS Toolkit**.

1. Développez le menu ** AWS Explorer**.

1. Localisez la AWS région par défaut associée à votre AWS compte. Ensuite, sélectionnez-le pour voir la liste des services proposés par le Toolkit for VS Code.

1. Choisissez l'option **ECR \$1** pour démarrer le processus de **création d'un nouveau référentiel**.

1. Suivez les instructions pour terminer le processus.

1. Une fois l'opération terminée, vous pouvez accéder à votre nouveau dépôt depuis la section **ECR** du menu de l' AWS Explorateur.

## 4. Appuyez, tirez et supprimez des images
<a name="push-image"></a>

Après avoir créé une image à partir de votre Dockerfile et créé un référentiel, vous pouvez transférer votre image dans votre référentiel Amazon ECR. En outre, à l'aide de l' AWS explorateur avec Docker et de la AWS CLI, vous pouvez effectuer les opérations suivantes :
+ Extraire une image d'un référentiel.
+ Supprimer une image stockée dans votre référentiel.
+ Supprimer votre référentiel.

**Authentifiez Docker avec votre registre par défaut**

L'authentification est requise pour échanger des données entre les instances Amazon ECR et Docker. Pour authentifier Docker avec votre registre :

1. Ouvrez un système d'exploitation en ligne de commande connecté à votre instance de AWS CLI. 

1. Utilisez **get-login-password**cette méthode pour vous authentifier auprès de votre registre ECR privé.

   ```
   aws ecr get-login-password --region region | docker login --username AWS --password-stdin AWS_account_id.dkr.ecr.region.amazonaws.com
   ```
**Important**  
Dans la commande précédente, vous devez mettre à jour **region** les informations spécifiques **AWS\$1account\$1id** à votre AWS compte et les mettre à jour.

**Marquez et insérez une image dans votre référentiel**

Après avoir authentifié Docker avec votre instance de AWS, envoyez une image dans votre référentiel.

1. Utilisez la commande **Docker images** pour afficher les images que vous avez stockées localement et identifier celle que vous souhaitez étiqueter.

   ```
   docker images
   ```  
**Example exemple de sortie :**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Créez votre image Docker à l’aide de la commande **Docker tag**.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. Transférez l'image balisée vers votre dépôt à l'aide de la commande **Docker tag**.

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example exemple de sortie :**  

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

Une fois que votre image balisée a été correctement téléchargée dans votre dépôt, elle est visible dans le menu de l' AWS Explorateur.

**Extraire une image depuis Amazon ECR**
+ Vous pouvez extraire une image vers votre instance locale de la commande **Docker tag**.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example exemple de sortie :**  

  ```
  The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
  e9ae3c220b23: Pushed
  a6785352b25c: Pushed
  0998bf8fb9e9: Pushed
  0a85502c06c9: Pushed
  latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
  ```

**Supprimer une image de votre référentiel Amazon ECR**

Il existe deux méthodes pour supprimer une image de VS Code. La première méthode consiste à utiliser l' AWS explorateur.

1. Dans l' AWS explorateur, développez le **menu ECR**

1. Développez le référentiel dans lequel vous souhaitez supprimer une image

1. Choisissez la balise d'image associée à l'image que vous souhaitez supprimer, en ouvrant le menu contextuel (clic droit)

1. Choisissez le **tag Supprimer...** option pour supprimer toutes les images stockées associées à cette balise

**Supprimer une image à l'aide de la AWS CLI**
+ Vous pouvez également supprimer une image de votre dépôt à l'aide de la batch-delete-image commande **AWS ecr.**

  ```
  AWS ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example exemple de sortie :**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Supprimer un référentiel de votre instance Amazon ECR**

Il existe deux méthodes pour supprimer un dépôt de VS Code. La première méthode consiste à utiliser l' AWS explorateur.

1. Dans l' AWS explorateur, développez le **menu ECR**

1. Choisissez le référentiel que vous souhaitez supprimer en ouvrant le menu contextuel (clic droit)

1. Choisissez **Supprimer le référentiel...** option vers le référentiel choisi

**Supprimer un référentiel Amazon ECR de la CLI AWS**
+ Vous pouvez supprimer un dépôt à l'aide de la commande **AWS ecr delete-repository**.
**Note**  
Par défaut, vous ne pouvez pas supprimer un référentiel contenant des images. Cependant, l'indicateur **--force** le permet.

  ```
   AWS ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example exemple de sortie :**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```