

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 : Déploiement sur des instances Amazon EC2 avec CodePipeline
<a name="tutorials-ec2-deploy"></a>

Ce didacticiel vous aide à créer une action de déploiement CodePipeline qui déploie votre code sur les instances que vous avez configurées dans Amazon EC2.

**Note**  
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**  
L'action de `EC2` déploiement n'est disponible que pour les pipelines de type V2.

## Conditions préalables
<a name="tutorials-ec2-deploy-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 un exemple de `script.sh` fichier.
+ Vous devez utiliser un rôle de CodePipeline service existant qui a été mis à jour avec les autorisations nécessaires pour cette action. Pour mettre à jour votre rôle de service, consultez[Autorisations de politique de rôle de service pour l'action de déploiement EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

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 : créer des instances Linux Amazon EC2
<a name="tutorials-ec2-deploy-instances"></a>

Au cours de cette étape, vous créez les instances Amazon EC2 dans lesquelles vous déploierez un exemple d'application. Dans le cadre de ce processus, créez un rôle d'instance dans IAM, si vous n'en avez pas déjà créé un dans la région où vous souhaitez créer des ressources.

**Pour créer un rôle d'instance**

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

1. Dans le tableau de bord de la console, choisissez **Rôles**.

1. Choisissez **Créer un rôle**.

1. Sous **Sélectionner le type d'entité de confiance**, sélectionnez **Service AWS**. Sous **Choisir un cas d'utilisation**, sélectionnez **EC2.** Sous **Select your use case (Sélectionner votre cas d'utilisation)**, choisissez **EC2**. Choisissez **Suivant**.

1. Recherchez et sélectionnez la politique nommée **`AmazonSSMManagedEC2InstanceDefaultPolicy`**. 

1. Recherchez et sélectionnez la politique nommée **`AmazonSSMManagedInstanceCore`**. Choisissez **Suivant : Balises**.

1. Choisissez **Suivant : Vérification**. Saisissez un nom pour le rôle (par exemple, **EC2InstanceRole**).
**Note**  
Notez le nom de votre rôle pour l'étape suivante. Vous choisissez ce rôle lorsque vous créez votre instance.
**Note**  
Vous allez ajouter des autorisations à ce rôle afin de permettre l'accès au compartiment d'artefacts S3 pour votre pipeline après la création du pipeline.

   Choisissez **Créer un rôle**.

**Pour lancer des instances**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans la navigation latérale, choisissez **Instances**, puis sélectionnez **Launch instances** en haut de la page.

1. Pour **Name (Nom)**, entrez **MyInstances**. Cela affecte à l'instance une balise **Key** of **Name** et une balise **Value** de**MyInstances**. 

1. Sous **Images de l'application et du système d'exploitation (Amazon Machine Image)**, recherchez l'option AMI **Amazon Linux** avec le AWS logo et assurez-vous qu'elle est sélectionnée. (Cette AMI est décrite comme l'AMI Amazon Linux 2 (HVM) et est étiquetée « éligible au niveau gratuit ».)

1. Sous **Type d'instance**, choisissez le `t2.micro` type éligible au niveau gratuit comme configuration matérielle de votre instance.

1. Sous **Paire de clés (connexion)**, choisissez une paire de clés ou créez-en une. 

1. Sous **Paramètres réseau**, assurez-vous que le statut est **Activé**.

1. Développez **Advanced Details** (Détails avancés). Dans le **profil d'instance IAM**, choisissez le rôle IAM que vous avez créé lors de la procédure précédente (par exemple,**EC2InstanceRole**).
**Note**  
Ne laissez pas le rôle d'instance vide car cela crée un rôle par défaut et ne sélectionne pas le rôle que vous avez créé.

1. Sous **Résumé**, sous **Nombre d'instances**, entrez`2`.

1. Choisissez **Launch instance** (Lancer une instance). 

1. Sur la page **Instances**, vous pouvez afficher le statut du lancement. Lorsque vous lancez une instance, son état initial est `pending`. Une fois que l'instance a démarré, son état devient `running` et elle reçoit un nom DNS public. (Si la colonne **DNS public** ne s'affiche pas, choisissez l'icône **Afficher/Masquer**, puis sélectionnez **DNS public**.)

## Étape 2 : ajouter des autorisations de bucket d'artefacts au rôle d'instance EC2
<a name="tutorials-ec2-deploy-role-s3"></a>

Vous devez mettre à jour le rôle d'instance EC2 que vous avez créé pour votre instance afin de lui permettre d'accéder au bucket d'artefacts de votre pipeline. 

**Note**  
Lorsque vous créez l'instance, vous créez ou utilisez un rôle d'instance EC2 existant. Pour éviter les `Access Denied` erreurs, vous devez ajouter des autorisations de compartiment S3 au rôle d'instance afin de donner à l'instance des autorisations d'accès au compartiment d' CodePipeline artefacts. Créez un rôle par défaut ou mettez à jour votre rôle existant avec l'`s3:GetObject`autorisation limitée au compartiment d'artefacts correspondant à la région de votre pipeline.

1. Accédez à votre pipeline dans la CodePipeline console. Cliquez sur **Paramètres**. Affichez le nom et l'emplacement du magasin d'artefacts d'un pipeline existant. Notez le nom de ressource Amazon (ARN) du compartiment d'artefacts et copiez-le.

1. Accédez à la console IAM, puis choisissez **Roles (Rôles)**. Choisissez le rôle d'instance que vous avez créé à l'étape 1 de ce didacticiel.

1. Sous l'onglet **Autorisations**, sélectionnez **Ajouter une politique en ligne**.

1. Ajoutez le code JSON suivant au document de politique, en remplaçant la valeur du `Resource` champ par l'ARN du bucket.

   ```
   {
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::BucketName"
   }
   ```

1. Choisissez **Mettre à jour**.

## Étape 3 : ajouter un fichier de script à votre dépôt
<a name="tutorials-ec2-deploy-file"></a>

Collez cet exemple de texte pour créer votre `script.sh` fichier pour l'étape post-script du déploiement.

```
echo "Hello World!" 
```

**Pour ajouter un fichier `script.sh` à votre référentiel source**

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

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

   1. Ajoutez le fichier.

      ```
      git add .
      ```

   1. Validez la modification.

      ```
      git commit -m "Adding script.sh."
      ```

   1. Transmettez la validation.

      ```
      git push
      ```

   Notez le chemin dans votre dépôt.

   ```
   /MyDemoRepo/test/script.sh
   ```

## Étape 4 : Création de votre pipeline
<a name="tutorials-ec2-deploy-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 **Utiliser le rôle de service existant**, puis choisissez le rôle de CodePipeline service qui a été mis à jour avec les autorisations requises pour cette action. Pour configurer votre rôle CodePipeline de service pour cette action, consultez[Autorisations de politique de rôle de service pour l'action de déploiement EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

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 .

   Choisissez **Suivant**.

1. Sur la page **Étape 4 : Ajouter une phase de construction**, choisissez **Ignorer**.

1. Sur la page **Étape 5 : Ajouter une étape de déploiement**, choisissez **EC2.**  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ec2deploy-action.png)

   1. Pour le **répertoire cible**, entrez le répertoire de l'instance vers laquelle vous souhaitez effectuer le déploiement, par exemple`/home/ec2-user/testhelloworld`.
**Note**  
Spécifiez le répertoire de déploiement que vous souhaitez que l'action utilise sur l'instance. L'action automatisera la création du répertoire spécifié sur l'instance dans le cadre du déploiement.

   1. Pour **PostScript**, entrez le chemin et le nom de fichier de votre script, par exemple`test/script.sh`.

   1. Choisissez **Suivant**.

1. Sur la page **Étape 6 : Vérification**, vérifiez la configuration de votre pipeline, puis choisissez **Créer un pipeline** pour créer le pipeline.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ec2deploy-pipeline.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/ec2deploy-logs.png)  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ec2deploy-logs2.png)

## Étape 5 : Testez votre pipeline
<a name="tutorials-ec2-deploy-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 déploie le script sur vos instances.

1. Pour plus d'informations sur la résolution des problèmes, consultez[L'action de déploiement EC2 échoue avec un message d'erreur `No such file`](troubleshooting.md#troubleshooting-ec2-deploy).