

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.

# Tutoriel : créer et envoyer une image Docker vers Amazon ECR avec CodePipeline (type V2)
<a name="tutorials-ecr-build-publish"></a>

Ce didacticiel vous aide à créer une action de génération CodePipeline qui exécute et envoie votre image Docker vers Amazon ECR après une modification de votre code source. Ce didacticiel explique également comment ajouter une action de déploiement Amazon ECS qui déploie votre image poussée.

**Important**  
Dans le cadre de la création d'un pipeline dans la console, un compartiment d'artefacts S3 sera utilisé par CodePipeline pour les artefacts. (Ceci est différent du compartiment utilisé pour une action source S3.) Si le compartiment d'artefacts S3 se trouve dans un compte différent de celui de votre pipeline, assurez-vous que le compartiment d'artefacts S3 appartient Comptes AWS à une personne sûre et fiable.

**Note**  
Ce didacticiel concerne l'action de ECRBuild AndPublish création d'un CodePipeline pipeline avec un référentiel GitHub source et une action standard Amazon ECS pour le déploiement sur un cluster Amazon ECS. Pour un didacticiel utilisant un pipeline avec un référentiel d'images ECR comme source pour une action de déploiement d'Amazon ECS vers le CodeDeploy bleu/vert dans CodePipeline, consultez. [Tutoriel : Création d'un pipeline avec une source Amazon ECR et déploiement ECS-to-CodeDeploy](tutorials-ecs-ecr-codedeploy.md)

**Important**  
Cette action utilise le CodeBuild calcul CodePipeline géré pour exécuter des commandes dans un environnement de génération. L'exécution de l'action des commandes entraînera des frais distincts. AWS CodeBuild

## Conditions préalables
<a name="tutorials-ecr-build-publish-prereqs"></a>

Avant de pouvoir créer votre pipeline de déploiement continu à l'aide de ce didacticiel, vous devez avoir mis en place certaines ressources. Voici ce dont vous avez besoin pour commencer :

**Note**  
Toutes ces ressources devraient être créées au sein de la même AWS région.
+ Un référentiel de contrôle de source (utilisé dans ce didacticiel GitHub) dans lequel vous ajouterez les éléments suivants pour ce didacticiel :
  + À l'étape 1, vous allez ajouter un exemple de Dockerfile à votre référentiel source en tant qu'artefact d'entrée pour l'action de ECRBuild AndPublish construction dans. CodePipeline
  + À l'étape 2, vous allez ajouter un exemple de fichier imagedefinitions.json à votre référentiel source comme condition préalable à l'action de déploiement standard d'Amazon ECS dans. CodePipeline
+ Un référentiel d'images Amazon ECR qui contient une image que vous avez créée à partir de votre Dockerfile. Pour plus d'informations, consultez les sections [Création d'un référentiel](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) et diffusion [d'une image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) dans le *guide de l'utilisateur d'Amazon Elastic Container Registry*.
+ Un cluster et un service Amazon ECS créés dans la même région que le référentiel d'images. Pour plus d'informations, consultez les sections [Création d'un cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) et [Création d'un service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.

Dès lors que ces prérequis sont respectés, vous pouvez commencer à créer votre pipeline de déploiement continu à l'aide du didacticiel.

## Étape 1 : ajouter un Dockerfile à votre référentiel source
<a name="tutorials-ecr-build-publish-file"></a>

Ce didacticiel utilise cette ECRBuild AndPublish action pour créer votre image Docker et l'envoyer vers Amazon ECR. L'action de calcul géré est CodePipeline utilisée CodeBuild pour exécuter les commandes de connexion ECR et de transmission d'image. Il n'est pas nécessaire d'ajouter un `buildspec.yml` fichier à votre dépôt de code source pour savoir CodeBuild comment procéder. Vous ne fournissez que le Dockerfile dans votre référentiel comme suit pour cet exemple.

Collez cet exemple de texte pour créer votre `Dockerfile` fichier. Cet exemple de Dockerfile est le même que celui utilisé dans les instructions relatives à l'image ECR figurant dans les conditions préalables.

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest

# Install dependencies
RUN yum update -y && \
 yum install -y httpd

# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html

# Configure apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
 echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
 chmod 755 /root/run_apache.sh

EXPOSE 80

CMD /root/run_apache.sh
```

**Pour ajouter un fichier `Dockerfile` à votre référentiel source**

1. Ouvrez un éditeur de texte, puis copiez et collez le Dockerfile ci-dessus dans un nouveau fichier.

1. Validez votre fichier `Dockerfile` et transmettez-le à votre référentiel source.

   1. Ajoutez le fichier.

      ```
      git add .
      ```

   1. Validez la modification.

      ```
      git commit -m "Adding Dockerfile."
      ```

   1. Transmettez la validation.

      ```
      git push
      ```

   Assurez-vous de placer le fichier à la racine de votre dépôt.

   ```
   / Dockerfile
   ```

## Étape 2 : ajouter un fichier imagedefinitions.json à votre référentiel source
<a name="w2aac13b9c15"></a>

Ce didacticiel utilise l'action de déploiement standard d'Amazon ECS CodePipeline pour déployer votre conteneur sur votre cluster Amazon ECS. L'action de déploiement standard d'Amazon ECS nécessite un fichier imagedefinitions.json contenant le nom et l'URI de votre image. Pour plus d'informations sur le fichier imagedefinitions.json, consultez. [fichier imagedefinitions.json pour les actions de déploiement standard d'Amazon ECS](file-reference.md#pipelines-create-image-definitions)

Collez cet exemple de texte pour créer votre `imagedefinitions.json` fichier. Utilisez le nom indiqué dans votre Dockerfile, par exemple`hello-world`, et utilisez l'URI de votre référentiel Amazon ECR dans lequel l'image est stockée.

```
[
  {
    "name": "hello-world",
    "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo"
  }
]
```

**Pour ajouter un `imagedefinitions.json` fichier à votre référentiel source**

1. Ouvrez un éditeur de texte, puis copiez et collez l'exemple ci-dessus dans un nouveau fichier.

1. Validez votre fichier `imagedefinitions.json` et transmettez-le à votre référentiel source.

   1. Ajoutez le fichier.

      ```
      git add .
      ```

   1. Validez la modification.

      ```
      git commit -m "Adding imagedefinitions.json."
      ```

   1. Transmettez la validation.

      ```
      git push
      ```

   Assurez-vous de placer le fichier à la racine de votre dépôt.

   ```
   / imagedefinitions.json
   ```

## Étape 3 : Création de votre pipeline
<a name="tutorials-ecr-build-publish-pipeline"></a>

Utilisez l' CodePipeline assistant pour créer les étapes de votre pipeline et connecter votre référentiel source.

**Pour créer le pipeline**

1. Ouvrez la CodePipeline console à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Sur la page **Bienvenue**, la page **Démarrez** ou la page **Pipelines**, choisissez **Créer un pipeline**.

1. Sur la page **Étape 1 : Choisir une option de création**, sous **Options de création**, choisissez l'option **Créer un pipeline personnalisé**. Choisissez **Suivant**.

1. À **l'étape 2 : Choisissez les paramètres du pipeline**, dans **Nom du pipeline**, entrez**MyPipeline**.

1. CodePipeline fournit des pipelines de type V1 et V2, dont les caractéristiques et le prix diffèrent. Le type V2 est le seul type que vous pouvez choisir dans la console. Pour plus d'informations, consultez la section [Types de pipelines](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Pour plus d'informations sur la tarification CodePipeline, consultez la section [Tarification](https://aws.amazon.com/codepipeline/pricing/).

1. Dans **Rôle de service**, choisissez **Nouveau rôle de service** pour autoriser CodePipeline la création d'un rôle de service dans IAM.

1. Laissez les paramètres sous **Advanced settings (Paramètres avancés)** à leurs valeurs par défaut, puis choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter un stage source**, ajoutez un stage source :

   1. Dans **Source provider**, sélectionnez **GitHub (via GitHub App)**.

   1. Sous **Connexion**, choisissez une connexion existante ou créez-en une nouvelle. Pour créer ou gérer une connexion pour votre action GitHub source, consultez[GitHub connexions](connections-github.md).

   1. Dans **Nom du référentiel**, choisissez le nom de votre référentiel GitHub .

   1. Dans **Branche par défaut**, choisissez la branche que vous souhaitez spécifier lorsque le pipeline est démarré manuellement ou avec un événement source autre qu'une balise Git. Si la source de la modification n'est pas le déclencheur ou si une exécution de pipeline a été lancée manuellement, la modification utilisée sera le commit HEAD de la branche par défaut.

   Choisissez **Suivant**.

1. Sur la page **Étape 4 : Ajouter une étape de construction**, choisissez **Autres fournisseurs de** génération **ECRBuildAndPublish**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ecrbuild-wizard.png)

   1. Pour le **nom du référentiel ECR**, choisissez votre référentiel d'images.

   1. Choisissez **Suivant**.

1. À **l'étape 5 : Ajouter une phase de test**, choisissez **Ignorer l'étape de test**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   Choisissez **Suivant**.

1. Sur la page **Étape 6 : Ajouter une étape de déploiement**, choisissez **Ignorer l'étape de déploiement**. Vous allez ajouter l'action ECS à l'étape suivante.

1. Sur la page **Étape 7 : Révision**, passez en revue la configuration de votre pipeline et choisissez **Create pipeline** pour créer le pipeline.

1. Modifiez votre pipeline pour ajouter l'action de déploiement Amazon ECS à votre pipeline :

   1. Dans le coin supérieur droit, choisissez **Modifier**.

   1. Au bas du diagramme, choisissez **\$1 Ajouter une étape**. Dans le champ **Nom de l'étape**, saisissez un nom, tel que **Deploy**.

   1. Choisissez **\$1 Ajouter un groupe d'actions**.

   1. Dans **Nom de l'action**, entrez un nom. 

   1. Dans **Action provider**, sélectionnez Amazon ECS. Acceptez la région du pipeline comme **Région** par défaut.

   1. Dans **Artefacts d'**entrée, choisissez l'artefact d'entrée depuis le stage source, par exemple`SourceArtifact`. 

   1. Dans le **champ Nom du cluster**, choisissez le cluster Amazon ECS dans lequel votre service est exécuté.

   1. Dans **Nom du service**, choisissez le service à mettre à jour.

   1. Choisissez **Enregistrer**.

   1. Dans l'étape que vous modifiez, choisissez **Effectué**. Dans le volet AWS CodePipeline , choisissez **Enregistrer** puis **Enregistrer** dans le message d'avertissement.

   1. Pour soumettre vos modifications et lancer la génération d'un pipeline, choisissez **Changement de version**, puis **Publication**.

1. Une fois le pipeline exécuté, visualisez sa structure et son état.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ecrbuild-ecsaction.png)

1. Une fois le pipeline exécuté avec succès, choisissez **Afficher les détails** pour afficher les journaux de l'action afin de visualiser le résultat de l'action de calcul gérée.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ecrbuild-logs.png)

1. Résoudre les problèmes liés à l'échec des actions. Par exemple, l'action de déploiement ECS peut échouer si le fichier imagedefinitions.json ne se trouve pas dans le référentiel source. Voici un exemple du message d'erreur qui s'affiche lorsque le fichier imagedefinitions.json est manquant.   
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ecrbuild-ecsdebug.png)

## Étape 4 : Test de votre pipeline
<a name="tutorials-ecr-build-publish-test"></a>

Votre pipeline doit disposer de tous les éléments nécessaires pour exécuter un déploiement AWS continu end-to-end natif. À présent, testez sa fonctionnalité en transmettant une modification de code à votre référentiel source.

**Pour tester votre pipeline**

1. Apportez une modification de code au référentiel source que vous avez configuré, validez-la, puis transmettez-la.

1. Ouvrez la CodePipeline console à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Choisissez votre pipeline dans la liste.

1. Observez la progression du pipeline dans ses différentes phases. Votre pipeline doit être terminé et votre action envoie l'image Docker vers ECR créée à partir de votre modification de code.