

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.

# CodePipeline tutoriels
<a name="tutorials"></a>

Une fois les étapes terminées[Commencer avec CodePipeline](getting-started-codepipeline.md), vous pouvez essayer l'un des AWS CodePipeline didacticiels de ce guide de l'utilisateur.

**Topics**
+ [Tutoriel : Déploiement sur des instances Amazon EC2 avec CodePipeline](tutorials-ec2-deploy.md)
+ [Tutoriel : créer et envoyer une image Docker vers Amazon ECR avec CodePipeline (type V2)](tutorials-ecr-build-publish.md)
+ [Tutoriel : Déploiement sur Amazon EKS avec CodePipeline](tutorials-eks-deploy.md)
+ [Tutoriel : Création d'un pipeline qui exécute des commandes avec compute (type V2)](tutorials-commands.md)
+ [Tutoriel : utilisez les balises Git pour démarrer votre pipeline](tutorials-github-tags.md)
+ [Tutoriel : Filtrez les noms de branches pour les pull requests permettant de démarrer votre pipeline (type V2)](tutorials-github-featurebranches.md)
+ [Tutoriel : Utiliser des variables au niveau du pipeline](tutorials-pipeline-variables.md)
+ [Didacticiel : Création d'un pipeline simple (compartiment S3)](tutorials-simple-s3.md)
+ [Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md)
+ [Didacticiel : Création d'un pipeline à quatre étapes](tutorials-four-stage-pipeline.md)
+ [Tutoriel : Configuration d'une règle d' CloudWatch événements pour recevoir des notifications par e-mail en cas de modification de l'état du pipeline](tutorials-cloudwatch-sns-notifications.md)
+ [Tutoriel : Créez un pipeline qui crée et teste votre application Android avec AWS Device Farm](tutorials-codebuild-devicefarm.md)
+ [Tutoriel : Créez un pipeline qui teste votre application iOS avec AWS Device Farm](tutorials-codebuild-devicefarm-S3.md)
+ [Tutoriel : Création d'un pipeline à déployer sur Service Catalog](tutorials-S3-servicecatalog.md)
+ [Tutoriel : Création d'un pipeline avec AWS CloudFormation](tutorials-cloudformation.md)
+ [Tutoriel : Création d'un pipeline qui utilise des variables issues d'actions de AWS CloudFormation déploiement](tutorials-cloudformation-action.md)
+ [Tutoriel : Déploiement standard d'Amazon ECS avec CodePipeline](ecs-cd-pipeline.md)
+ [Tutoriel : Création d'un pipeline avec une source Amazon ECR et déploiement ECS-to-CodeDeploy](tutorials-ecs-ecr-codedeploy.md)
+ [Didacticiel : Création d'un pipeline qui déploie un kit Amazon Alexa Skill](tutorials-alexa-skills-kit.md)
+ [Tutoriel : Création d'un pipeline qui utilise Amazon S3 comme fournisseur de déploiement](tutorials-s3deploy.md)
+ [Tutoriel : Créez un pipeline qui publie votre application sans serveur sur AWS Serverless Application Repository](tutorials-serverlessrepo-auto-publish.md)
+ [Tutoriel : Déploiements de fonctions Lambda avec CodePipeline](tutorials-lambda-deploy.md)
+ [Tutoriel : Utilisation de variables avec des actions d'appel Lambda](tutorials-lambda-variables.md)
+ [Tutoriel : Utiliser une AWS Step Functions action d'appel dans un pipeline](tutorials-step-functions.md)
+ [Tutoriel : Création d'un pipeline utilisé AWS AppConfig comme fournisseur de déploiement](tutorials-AppConfig.md)
+ [Tutoriel : Utiliser un clone complet avec une source de GitHub pipeline](tutorials-github-gitclone.md)
+ [Tutoriel : Utiliser un clone complet avec une source de CodeCommit pipeline](tutorials-codecommit-gitclone.md)
+ [Tutoriel : Création d'un pipeline avec des actions AWS CloudFormation StackSets de déploiement](tutorials-stackset-deployment.md)
+ [Tutoriel : Création d'une règle de vérification des variables pour un pipeline comme condition d'entrée](tutorials-varcheckrule.md)

# 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).

# 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.

# Tutoriel : Déploiement sur Amazon EKS avec CodePipeline
<a name="tutorials-eks-deploy"></a>

Ce didacticiel vous aide à créer une action de déploiement CodePipeline qui déploie votre code sur un cluster que vous avez configuré dans Amazon EKS.

L'action EKS soutient les clusters EKS publics et privés. Les clusters privés sont le type recommandé par EKS ; toutefois, les deux types sont pris en charge.

**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**  
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

**Note**  
L'action de `EKS` déploiement n'est disponible que pour les pipelines de type V2.

## Conditions préalables
<a name="tutorials-eks-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 `deployment.yaml` fichier.
+ Vous devez utiliser un rôle de CodePipeline service existant que vous mettrez à jour avec les autorisations pour cette action indiquées [Étape 3 : mettre à jour la politique des rôles de CodePipeline service dans IAM](#tutorials-eks-deploy-role) ci-dessous. Les autorisations nécessaires dépendent du type de cluster que vous créez. Pour de plus amples informations, veuillez consulter [Autorisations relatives à la politique des rôles de](action-reference-EKS.md#action-reference-EKS-service-role).
+ Image fonctionnelle et balise de référentiel que vous avez transmises à ECR ou à votre référentiel d'images.

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 : (Facultatif) Création d'un cluster dans Amazon EKS
<a name="tutorials-eks-deploy-cluster"></a>

Vous pouvez choisir de créer un cluster EKS avec un point de terminaison public ou privé. 

Dans les étapes suivantes, vous allez créer un cluster public ou privé dans EKS. Cette étape est facultative si vous avez déjà créé votre cluster.

### Création d'un cluster public dans Amazon EKS
<a name="tutorials-eks-deploy-cluster-public"></a>

Au cours de cette étape, vous allez créer un cluster dans EKS.

**Création d'un cluster public**

1. Ouvrez la console EKS, puis choisissez **Create cluster**.

1. Dans **Nom**, nommez votre cluster. Choisissez **Suivant**.

1. Choisissez **Créer**.

### Création d'un cluster privé dans Amazon EKS
<a name="tutorials-eks-deploy-cluster-private"></a>

Si vous choisissez de créer un cluster avec un point de terminaison privé, assurez-vous de n'associer que les sous-réseaux privés et assurez-vous qu'ils disposent d'une connexion Internet.

Suivez les cinq sous-étapes suivantes pour créer un cluster avec un point de terminaison privé.

**Création d'un VPC dans la console**

1. Ouvrez la console VPC, puis choisissez Create **VPC**.

1. Sous **Paramètres VPC**, choisissez **VPC et plus encore**.

1. Choisissez de créer un sous-réseau public et 4 sous-réseaux privés. Sélectionnez **Create VPC** (Créer un VPC).

1. Sur la page des sous-réseaux, sélectionnez **Privé**. 

**Déterminez les sous-réseaux privés de votre VPC**

1. Accédez à votre VPC et choisissez l'ID du VPC pour ouvrir la page de détails du VPC.

1. Sur la page de détails du VPC, choisissez l'onglet **Carte des ressources**.

1. Consultez le schéma et notez vos sous-réseaux privés. Les sous-réseaux s'affichent avec des étiquettes indiquant leur statut public ou privé, et chaque sous-réseau est mappé à une table de routage.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/eks-deploy-subnets.png)

   Notez qu'un cluster privé comportera tous les sous-réseaux privés.

1. Créez un sous-réseau public pour héberger la passerelle NAT. Vous ne pouvez attacher qu'une seule passerelle Internet à un VPC à la fois.

**Création d'une passerelle NAT dans le sous-réseau public**

1. Dans le sous-réseau public, créez une passerelle NAT. Accédez à la console VPC, puis choisissez les passerelles **Internet**. Choisissez **Créer une passerelle Internet**.

1. Dans Nom, entrez le nom de votre passerelle Internet. Choisissez **Créer une passerelle Internet**.

Mettez à jour la table de routage du sous-réseau privé afin de diriger le trafic vers la passerelle NAT.

**Ajoutez la passerelle NAT à vos tables de routage pour vos sous-réseaux privés**

1. **Accédez à la console VPC, puis choisissez Subnets.**

1. Pour chaque sous-réseau privé, choisissez-le, puis choisissez la table de routage pour ce sous-réseau sur la page de détails, Choisissez **Modifier la table de routage**. 

1. Mettez à jour la table de routage du sous-réseau privé afin de diriger le trafic Internet vers la passerelle NAT. Choisissez **Ajouter une route**. Choisissez la **passerelle NAT** parmi les options à ajouter. Choisissez la passerelle Internet que vous avez créée.

1. Pour le sous-réseau public, créez une table de routage personnalisée. Vérifiez que la liste de contrôle d'accès réseau (ACL) de votre sous-réseau public autorise le trafic entrant depuis le sous-réseau privé.

1. Sélectionnez **Enregistrer les modifications**.

Au cours de cette étape, vous allez créer un cluster dans EKS.

**Création d'un cluster privé**

1. Ouvrez la console EKS, puis choisissez **Create cluster**.

1. Dans **Nom**, nommez votre cluster. Choisissez **Suivant**.

1. Spécifiez votre VPC et d'autres informations de configuration. Choisissez **Créer**.

Votre cluster EKS peut être un cluster public ou privé. Cette étape concerne les clusters qui ont UNIQUEMENT un point de terminaison privé. Assurez-vous que si votre cluster est privé.

## Étape 2 : configurer votre cluster privé dans Amazon EKS
<a name="tutorials-eks-deploy-cluster-private-configure"></a>

Cette étape n'est applicable que si vous avez créé un cluster privé. Cette étape concerne les clusters qui ont UNIQUEMENT un point de terminaison privé. 

**Configurez votre cluster**

1. Attachez des sous-réseaux privés uniquement dans le cluster EKS sous l'onglet **Mise en réseau**. Joignez les sous-réseaux privés capturés dans la section **Déterminez les sous-réseaux privés de votre VPC ci-dessous**. [Étape 1 : (Facultatif) Création d'un cluster dans Amazon EKS](#tutorials-eks-deploy-cluster)

1. Assurez-vous que les sous-réseaux privés ont accès à Internet, car ils CodePipeline stockent et récupèrent les artefacts du compartiment d'artefacts S3 pour votre pipeline.

## Étape 3 : mettre à jour la politique des rôles de CodePipeline service dans IAM
<a name="tutorials-eks-deploy-role"></a>

Au cours de cette étape, vous allez mettre à jour un rôle de CodePipeline service existant`cp-service-role`, par exemple avec les autorisations requises CodePipeline pour vous connecter à votre cluster. Si vous n'avez pas de rôle existant, créez-en un nouveau.

Mettez à jour votre rôle de CodePipeline service en suivant les étapes suivantes.

**Pour mettre à jour votre politique relative CodePipeline aux rôles de service**

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. Recherchez votre rôle CodePipeline de service, par exemple`cp-service-role`.

1. Ajoutez une nouvelle politique en ligne.

1. Dans l'**éditeur de stratégie**, entrez ce qui suit.
   + Pour un cluster public, ajoutez les autorisations suivantes.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             }
         ]
     }
     ```

------
   + Pour un cluster privé, ajoutez les autorisations suivantes. Les clusters privés nécessiteront des autorisations supplémentaires pour votre VPC, le cas échéant.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
     
         "Statement": [
             {
                 "Sid": "EksClusterPolicy",
                 "Effect": "Allow",
                 "Action": "eks:DescribeCluster",
                 "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster"
             },
             {
                 "Sid": "EksVpcClusterPolicy",
                 "Effect": "Allow",
                 "Action": [
                     "ec2:DescribeDhcpOptions",
                     "ec2:DescribeNetworkInterfaces",
                     "ec2:DescribeRouteTables",
                     "ec2:DescribeSubnets",
                     "ec2:DescribeSecurityGroups",
                     "ec2:DescribeVpcs"
                 ],
                 "Resource": [
                     "*"
                 ]
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:CreateNetworkInterfacePermission",
                 "Resource": "*",
                 "Condition": {
                     "ArnEquals": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             },
             {
                 "Effect": "Allow",
                 "Action": "ec2:DeleteNetworkInterface",
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIfExists": {
                         "ec2:Subnet": [
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE",
                             "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE"
                         ]
                     }
                 }
             }
         ]
     }
     ```

------

1. Choisissez **Mettre à jour une politique**.

## Étape 4 : créer une entrée d'accès pour le rôle CodePipeline de service
<a name="tutorials-eks-deploy-access-entry"></a>

Au cours de cette étape, vous créez une entrée d'accès sur votre cluster qui ajoutera le rôle de CodePipeline service que vous avez mis à jour à l'étape 3, ainsi qu'une politique d'accès géré.

1. Ouvrez la console EKS et accédez à votre cluster.

1. Choisissez l’onglet **Access**.

1. Sous **Entrées d'accès IAM**, choisissez **Créer une entrée d'accès**.

1. Dans l'**ARN principal IAM**, entrez le rôle que vous venez de mettre à jour pour l'action, par exemple`cp-service-role`. Choisissez **Suivant**.

1. Sur la page **Étape 2 : Ajouter une politique d'accès**, dans **Nom de la politique**, choisissez la politique gérée pour l'accès, telle que`AmazonEKSClusterAdminPolicy`. Choisissez **Add policy (Ajouter la politique)**. Choisissez **Suivant**.
**Note**  
Il s'agit de la politique que l' CodePipeline action utilise pour communiquer avec Kubernetes. La meilleure pratique consiste à associer une politique personnalisée pour limiter les autorisations dans votre politique avec le moindre privilège plutôt que dans la politique administrative.

1. Sur la page de révision, choisissez **Créer**.

## Étape 5 : Création d'un référentiel source et ajout des fichiers de `helm chart` configuration
<a name="tutorials-eks-deploy-source"></a>

Au cours de cette étape, vous créez un fichier de configuration adapté à votre action (fichiers manifestes Kubernetes ou diagramme de Helm) et vous stockez le fichier de configuration dans votre référentiel source. Utilisez le fichier approprié à votre configuration. Pour plus d'informations, consultez [https://kubernetes. ](https://kubernetes.io/docs/reference/kubectl/quick-reference/)io/docs/reference/kubectl/quick[-reference/ ou https://helm. sh/docs/topics/charts](https://helm.sh/docs/topics/charts/)/.
+ Pour Kubernetes, utilisez un fichier manifeste.
+ Pour Helm, utilisez un graphique Helm.

1. Créez ou utilisez un GitHub référentiel existant.

1. Créez une nouvelle structure dans votre référentiel pour vos fichiers de diagramme de barre, comme indiqué dans l'exemple ci-dessous.

   ```
   mychart
   |-- Chart.yaml
   |-- charts
   |-- templates
   |   |-- NOTES.txt
   |   |-- _helpers.tpl
   |   |-- deployment.yaml
   |   |-- ingress.yaml
   |   `-- service.yaml
   `-- values.yaml
   ```

1. Ajoutez le fichier au niveau racine de votre dépôt.

## Étape 6 : Création de votre pipeline
<a name="tutorials-eks-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**MyEKSPipeline**.

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 le rôle de service que vous avez mis à jour à l'étape 3.

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 une source**, pour **Source provider**, choisissez **de créer une connexion à votre GitHub référentiel**.

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**, sélectionnez **Amazon EKS**.  
![\[Deploy configuration form with Helm selected, showing fields for release name and chart location.\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/eks-action-example.png)

   1. Sous **Type de configuration de déploiement**, choisissez **Helm**.

   1. Dans **Emplacement du graphique Helm**, entrez le nom de la version, tel que`my-release`. Pour l'**emplacement du graphique de barre** de barre, entrez le chemin de vos fichiers de graphique de barre, tel que`mychart`.

   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/eks-deploy-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.

# Tutoriel : Création d'un pipeline qui exécute des commandes avec compute (type V2)
<a name="tutorials-commands"></a>

Dans ce didacticiel, vous allez configurer un pipeline qui exécute en continu les commandes de génération fournies à l'aide de l'action Commandes dans une phase de génération. Pour plus d'informations sur l'action Commandes, consultez[Référence d'action des commandes](action-reference-Commands.md).

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

## Conditions préalables
<a name="tutorials-commands-prereq"></a>

Vous devez déjà disposer des éléments suivants :
+ Un GitHub référentiel. Vous pouvez utiliser le GitHub référentiel dans lequel vous l'avez créé[Tutoriel : Utiliser un clone complet avec une source de GitHub pipeline](tutorials-github-gitclone.md).

## Étape 1 : créer des fichiers source et les transférer vers votre GitHub dépôt
<a name="tutorials-commands-push"></a>

Dans cette section, vous allez créer et transférer vos exemples de fichiers source vers le référentiel que le pipeline utilise pour votre étape source. Dans cet exemple, vous produisez et publiez ce qui suit : 
+ Un fichier `README.txt`.

**Pour créer des fichiers source**

1. Créez un fichier avec le texte suivant :

   ```
   Sample readme file
   ```

1. Enregistrez le fichier sous le nom `README.txt`.

**Pour transférer des fichiers vers votre GitHub dépôt**

1. Poussez ou chargez les fichiers dans votre référentiel . Ces fichiers constituent l'artefact source créé par l'assistant **Create Pipeline (Création de pipeline)** pour votre action de déploiement dans AWS CodePipeline. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

   ```
   README.txt
   ```

1. Pour utiliser la ligne de commande Git à partir d'un référentiel cloné sur votre ordinateur local :

   1. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

      ```
      git add -A
      ```

   1. Exécutez la commande suivante pour valider les fichiers avec un message de validation.

      ```
      git commit -m "Added source files"
      ```

   1. Exécutez la commande suivante pour publier les fichiers depuis votre référentiel local vers votre référentiel  :

      ```
      git push
      ```

## Étape 2 : Créer votre pipeline
<a name="tutorials-commands-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une action GitHub (via GitHub App) pour le référentiel dans lequel les fichiers source sont stockés.
+ Une phase de construction avec l'action Commandes.

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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**MyCommandsPipeline**.

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.
**Note**  
Si vous utilisez un rôle de service existant, pour utiliser l'action Commandes, vous devez ajouter les autorisations suivantes pour le rôle de service. Réduisez les autorisations au niveau des ressources du pipeline en utilisant les autorisations basées sur les ressources dans la déclaration de politique relative aux rôles de service. Pour plus d'informations, consultez l'exemple de stratégie dans[Autorisations de politique des rôles de service](action-reference-Commands.md#action-reference-Commands-policy).  
journaux : CreateLogGroup
journaux : CreateLogStream
journaux : PutLogEvents

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 dépôt GitHub .com. 

   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. Vous pouvez également éventuellement spécifier des webhooks avec filtrage (déclencheurs). Pour de plus amples informations, veuillez consulter [Automatisez le démarrage des pipelines en utilisant des déclencheurs et des filtres](pipelines-triggers.md).

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, sélectionnez **Commandes**.
**Note**  
L'exécution de l'action Commandes entraînera des frais distincts. AWS CodeBuild

   Entrez la commande suivante : 

   ```
   ls
   echo hello world
   cat README.txt
   echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}
   ```

   Choisissez **Suivant**.  
![\[Étape 4 : Ajouter la page de phase de construction d'un nouveau pipeline avec l'action Commandes\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/commands-wizard-screen.png)

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. À **l'étape 6 : Ajouter une phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   Choisissez **Suivant**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

1. Pour terminer la création de votre action, ajoutez une variable d'environnement à l'action qui produira une variable de sortie pour l'action. Dans l'action Commandes, choisissez **Modifier**. Sur l'écran d'**édition**, spécifiez un espace de noms variable pour votre action en le saisissant `compute` dans le champ **Espace de noms variable**.

   Ajoutez la variable CodeBuild de sortie`AWS_Default_Region`, puis choisissez **Ajouter une variable**.  
![\[La page d'édition pour l'action Commandes\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/commands-output-edit-var.png)

## Étape 3 : Exécutez votre pipeline et vérifiez les commandes de construction
<a name="tutorials-commands-update"></a>

Apportez une modification pour exécuter votre pipeline. Vérifiez que les commandes de génération ont été exécutées en consultant l'historique d'exécution, les journaux de génération et les variables de sortie.

**Pour afficher les journaux d'actions et les variables de sortie**

1. Une fois le pipeline exécuté avec succès, vous pouvez consulter les journaux et les résultats de l'action.

1. Pour afficher les variables de sortie de l'action, choisissez **Historique**, puis **Chronologie**. 

   Affichez la variable de sortie qui a été ajoutée à l'action. La sortie de l'action Commandes indique la variable de sortie résolue pour l'action Région.  
![\[La sortie de l'action Commandes indiquant la variable de sortie résolue en action Region\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/commands-output-variable.png)

1. Pour consulter les journaux de l'action, choisissez **Afficher les détails** de l'action Commandes réussie. Consultez les journaux de l'action Commandes.  
![\[Exemples de journaux pour l'action Commandes\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/commands-output-logs.png)

# Tutoriel : utilisez les balises Git pour démarrer votre pipeline
<a name="tutorials-github-tags"></a>

Dans ce didacticiel, vous allez créer un pipeline qui se connecte à votre GitHub dépôt où l'action source est configurée pour le type de déclencheur des balises Git. Lorsqu'une balise Git est créée lors d'un commit, votre pipeline démarre. Cet exemple montre comment créer un pipeline qui permet de filtrer les balises en fonction de la syntaxe du nom de la balise. Pour plus d'informations sur le filtrage à l'aide de modèles globulaires, consultez[Utilisation de modèles globulaires dans la syntaxe](syntax-glob.md).

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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.

Ce didacticiel se connecte à l' GitHub aide du type `CodeStarSourceConnection` d'action.

**Note**  
Cette fonctionnalité n'est pas disponible dans les régions Asie-Pacifique (Hong Kong), Afrique (Le Cap), Moyen-Orient (Bahreïn) ou Europe (Zurich). Pour faire référence aux autres actions disponibles, voir[Intégrations de produits et de services avec CodePipeline](integrations.md). Pour les considérations relatives à cette action dans la région Europe (Milan), voir la note dans[CodeStarSourceConnection pour Bitbucket Cloud GitHub, GitHub Enterprise Server, GitLab .com et les actions GitLab autogérées](action-reference-CodestarConnectionSource.md).

**Topics**
+ [Conditions préalables](#tutorials-github-tags-prereq)
+ [Étape 1 : Ouvrez CloudShell et clonez votre dépôt](#w2aac13c16c15)
+ [Étape 2 : Création d'un pipeline à déclencher sur les balises Git](#tutorials-github-tags-pipeline)
+ [Étape 3 : Marquez vos commits pour publication](#w2aac13c16c19)
+ [Étape 4 : publier les modifications et consulter les journaux](#tutorials-github-tags-view)

## Conditions préalables
<a name="tutorials-github-tags-prereq"></a>

Avant de commencer, vous devez exécuter les opérations suivantes :
+ Créez un GitHub référentiel avec votre GitHub compte.
+ Préparez vos GitHub informations d'identification. Lorsque vous utilisez le AWS Management Console pour établir une connexion, il vous est demandé de vous connecter avec vos GitHub informations d'identification. 

## Étape 1 : Ouvrez CloudShell et clonez votre dépôt
<a name="w2aac13c16c15"></a>

Vous pouvez utiliser une interface en ligne de commande pour cloner votre dépôt, effectuer des validations et ajouter des balises. Ce didacticiel lance une CloudShell instance pour l'interface de ligne de commande.

1. Connectez-vous au AWS Management Console.

1. Dans la barre de navigation supérieure, choisissez l' AWS icône. La page principale des AWS Management Console écrans.

1. Dans la barre de navigation supérieure, choisissez l' AWS CloudShell icône. CloudShell ouvre. Patientez pendant que l' CloudShell environnement est créé.
**Note**  
Si l' CloudShell icône ne s'affiche pas, assurez-vous que vous vous trouvez dans une [région prise en charge par CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/faq-list.html#regions-available). Ce didacticiel part du principe que vous vous trouvez dans la région de l'ouest des États-Unis (Oregon).

1. Dans GitHub, accédez à votre référentiel. Choisissez **Code**, puis **HTTPS**. Copiez le chemin. L'adresse pour cloner votre référentiel Git est copiée dans votre presse-papiers.

1. Exécutez la commande suivante pour cloner le référentiel.

   ```
   git clone https://github.com/<account>/MyGitHubRepo.git
   ```

1. Entrez votre GitHub compte `Username` et `Password` lorsque vous y êtes invité. Pour la `Password` saisie, vous devez utiliser un jeton créé par l'utilisateur plutôt que le mot de passe de votre compte.

## Étape 2 : Création d'un pipeline à déclencher sur les balises Git
<a name="tutorials-github-tags-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une connexion à votre GitHub référentiel et une action.
+ Une phase de construction avec une action de AWS CodeBuild construction.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyGitHubTagsPipeline**.

1. Dans **Type de pipeline**, conservez la sélection par défaut à **V2**. Les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md).

1. Dans **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**.
**Note**  
Si vous choisissez plutôt d'utiliser votre rôle de CodePipeline service existant, assurez-vous d'avoir ajouté l'autorisation `codestar-connections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions relatives au rôle de CodePipeline service, voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Paramètres avancés**, conservez les valeurs par défaut. Dans le **magasin d'artefacts** choisissez **Default location (Emplacement par défaut)** pour utiliser le magasin d'artefacts par défaut, tel que le compartiment d'artefacts Amazon S3 désigné par défaut, pour votre pipeline dans la région que vous avez sélectionnée pour ce dernier.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline.

   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.

   1. Sous **Événements Webhook**, dans **Type de filtre**, choisissez **Tags**.

      Dans le champ **Tags ou modèles**, entrez`release*`.
**Important**  
Les pipelines qui commencent par des balises Git de type déclencheur seront configurés pour les événements WebhookV2 et n'utiliseront pas l'événement Webhook (détection des modifications sur tous les événements push) pour démarrer le pipeline.

   Choisissez **Suivant**.

1. Dans le champ **Ajouter une étape de génération**, ajoutez une étape de génération :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.
**Note**  
Notez le nom de votre rôle CodeBuild de service. Vous aurez besoin du nom du rôle pour la dernière étape de ce didacticiel.

   1. Sous **Buildspec**, pour **Build specifications (Spécifications de génération)**, choisissez **Insert build commands (Insérer des commandes de génération)**. Choisissez **Passer à l'éditeur**, puis collez le texte suivant sous **Commandes de génération**.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - 
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Choisissez **Continuer vers CodePipeline**. Cela revient à la CodePipeline console et crée un CodeBuild projet qui utilise vos commandes de construction pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 3 : Marquez vos commits pour publication
<a name="w2aac13c16c19"></a>

Après avoir créé votre pipeline et spécifié les balises Git, vous pouvez étiqueter les validations dans votre GitHub dépôt. Au cours de ces étapes, vous allez étiqueter un commit avec le `release-1` tag. Chaque commit dans un dépôt Git doit avoir une balise Git unique. Lorsque vous choisissez le commit et que vous le balisez, cela vous permet d'intégrer les modifications provenant de différentes branches dans le déploiement de votre pipeline. Notez que le nom du tag release ne s'applique pas au concept de version dans GitHub.

1. Référencez le commit copié que IDs vous souhaitez étiqueter. Pour afficher les validations dans chaque branche, dans le CloudShell terminal, entrez la commande suivante pour capturer le commit que IDs vous souhaitez étiqueter : 

   ```
   git log
   ```

1. Dans le CloudShell terminal, entrez la commande pour étiqueter votre commit et le renvoyer à l'origine. Une fois que vous avez tagué votre commit, vous utilisez la commande git push pour transférer le tag vers l'origine. Dans l'exemple suivant, entrez la commande suivante pour utiliser la `release-1` balise pour le deuxième commit avec ID`49366bd`. Cette balise sera filtrée par le filtre de `release*` balise de pipeline et démarrera le pipeline.

   ```
   git tag release-1 49366bd
   ```

   ```
   git push origin release-1
   ```  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/git-tags-pipeline.png)

## Étape 4 : publier les modifications et consulter les journaux
<a name="tutorials-github-tags-view"></a>

1. Une fois le pipeline exécuté avec succès, lors de la phase de construction réussie, choisissez **Afficher le journal**.

   Sous **Logs**, consultez le résultat de la CodeBuild compilation. Les commandes produisent la valeur de la variable saisie.

1. Sur la page **Historique**, consultez la colonne **Déclencheurs**. Afficher le type de déclencheur **GitTag : release-1**.

# Tutoriel : Filtrez les noms de branches pour les pull requests permettant de démarrer votre pipeline (type V2)
<a name="tutorials-github-featurebranches"></a>

Dans ce didacticiel, vous allez créer un pipeline qui se connecte à votre dépôt GitHub .com où l'action source est configurée pour démarrer votre pipeline avec une configuration de déclenchement qui filtre les pull requests. Lorsqu'un événement de pull request spécifié se produit pour une branche spécifiée, votre pipeline démarre. Cet exemple montre comment créer un pipeline qui permet de filtrer les noms de branches. Pour plus d'informations sur l'utilisation des déclencheurs, consultez[Ajouter des filtres pour les types d'événements de type push et pull request (CLI)](pipelines-filter.md#pipelines-filter-cli). Pour plus d'informations sur le filtrage à l'aide de modèles regex au format global, consultez. [Utilisation de modèles globulaires dans la syntaxe](syntax-glob.md)

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Ce didacticiel permet de se connecter à GitHub .com via le type `CodeStarSourceConnection` d'action.

**Topics**
+ [Conditions préalables](#tutorials-github-featurebranches-prereq)
+ [Étape 1 : Création d'un pipeline à démarrer lors d'une pull request pour les branches spécifiées](#tutorials-github-featurebranches-pipeline)
+ [Étape 2 : créer et fusionner une pull request dans GitHub .com pour démarrer les exécutions de votre pipeline](#tutorials-github-featurebranches-pullrequest)

## Conditions préalables
<a name="tutorials-github-featurebranches-prereq"></a>

Avant de commencer, vous devez exécuter les opérations suivantes :
+ Créez un dépôt GitHub .com avec votre compte GitHub .com.
+ Préparez vos GitHub informations d'identification. Lorsque vous utilisez le AWS Management Console pour établir une connexion, il vous est demandé de vous connecter avec vos GitHub informations d'identification. 

## Étape 1 : Création d'un pipeline à démarrer lors d'une pull request pour les branches spécifiées
<a name="tutorials-github-featurebranches-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une connexion à votre référentiel GitHub .com et une action.
+ Une phase de construction avec une action de AWS CodeBuild construction.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyFilterBranchesPipeline**.

1. Dans **Type de pipeline**, conservez la sélection par défaut à **V2**. Les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md).

1. Dans **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**.
**Note**  
Si vous choisissez plutôt d'utiliser votre rôle de CodePipeline service existant, assurez-vous d'avoir ajouté l'autorisation `codeconnections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions relatives au rôle de CodePipeline service, voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Paramètres avancés**, conservez les valeurs par défaut. Dans le **magasin d'artefacts** choisissez **Default location (Emplacement par défaut)** pour utiliser le magasin d'artefacts par défaut, tel que le compartiment d'artefacts Amazon S3 désigné par défaut, pour votre pipeline dans la région que vous avez sélectionnée pour ce dernier.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline.

   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 dépôt GitHub .com.

   1. Sous **Type de déclencheur**, choisissez **Spécifier le filtre**.

      Sous **Type d'événement**, choisissez **Pull request**. Sélectionnez tous les événements sous pull request afin que l'événement se produise pour les pull requests créées, mises à jour ou fermées.

      Sous **Branches**, dans le champ **Inclure**, entrez`main*`.  
![\[Image montrant l'option Inclure les branches sélectionnée avec une valeur de main* pour un déclencheur avec un type d'événement de type Pull request\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/pullreq-example-triggers-edit.png)
**Important**  
Les pipelines qui commencent par ce type de déclencheur seront configurés pour les événements WebHookV2 et n'utiliseront pas l'événement Webhook (détection des modifications sur tous les événements push) pour démarrer le pipeline.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, dans **Fournisseur de** génération, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut. Choisissez ou créez le projet de construction comme indiqué dans[Tutoriel : utilisez les balises Git pour démarrer votre pipeline](tutorials-github-tags.md). Cette action ne sera utilisée dans ce didacticiel que comme deuxième étape nécessaire à la création de votre pipeline.

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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 2 : créer et fusionner une pull request dans GitHub .com pour démarrer les exécutions de votre pipeline
<a name="tutorials-github-featurebranches-pullrequest"></a>

Dans cette section, vous allez créer et fusionner une pull request. Cela démarre votre pipeline, avec une exécution pour la pull request ouverte et une exécution pour la pull request fermée.

**Pour créer une pull request et démarrer votre pipeline**

1. Dans GitHub .com, créez une pull request en modifiant le fichier README.md sur une branche de fonctionnalité et en soumettant une pull request à la branche. `main` Validez la modification avec un message tel que`Update README.md for PR`.

1. Le pipeline commence par la révision de la source affichant le message **source** de la pull request sous la forme **Update README.md** for PR.  
![\[Image montrant le message source de la requête Pull avec le texte suivant : Update README.md for PR\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/pullreq-example.png)

1. Choisissez **History (Historique**). Dans l'historique des exécutions du pipeline, consultez les événements d'état des pull request CREATED et MERGED qui ont déclenché les exécutions du pipeline.  
![\[Image montrant l'historique d'exécution du pipeline qui montre les événements d'état des pull request CREATED et MERGED qui ont lancé les exécutions du pipeline\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/pullreq-example-history.png)

# Tutoriel : Utiliser des variables au niveau du pipeline
<a name="tutorials-pipeline-variables"></a>

Dans ce didacticiel, vous allez créer un pipeline dans lequel vous ajouterez une variable au niveau du pipeline et exécuterez une action de CodeBuild génération qui génère la valeur de votre variable.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Topics**
+ [Conditions préalables](#tutorials-pipeline-variables-prereq)
+ [Étape 1 : Créez votre pipeline et créez votre projet](#tutorials-pipeline-variables-pipeline)
+ [Étape 2 : publier les modifications et consulter les journaux](#tutorials-pipeline-variables-view)

## Conditions préalables
<a name="tutorials-pipeline-variables-prereq"></a>

Avant de commencer, vous devez exécuter les opérations suivantes :
+ Créez un CodeCommit référentiel.
+ Ajoutez un fichier .txt au référentiel.

## Étape 1 : Créez votre pipeline et créez votre projet
<a name="tutorials-pipeline-variables-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une connexion à votre CodeCommit dépôt.
+ Une phase de construction avec une action de AWS CodeBuild construction.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyVariablesPipeline**.

1. Dans **Type de pipeline**, conservez la sélection par défaut à **V2**. Les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md).

1. Dans **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**.
**Note**  
Si vous choisissez plutôt d'utiliser votre rôle de CodePipeline service existant, assurez-vous d'avoir ajouté l'autorisation `codeconnections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions relatives au rôle de CodePipeline service, voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Variables**, sélectionnez **Ajouter une variable**. Pour **Name (Nom)**, entrez `timeout`. Dans **Par défaut**, entrez 1000. Dans la description, entrez la description suivante : **Timeout**

   Cela créera une variable dans laquelle vous pourrez déclarer la valeur au début de l'exécution du pipeline. Les noms des variables doivent correspondre `[A-Za-z0-9@\-_]+` et peuvent être n'importe quoi sauf une chaîne vide.

1. Sous **Paramètres avancés**, conservez les valeurs par défaut. Dans le **magasin d'artefacts** choisissez **Default location (Emplacement par défaut)** pour utiliser le magasin d'artefacts par défaut, tel que le compartiment d'artefacts Amazon S3 désigné par défaut, pour votre pipeline dans la région que vous avez sélectionnée pour ce dernier.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline.

   Choisissez **Suivant**.

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

   1. Dans **Fournisseur de source**, choisissez **AWS CodeCommit**.

   1. Dans **Nom du dépôt** et **Nom de la branche**, choisissez votre dépôt et votre branche.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, ajoutez une étape de construction :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.
**Note**  
Notez le nom de votre rôle CodeBuild de service. Vous aurez besoin du nom du rôle pour la dernière étape de ce didacticiel.

   1. Sous **Buildspec**, pour **Build specifications (Spécifications de génération)**, choisissez **Insert build commands (Insérer des commandes de génération)**. Choisissez **Passer à l'éditeur**, puis collez le texte suivant sous **Commandes de génération**. Dans le buildspec, la variable client `$CUSTOM_VAR1` sera utilisée pour afficher la variable de pipeline dans le journal de construction. Vous allez créer la variable `$CUSTOM_VAR1` de sortie en tant que variable d'environnement à l'étape suivante.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - echo $CUSTOM_VAR1
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Choisissez **Continuer vers CodePipeline**. Cela revient à la CodePipeline console et crée un CodeBuild projet qui utilise vos commandes de construction pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   1. Sous **Variables d'environnement *- facultatif***, pour créer une variable d'environnement en tant que variable d'entrée pour l'action de génération qui sera résolue par la variable au niveau du pipeline, choisissez **Ajouter une variable d'environnement**. Cela créera la variable spécifiée dans le buildspec en tant que. `$CUSTOM_VAR1` Pour **Name (Nom)**, entrez `CUSTOM_VAR1`. Dans **Value (Valeur)**, entrez `#{variables.timeout}`. Dans **Type**, sélectionnez`Plaintext`.

      La `#{variables.timeout}` valeur de la variable d'environnement est basée sur l'espace de noms des variables au niveau du pipeline `variables` et sur la variable au niveau du pipeline `timeout` créée pour le pipeline à l'étape 7.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 2 : publier les modifications et consulter les journaux
<a name="tutorials-pipeline-variables-view"></a>

1. Une fois le pipeline exécuté avec succès, lors de la phase de construction réussie, choisissez **Afficher les détails**.

   Sur la page de détails, choisissez l'onglet **Logs**. Affichez le résultat CodeBuild de la compilation. Les commandes produisent la valeur de la variable saisie.

1. Dans le menu de navigation de gauche, sélectionnez **Historique**.

   Choisissez l'exécution récente, puis cliquez sur l'onglet **Variables**. Affichez la valeur résolue pour la variable de pipeline.

# Didacticiel : Création d'un pipeline simple (compartiment S3)
<a name="tutorials-simple-s3"></a>

Le moyen le plus simple de créer un pipeline consiste à utiliser l'assistant de **création de pipeline** de la AWS CodePipeline console. 

Dans ce didacticiel, vous allez créer un pipeline en deux étapes qui utilise un compartiment source S3 versionné et qui permet de CodeDeploy publier un exemple d'application. 

**Note**  
Lorsque Amazon S3 est le fournisseur source de votre pipeline, vous pouvez compresser votre ou vos fichiers source dans un seul fichier .zip et télécharger le fichier .zip dans votre compartiment source. Vous pouvez également charger un seul fichier décompressé ; toutefois, les actions en aval qui attendent un fichier .zip échoueront.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Une fois ce pipeline simple créé, vous ajoutez une autre étape, puis vous désactivez et activez la transition entre les étapes.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

Avant de commencer, suivez les étapes requises détaillées dans [Commencer avec CodePipeline](getting-started-codepipeline.md).

**Topics**
+ [Étape 1 : créer un compartiment source S3 pour votre application](#s3-create-s3-bucket)
+ [Étape 2 : créer des instances Windows Amazon EC2 et installer l'agent CodeDeploy](#S3-create-instances)
+ [Étape 3 : créer une application dans CodeDeploy](#S3-create-deployment)
+ [Étape 4 : Créez votre premier pipeline dans CodePipeline](#s3-create-pipeline)
+ [(Facultatif) Étape 5 : Ajouter une autre étape à votre pipeline](#s3-add-stage)
+ [(Facultatif) Étape 6 : désactiver et activer les transitions entre les étapes dans CodePipeline](#s3-configure-transitions)
+ [Étape 7 : Nettoyer les ressources](#s3-clean-up)

## Étape 1 : créer un compartiment source S3 pour votre application
<a name="s3-create-s3-bucket"></a>

Vous pouvez stocker vos fichiers ou applications source dans n'importe quel emplacement versionné. Dans ce didacticiel, vous allez créer un compartiment S3 pour les exemples de fichiers d'application et activer le contrôle des versions sur ce compartiment. Une fois que vous aurez activé la gestion des versions, vous pourrez copier les modèles d'application dans ce compartiment. 

**Pour créer un compartiment S3**

1. Connectez-vous à la console à l'adresse AWS Management Console. Ouvrez la console S3.

1. Choisissez **Créer un compartiment**.

1. Dans **Nom du compartiment**, saisissez un nom pour votre compartiment (par exemple, **awscodepipeline-demobucket-example-date**).
**Note**  
Dans la mesure où tous les noms de compartiment dans Amazon S3 doivent être uniques, utilisez l'un des vôtres, et non le nom indiqué dans l'exemple. Vous pouvez modifier le nom de l'exemple simplement en y ajoutant la date. Notez ce nom, car vous l'utiliserez durant ce didacticiel.

   Dans **Région**, choisissez la région dans laquelle vous souhaitez créer votre pipeline, par exemple **USA West (Oregon)**, puis choisissez **Create bucket**.

1. Une fois le compartiment créé, une bannière de réussite apparaît. Choisissez **Go to bucket details (Accéder aux détails du compartiment)**.

1. Dans l'onglet **Propriétés**, choisissez **Versioning**. Choisissez **Activer la gestion des versions**, puis **Enregistrer**.

   Lorsque le versionnement est activé, Amazon S3 enregistre chaque version de chaque objet du compartiment.

1. Sous l'onglet **Autorisations**, laissez les valeurs par défaut. Pour de plus amples informations sur les autorisations des objets et des compartiments S3, veuillez consulter [Spécification des autorisations d'une stratégie](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).

1. Ensuite, téléchargez un exemple et enregistrez-le dans un dossier ou un répertoire sur votre ordinateur local.

   1. Choisissez l’une des options suivantes. Choisissez `SampleApp_Windows.zip` si vous souhaitez suivre les étapes de ce didacticiel pour les instances Windows Server.
      + Si vous souhaitez effectuer un déploiement sur des instances Amazon Linux à l'aide de CodeDeploy, téléchargez l'exemple d'application ici : [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).
      + Si vous souhaitez effectuer un déploiement sur des instances Windows Server à l'aide de CodeDeploy, téléchargez l'exemple d'application ici : [SampleApp\$1Windows.zip](samples/SampleApp_Windows.zip).

      L'exemple d'application contient les fichiers suivants à déployer avec CodeDeploy : 
      + `appspec.yml`— Le fichier de spécification de l'application (AppSpecfichier) est un fichier au format [YAML](http://www.yaml.org) utilisé CodeDeploy pour gérer un déploiement. Pour plus d'informations sur le AppSpec fichier, reportez-vous à la section [Référence CodeDeploy AppSpec du fichier](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) dans le *Guide de AWS CodeDeploy l'utilisateur*.
      + `index.html`— Le fichier d'index contient la page d'accueil de l'exemple d'application déployé.
      + `LICENSE.txt`— Le fichier de licence contient les informations de licence de l'exemple d'application.
      + Fichiers pour scripts : l'exemple d'application utilise des scripts pour écrire des fichiers texte dans un emplacement de votre instance. Un fichier est écrit pour chacun des événements du cycle de vie du CodeDeploy déploiement, comme suit :
        + `scripts`Dossier (exemple Linux uniquement) : le dossier contient les scripts shell suivants pour installer les dépendances et démarrer et arrêter l'exemple d'application pour le déploiement automatique :`install_dependencies`,`start_server`, et`stop_server`.
        + (Exemple Windows uniquement) `before-install.bat` — Il s'agit d'un script batch pour l'événement du cycle de vie du `BeforeInstall` déploiement, qui sera exécuté pour supprimer les anciens fichiers écrits lors des déploiements précédents de cet exemple et créer un emplacement sur votre instance où écrire les nouveaux fichiers.

   1. Téléchargez le fichier compressé (zippé). Ne décompressez pas le fichier.

1. Dans la console Amazon S3, chargez le fichier correspondant à votre compartiment :  

   1. Choisissez **Charger**. 

   1. Faites glisser et déposez le fichier ou choisissez **Ajouter des fichiers** et recherchez le fichier.

   1. Choisissez **Charger**.

## Étape 2 : créer des instances Windows Amazon EC2 et installer l'agent CodeDeploy
<a name="S3-create-instances"></a>

**Note**  
Ce didacticiel fournit des exemples d'étapes pour créer des instances Windows Amazon EC2. Pour des exemples d'étapes de création d'instances Linux Amazon EC2, consultez. [Étape 3 : créer une instance Linux Amazon EC2 et installer l'agent CodeDeploy](tutorials-simple-codecommit.md#codecommit-create-deployment) Lorsque vous êtes invité à indiquer le nombre d'instances à créer, spécifiez **2** instances.

Au cours de cette étape, vous créez les instances Amazon EC2 de Windows Server sur lesquelles vous allez déployer un exemple d'application. Dans le cadre de ce processus, vous créez un rôle d'instance avec des politiques qui autorisent l'installation et la gestion de l' CodeDeploy agent sur les instances. L' CodeDeploy agent est un progiciel qui permet à une instance d'être utilisée dans CodeDeploy des déploiements. Vous attachez également des politiques qui permettent à l'instance de récupérer les fichiers que l' CodeDeploy agent utilise pour déployer votre application et de permettre à l'instance d'être gérée par SSM.

**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 **Choose a use case (Choisir un cas d'utilisation)**, sélectionnez **EC2**, puis **Suivant : Autorisations**.

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

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.

   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. Sous **Nom et balises**, dans **Nom**, entrez**MyCodePipelineDemo**. Cela affecte aux instances une balise **Key** of **Name** et une balise **Value** de**MyCodePipelineDemo**. Vous créerez ensuite une CodeDeploy application qui déploiera l'exemple d'application sur les instances. CodeDeploysélectionne les instances à déployer en fonction des balises.

1. Sous **Images de l'application et du système d'exploitation (Amazon Machine Image)**, choisissez l'option **Windows**. (Cette AMI est décrite sous le nom de **Microsoft Windows Server 2019 Base** et est étiquetée « éligible au niveau gratuit » et se trouve sous **Démarrage rapide**.)

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. 

   Vous pouvez également choisir **Proceed sans paire de clés**.
**Note**  
Pour les besoins de ce didacticiel, vous pouvez procéder sans paire de clés. Pour utiliser SSH pour vous connecter à vos instances, créez ou utilisez une paire de clés.

1. Sous **Paramètres réseau**, procédez comme suit.

   Dans **Attribuer automatiquement une adresse IP publique**, assurez-vous que le statut est **Activé**.
   + En regard de **Attribuer un groupe de sécurité**, choisissez **Créer un groupe de sécurité**.
   + Dans la ligne correspondant à **SSH**, sous **Type de source**, sélectionnez **Mon adresse IP**.
   + Choisissez **Ajouter un groupe de sécurité**, choisissez **HTTP**, puis sous **Type de source**, sélectionnez **Mon adresse IP**.

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**).

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

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

1. Sélectionnez **View all instances** (Afficher toutes les instances) pour fermer la page de confirmation et revenir à la console.

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**.)

1. Vous devrez peut-être patienter quelques minutes avant de pouvoir vous connecter à l’instance. Vérifiez que votre instance a réussi les contrôles de statut. Cette information est visible dans la colonne **Contrôles des statuts**.

## Étape 3 : créer une application dans CodeDeploy
<a name="S3-create-deployment"></a>

Dans CodeDeploy, une *application* est un identifiant, sous la forme d'un nom, pour le code que vous souhaitez déployer. CodeDeploy utilise ce nom pour garantir que la combinaison correcte de révision, de configuration de déploiement et de groupe de déploiement est référencée lors d'un déploiement. Vous sélectionnez le nom de l' CodeDeploy application que vous créez à cette étape lorsque vous créerez votre pipeline ultérieurement dans ce didacticiel.

Vous devez d'abord créer un rôle de service CodeDeploy à utiliser. Si vous avez déjà créé un rôle de service, il n'est pas nécessaire d'en créer un autre.

**Pour créer un rôle CodeDeploy de service**

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 une entité de confiance**, sélectionnez **Service AWS**. Sous **Use case** (Cas d'utilisation), choisissez **CodeDeploy**. Choisissez **CodeDeploy**parmi les options répertoriées. Choisissez **Suivant**. La stratégie gérée `AWSCodeDeployRole` est déjà attachée au rôle.

1. Choisissez **Suivant**.

1. Entrez un nom pour le rôle (par exemple, **CodeDeployRole**), puis choisissez **Créer un rôle**.

**Pour créer une application dans CodeDeploy**

1. Ouvrez la CodeDeploy console dans [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)

1. Si la page **Applications** n'apparaît pas, AWS CodeDeploy dans le menu, choisissez **Applications**.

1. Choisissez **Créer une application**.

1. Dans **Nom de l'application**, saisissez `MyDemoApplication`. 

1. Dans **Plateforme informatique**, choisissez **EC2/Sur site**.

1. Choisissez **Créer une application**.

**Pour créer un groupe de déploiement dans CodeDeploy**

1. Sur la page qui affiche votre application, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **MyDemoDeploymentGroup**.

1. Dans **Rôle de service**, choisissez le rôle de service que vous avez créé précédemment. Vous devez utiliser un rôle de service qui fait confiance AWS CodeDeploy avec, au minimum, la confiance et les autorisations décrites dans la section [Créer un rôle de service pour CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html). Pour connaître le rôle de service ARN, consultez [Obtention de l'ARN du rôle de service (console)](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-service-role.html#getting-started-get-service-role-console).

1. Sous **Type de déploiement**, choisissez **Sur place**.

1. Sous **Configuration de l'environnement**, choisissez **Instances Amazon EC2**. Choisissez **Nom** dans le champ **Clé**, puis entrez dans le champ **Valeur****MyCodePipelineDemo**. 
**Important**  
Vous devez choisir ici la même valeur pour la clé **Nom** que la valeur que vous avez attribuée à vos instances EC2 lorsque vous les avez créées. Si vous avez balisé vos instances avec une valeur autre que **MyCodePipelineDemo**, veillez à l'utiliser ici.

1. Sous **Configuration de l'agent avec AWS Systems Manager**, choisissez **Now et planifiez les mises à jour**. L'agent est alors installé sur l'instance. L'instance Windows est déjà configurée avec l'agent SSM et sera désormais mise à jour avec l' CodeDeploy agent.

1. Sous **Paramètres de déploiement**, sélectionnez`CodeDeployDefault.OneAtaTime`.

1. Sous **Load Balancer**, assurez-vous que la case **Activer l'équilibrage de charge** n'est pas cochée. Vous n'avez pas besoin de configurer un équilibreur de charge ou de choisir un groupe cible pour cet exemple. Une fois que vous avez désélectionné la case, les options de l'équilibreur de charge ne s'affichent pas.

1. Dans la section **Avancé**, laissez les valeurs par défaut.

1. Choisissez **Créer un groupe de déploiement**.

## Étape 4 : Créez votre premier pipeline dans CodePipeline
<a name="s3-create-pipeline"></a>

Dans cette partie du didacticiel, vous créez le pipeline. Le modèle s'exécute automatiquement par le biais du pipeline.

**Pour créer un processus de publication CodePipeline automatisé**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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**MyFirstPipeline**. 
**Note**  
Si vous choisissez un autre nom pour votre pipeline, veillez à utiliser ce nom au lieu de **MyFirstPipeline** pendant le reste de ce didacticiel. Une fois le pipeline créé, vous ne pouvez plus modifier son nom. Les noms de pipeline sont soumis à des limites. Pour de plus amples informations, veuillez consulter [Quotas dans AWS CodePipeline](limits.md). 

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 du service**, sélectionnez l'une des options suivantes :
   + Choisissez **Nouveau rôle de service** pour autoriser CodePipeline la création d'un nouveau rôle de service dans IAM.
   + Choisissez **Existing service role (Rôle de service existant)** pour utiliser un rôle de service déjà créé dans IAM. Dans **Role name (Nom du rôle)**, choisissez votre rôle de service à partir de la liste.

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

1. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **Amazon S3**. Dans **Bucket (Compartiment)**, entrez le nom du compartiment S3 que vous avez créé dans [Étape 1 : créer un compartiment source S3 pour votre application](#s3-create-s3-bucket). Dans **S3 object key (Clé d'objet S3)**, entrez la clé d'objet avec ou sans chemin d'accès au fichier, sans oublier d'inclure l'extension de fichier. Par exemple, pour `SampleApp_Windows.zip`, saisissez le nom de l’exemple de fichier, comme indiqué dans cet exemple :

   ```
   SampleApp_Windows.zip
   ```

   Choisissez **Étape suivante**.

   Sous **Modifier les options de détection**, ne modifiez pas les valeurs par défaut. Cela permet d' CodePipeline utiliser Amazon CloudWatch Events pour détecter les modifications apportées à votre compartiment source.

    Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 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. À **l'étape 6 : Ajouter une étape de déploiement**, dans **Fournisseur de déploiement**, sélectionnez **CodeDeploy **. Le champ **Région** est par défaut identique Région AWS à celui de votre pipeline. Dans **Application name (Nom de l'application)**, saisissez `MyDemoApplication`, ou cliquez sur le bouton **Refresh (Actualiser)** et choisissez le nom de l'application dans la liste. Dans **Groupe de déploiement**, entrez **MyDemoDeploymentGroup** ou choisissez-le dans la liste, puis choisissez **Suivant**. 
**Note**  
« Déploiement » est le nom donné par défaut à l'étape du pipeline créée à l'**Étape 4 : Ajouter une étape de déploiement**, tout comme « Source » est le nom donné à la première étape du pipeline. 

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

1. Le pipeline commence à s'exécuter. Vous pouvez consulter les messages de progression et de réussite et d'échec CodePipeline lorsque l'exemple déploie une page Web sur chacune des instances Amazon EC2 du déploiement. CodeDeploy

Félicitations \$1 Vous venez de créer un pipeline simple dans CodePipeline. Le pipeline comporte deux étapes :
+ Une étape source nommée **Source**, qui détecte les modifications apportées à l'exemple d'application versionnée stocké dans le compartiment S3 et extrait ces modifications dans le pipeline.
+ Une étape **Déploiement** qui déploie ces modifications dans les instances EC2 avec CodeDeploy. 

Maintenant, vérifiez les résultats.

**Pour vérifier que votre pipeline a été exécuté avec succès**

1. Affichez la progression initiale du pipeline. L'état de chaque étape passe de **Pas encore d'exécution** à **En cours**, puis devient soit **Réussi**, soit **Échec**. Le pipeline doit terminer la première exécution en quelques minutes.

1. Lorsque l’état de l’action affiche **Réussi**, dans la zone d’état de l’étape **Déployer**, choisissez **Détails**. Cela ouvre la CodeDeploy console.

1. Dans l'onglet **Groupe de déploiement**, sous **Événements du cycle de vie de déploiement**, choisissez un ID d’instance. Ceci ouvre la console EC2.

1. Dans l'onglet **Description**, sous **DNS public**, copiez l'adresse, puis collez-la dans la barre d'adresses de votre navigateur web. Veuillez consulter la page d'index pour le modèle d'application que vous avez chargé dans votre compartiment S3.

   La page Web s'affiche pour l'exemple d'application que vous avez chargé dans votre compartiment S3.

Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez [CodePipeline concepts ](concepts.md).

## (Facultatif) Étape 5 : Ajouter une autre étape à votre pipeline
<a name="s3-add-stage"></a>

Ajoutez maintenant une autre étape dans le pipeline, pour un déploiement depuis des serveurs intermédiaires aux serveurs de production à l'aide d' CodeDeploy. Tout d'abord, vous créez un autre groupe de déploiement CodePipelineDemoApplication dans l'entrée CodeDeploy. Ensuite, vous ajoutez une étape qui inclut une action utilisant ce groupe de déploiement. Pour ajouter une autre étape, vous utilisez la CodePipeline console ou le AWS CLI pour récupérer et modifier manuellement la structure du pipeline dans un fichier JSON, puis vous exécutez la **update-pipeline** commande pour mettre à jour le pipeline avec vos modifications.

**Topics**
+ [Créez un deuxième groupe de déploiement dans CodeDeploy](#s3-add-stage-part-1)
+ [Ajout du groupe de déploiement en tant qu'étape supplémentaire dans votre pipeline](#s3-add-stage-part-2)

### Créez un deuxième groupe de déploiement dans CodeDeploy
<a name="s3-add-stage-part-1"></a>

**Note**  
Dans cette partie du didacticiel, vous allez créer un deuxième groupe de déploiement, mais le déployer sur les mêmes instances Amazon EC2 que précédemment. Cette étape est uniquement abordée à des fins pédagogiques. Il est spécialement conçu pour ne pas vous montrer comment les erreurs sont affichées. CodePipeline

**Pour créer un deuxième groupe de déploiement dans CodeDeploy**

1. Ouvrez la CodeDeploy console dans [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)

1. Choisissez **Applications**, puis dans la liste des applications, choisissez `MyDemoApplication`.

1. Choisissez l'onglet **Groupes de déploiement**, puis choisissez **Créer un groupe de déploiement**.

1. Sur la page **Créer un groupe de déploiement**, sous **Nom du groupe de déploiement**, saisissez un nom pour le deuxième groupe de déploiement (par exemple, **CodePipelineProductionFleet**).

1. Dans **Rôle de service**, choisissez le même rôle de CodeDeploy service que celui que vous avez utilisé pour le déploiement initial (pas le rôle de CodePipeline service).

1. Sous **Type de déploiement**, choisissez **Sur place**.

1. Sous **Configuration de l'environnement**, choisissez **Instances Amazon EC2**. Choisissez **Nom** dans la zone **Clé** et, dans la zone **Valeur**, choisissez `MyCodePipelineDemo` dans la liste. Conservez la configuration par défaut pour **Paramètres de déploiement**. 

1. Dans **Configuration de déploiement**, choisissez `CodeDeployDefault.OneAtaTime`.

1. Dans **Équilibreur de charge**, désélectionnez **Activer l'équilibrage de charge**.

1.  Choisissez **Créer un groupe de déploiement**.

### Ajout du groupe de déploiement en tant qu'étape supplémentaire dans votre pipeline
<a name="s3-add-stage-part-2"></a>

Maintenant que vous disposez d'un autre groupe de déploiement, vous pouvez ajouter une étape qui utilise ce groupe de déploiement pour procéder à un déploiement sur les mêmes instances EC2 que vous avez utilisées précédemment. Vous pouvez utiliser la CodePipeline console ou le AWS CLI pour ajouter cette étape. 

**Topics**
+ [Création d'une troisième étape (console)](#s3-add-stage-part-2-console)
+ [Création d'une troisième étape (interface de ligne de commande)](#s3-add-stage-part-2-cli)

#### Création d'une troisième étape (console)
<a name="s3-add-stage-part-2-console"></a>

Vous pouvez utiliser la CodePipeline console pour ajouter une nouvelle étape qui utilise le nouveau groupe de déploiement. Ce groupe de déploiement se déploie dans les instances EC2 que vous avez déjà utilisées ; par conséquent l'action de déploiement échoue dans cette étape. 

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Dans **Nom**, choisissez le nom du pipeline que vous avez créé, MyFirstPipeline. 

1. Sur la page des détails du pipeline, choisissez **Edit**. 

1. Sur la page **Modifier**, choisissez **\$1 Ajouter une étape** pour ajouter une étape immédiatement après l'étape Déploiement.   
![\[Image montrant le bouton + Ajouter une étape sur l'écran d'édition\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/edit-pipeline-console-pol.png)

1. Dans **Add stage (Ajouter une étape)**, dans **Stage name (Nom de l'étape)**, saisissez **Production**. Sélectionnez **Ajouter une étape**.

1. Dans la nouvelle étape, choisissez **\$1 Add action group (\$1 Ajouter un groupe d'actions)**.

1. Dans **Edit action (Modifier l'action)**, dans **Action name (Nom de l'action)**, saisissez **Deploy-Second-Deployment**. Dans **Action provider**, sous **Deploy**, sélectionnez **CodeDeploy**.

1. Dans la CodeDeploy section, dans **Nom de l'application**, choisissez `MyDemoApplication` dans la liste déroulante, comme vous l'avez fait lorsque vous avez créé le pipeline. Dans **Groupe de déploiement**, choisissez le groupe de déploiement que vous venez de créer, **CodePipelineProductionFleet**. Dans **Input artifacts (Artefacts d'entrée)**, choisissez l'artefact d'entrée à partir de l'action source. Choisissez **Enregistrer**.

1. Sur la page **Modifier**, choisissez **Enregistrer**. Dans **Enregistrer les modifications du pipeline**, choisissez **Enregistrer**.

1. Bien que la nouvelle étape ait été ajoutée à votre pipeline, l'état affiché est **Pas encore d'exécution**, car aucune modification n'a déclenché une autre exécution du pipeline. Vous devez relancer manuellement la dernière révision pour voir comment le pipeline modifié s'exécute. Sur la page des détails du pipeline, choisissez **Libérer le changement**, puis sélectionnez **Libérer** lorsque vous y êtes invité. Cette opération exécute la révision la plus récente disponible dans chaque emplacement source spécifié d'une action source à travers le pipeline. 

   Vous pouvez également utiliser le AWS CLI pour réexécuter le pipeline, à partir d'un terminal sur votre machine Linux, macOS ou Unix locale, ou d'une invite de commande sur votre machine Windows locale, exécutez la **start-pipeline-execution** commande en spécifiant le nom du pipeline. Cette action exécute l'application dans votre compartiment source par le biais du pipeline une seconde fois.

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   Cette commande renvoie un objet `pipelineExecutionId`.

1. Retournez à la CodePipeline console et dans la liste des pipelines, choisissez **MyFirstPipeline**d'ouvrir la page d'affichage.

   Le pipeline affiche trois étapes et l'état de l'artefact en cours d'exécution durant ces trois étapes. Le pipeline exécute alors toutes les étapes, ce qui peut prendre jusqu'à cinq minutes. Vous constaterez que le déploiement aboutit lors des deux premières étapes, comme avant, mais que lors de l'étape **Production**, l'action **Deploy-Second-Deployment** échoue.

1. Dans l'action **Deploy-Second-Deployment**, choisissez **Détails**. Vous êtes redirigé vers la page concernant le déploiement CodeDeploy. Dans ce cas, l'échec résulte du fait que, le premier groupe d'instance ayant été déployé sur toutes les instances EC2, aucune instance n'est disponible pour le second groupe de déploiement.
**Note**  
Cet échec est intentionnel, afin de démontrer ce qui se passe en cas d'échec dans une étape du pipeline.

#### Création d'une troisième étape (interface de ligne de commande)
<a name="s3-add-stage-part-2-cli"></a>

Bien que l'utilisation du AWS CLI pour ajouter une étape à votre pipeline soit plus complexe que celle de la console, elle offre une meilleure visibilité sur la structure du pipeline.

**Pour créer une troisième étape pour votre pipeline**

1. Ouvrez une session de terminal sur votre machine Linux, macOS ou Unix locale, ou une invite de commande sur votre machine Windows locale, et exécutez la **get-pipeline** commande pour afficher la structure du pipeline que vous venez de créer. Pour **MyFirstPipeline**, saisissez la commande suivante : 

   ```
   aws codepipeline get-pipeline --name "MyFirstPipeline"
   ```

   Cette commande renvoie la structure de MyFirstPipeline. La première partie du résultat doit être semblable à l'exemple suivant :

   ```
   {
       "pipeline": {
           "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service",
           "stages": [
       ...
   ```

   La dernière partie de la sortie inclut les métadonnées du pipeline et doit être similaire à ce qui suit :

   ```
       ...
           ],
           "artifactStore": {
               "type": "S3"
               "location": "amzn-s3-demo-bucket",
           },
           "name": "MyFirstPipeline",
           "version": 4
       },
       "metadata": {
           "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline",
           "updated": 1501626591.112,
           "created": 1501626591.112
       }
   }
   ```

1. Copiez et collez cette structure dans un éditeur de texte brut et enregistrez le fichier en tant que **pipeline.json**. Pour plus de commodité, enregistrez ce fichier dans le même répertoire où vous exécutez les commandes **aws codepipeline**.
**Note**  
Vous pouvez diriger le JSON directement dans un fichier avec la commande **get-pipeline**, en procédant comme suit :  

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

1. Copiez la section de l'étape **Déployer** et collez-la après les deux premières étapes. Il s'agit d'une étape de déploiement, tout comme l'étape **Déployer**, par conséquent vous l'utiliserez comme modèle pour la troisième étape. 

1. Modifiez le nom de l'étape et les détails du groupe de déploiement. 

   **L'exemple suivant montre le JSON que vous ajoutez au fichier pipeline.json après l'étape de déploiement.** Modifiez les éléments mis en surbrillance en insérant les nouvelles valeurs. N'oubliez pas d'inclure une virgule pour séparer les définitions des étapes **Déployer** et **Production**.

   ```
   ,
   {
       "name": "Production",
        "actions": [
           {
            "inputArtifacts": [
                {
                 "name": "MyApp"
                }
              ],
             "name": "Deploy-Second-Deployment",
             "actionTypeId": {
                 "category": "Deploy",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "CodeDeploy"
                 },
            "outputArtifacts": [],
            "configuration": {
                 "ApplicationName": "CodePipelineDemoApplication",
                 "DeploymentGroupName": "CodePipelineProductionFleet"
                  },
            "runOrder": 1
           }
       ]
   }
   ```

1. Si vous utilisez la structure de pipeline extraite à l'aide de la commande **get-pipeline**, vous devez supprimer les lignes `metadata` du fichier JSON. Sinon, la commande **update-pipeline** ne peut pas l'utiliser. Supprimez les lignes `"metadata": { }` et les champs `"updated"`, `"created"` et `"pipelineARN"`.

   Par exemple, supprimez les lignes suivantes de la structure :

   ```
   "metadata": {  
     "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
     "created": "date",
     "updated": "date"
     }
   ```

   Enregistrez le fichier.

1. Exécutez la commande **update-pipeline** en spécifiant le fichier JSON du pipeline d'une manière similaire à l'exemple suivant :

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   Cette commande renvoie toute la structure du pipeline mise à jour.
**Important**  
N'oubliez pas d'inclure `file://` devant le nom du fichier. Il est nécessaire dans cette commande.

1.  Exécutez la commande **start-pipeline-execution** en spécifiant le nom du pipeline. Cette action exécute l'application dans votre compartiment source par le biais du pipeline une seconde fois.

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   Cette commande renvoie un objet `pipelineExecutionId`.

1. Ouvrez la CodePipeline console et **MyFirstPipeline**choisissez dans la liste des pipelines.

   Le pipeline affiche trois étapes et l'état de l'artefact en cours d'exécution durant ces trois étapes. Le pipeline exécute alors toutes les étapes, ce qui peut prendre jusqu'à cinq minutes. Bien que le déploiement aboutisse lors des deux premières étapes, comme avant, l'étape **Production** indique que l'action **Deploy-Second-Deployment** a échoué. 

1. Dans l'action **Deploy-Second-Deployment**, choisissez **Détails** pour voir les détails de l'échec. Vous êtes redirigé vers la page de détails du CodeDeploy déploiement. Dans ce cas, l'échec résulte du fait que, le premier groupe d'instance ayant été déployé sur toutes les instances EC2, aucune instance n'est disponible pour le second groupe de déploiement. 
**Note**  
Cet échec est intentionnel, afin de démontrer ce qui se passe en cas d'échec dans une étape du pipeline.

## (Facultatif) Étape 6 : désactiver et activer les transitions entre les étapes dans CodePipeline
<a name="s3-configure-transitions"></a>

Vous pouvez activer ou désactiver la transition entre les étapes d'un pipeline. La désactivation de la transition entre les étapes vous permet de contrôler manuellement les transitions d'une étape à une autre. Par exemple, vous pouvez exécuter les deux premières étapes d'un pipeline, puis désactiver les transitions vers la troisième étape tant que vous n'êtes pas prêt à procéder au déploiement sur la production, ou bien si vous devez remédier à un problème ou à un échec dans cette étape.

**Pour désactiver et activer les transitions entre les étapes d'un CodePipeline pipeline**

1. Ouvrez la CodePipeline console et **MyFirstPipeline**choisissez dans la liste des pipelines.

1. Sur la page des détails du pipeline, choisissez le bouton **Désactiver la transition** entre la deuxième étape, (**Déployer**) et la troisième étape que vous avez ajoutée à la section précédente (**Production**).

1. Dans **Disable transition (Désactiver la transition)**, saisissez une raison pour désactiver la transition entre les étapes et choisissez **Disable (Désactiver)**.

   La flèche entre les étapes affiche une icône et le changement de couleur, ainsi que le bouton **Enable transition (Activer la transition)**.  
![\[Image montrant la raison saisie pour désactiver la transition : « Désactiver la transition pendant que je corrige l'échec »\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/codepipeline-disabled-transition-pol.png)

1. Chargez à nouveau votre modèle dans le compartiment S3. Le compartiment étant versionné, ce changement lance le pipeline. 

1. Revenez à la page des détails de votre pipeline et observez l'état des étapes. Le pipeline affiche alors les réussites et les progrès en cours dans les deux premières étapes, mais aucune modification ne se produit au niveau de la troisième étape. Ce processus peut prendre quelques minutes.

1. Activez la transition en cliquant sur le bouton **Enable transition (Activer la transition)** entre les deux étapes. Dans la boîte de dialogue **Activation d'une transition**, choisissez **Activer**. L'étape lance l'exécution en quelques minutes et essaie de traiter l'artefact qui a déjà été exécuté dans les deux premières étapes du pipeline.
**Note**  
Si vous souhaitez que cette troisième étape réussisse, modifiez le groupe de CodePipelineProductionFleet déploiement avant d'activer la transition et spécifiez un autre ensemble d'instances EC2 dans lequel l'application est déployée. Pour de plus amples informations sur cette étape, veuillez consulter [Modification des paramètres de groupe de déploiement](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-change-deployment-group-settings.html). La création d'instances EC2 supplémentaires peut entraîner des frais. 

## Étape 7 : Nettoyer les ressources
<a name="s3-clean-up"></a>

Vous pouvez utiliser certaines des ressources que vous avez créées au cours de ce didacticiel pour le [Didacticiel : Création d'un pipeline à quatre étapes](tutorials-four-stage-pipeline.md). Par exemple, vous pouvez réutiliser l' CodeDeploy application et le déploiement. Vous pouvez configurer une action de génération avec un fournisseur tel qu' CodeBuildun service de génération entièrement géré dans le cloud. Vous pouvez également configurer une action de génération qui utilise un fournisseur avec un serveur ou un système de génération, tel que Jenkins.

Toutefois, une fois ce didacticiel terminé, ou d'autres, vous devez supprimer le pipeline, ainsi que les ressources qu'il utilise, afin que l'utilisation de ces ressources ne vous soit pas facturée. Supprimez d'abord le pipeline, puis l' CodeDeploy application et ses instances Amazon EC2 associées, et enfin le compartiment S3.

**Pour nettoyer les ressources utilisées dans ce didacticiel**

1. Pour nettoyer vos CodePipeline ressources, suivez les instructions de la section [Supprimer un pipeline dans AWS CodePipeline](pipelines-delete.md).

1. Pour nettoyer vos CodeDeploy ressources, suivez les instructions de la section [Pour nettoyer les ressources (console)](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-clean-up.html#tutorials-wordpress-clean-up-console).

1. Pour supprimer le compartiment S3, suivez les instructions contenues dans [Suppression ou vidage d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-or-empty-bucket.html). Si vous ne souhaitez pas créer davantage de pipelines, supprimez le compartiment S3 créé pour le stockage de vos artefacts de pipeline. Pour plus d'informations sur ce compartiment, consultez [CodePipeline concepts ](concepts.md).

# Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)
<a name="tutorials-simple-codecommit"></a>

Dans ce didacticiel, vous déployez du code conservé dans un CodeCommit référentiel sur une seule instance Amazon EC2. CodePipeline Votre pipeline est déclenché lorsque vous envoyez une modification au CodeCommit référentiel. Le pipeline déploie vos modifications sur une instance Amazon EC2 CodeDeploy en l'utilisant comme service de déploiement.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Le pipeline comporte deux étapes :
+ Une étape source (**Source**) pour votre action CodeCommit source.
+ Une étape de déploiement (**Deploy**) pour votre action CodeDeploy de déploiement.

Le moyen le plus simple de commencer AWS CodePipeline est d'utiliser l'assistant de **création de pipeline** dans la CodePipeline console.

**Note**  
Avant de commencer, assurez-vous d'avoir configuré votre client Git pour qu'il fonctionne avec CodeCommit. Pour obtenir des instructions, veuillez consulter [Configuration pour CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up.html).

## Étape 1 : Création d'un CodeCommit référentiel
<a name="codecommit-create-repository"></a>

Tout d'abord, vous créez un dépôt dans CodeCommit. Votre pipeline obtient un code source à partir de ce référentiel lorsqu'il s'exécute. Vous créez également un référentiel local dans lequel vous gérez et mettez à jour le code avant de le transférer vers le CodeCommit référentiel.

**Pour créer un CodeCommit référentiel**



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

1. Dans le sélecteur de région, choisissez l' Région AWS endroit où vous souhaitez créer le référentiel et le pipeline. Pour plus d’informations, consultez [Régions AWS and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html).

1. Dans la page **Référentiels**, choisissez **Créer un référentiel**.

1. Sur la page **Créer un référentiel**, pour **Nom du référentiel**, entrez un nom pour votre référentiel (par exemple, **MyDemoRepo**).

1. Choisissez **Créer**.

**Note**  
Les étapes restantes de ce didacticiel **MyDemoRepo** concernent le nom de votre CodeCommit dépôt. Si vous choisissez un autre nom, veillez à l'utiliser tout au long de ce didacticiel.

**Pour configurer un référentiel local**

Au cours de cette étape, vous configurez un référentiel local pour vous connecter à votre référentiel CodeCommit distant.
**Note**  
Vous n'êtes pas obligé de configurer un dépôt local. Vous pouvez également utiliser la console pour télécharger des fichiers comme décrit dans[Étape 2 : ajouter un exemple de code à votre CodeCommit référentiel](#codecommit-add-code).

1. Une fois votre nouveau référentiel ouvert dans la console, choisissez **Clone URL (URL du clone)** en haut à droite de la page, puis **Clone SSH (Cloner SSH)**. L'adresse pour cloner votre référentiel Git est copiée dans votre presse-papiers.

1. Dans votre terminal ou votre ligne de commande, accédez à un répertoire local dans lequel vous souhaitez que votre référentiel local soit stocké. Dans ce didacticiel, nous utilisons `/tmp`.

1. Exécutez la commande suivante pour cloner le référentiel, en remplaçant l'adresse SSH par celle que vous avez copiée à l'étape précédente. Cette commande crée un répertoire appelé `MyDemoRepo`. Vous copiez un exemple d'application dans ce répertoire.

   ```
   git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo
   ```

## Étape 2 : ajouter un exemple de code à votre CodeCommit référentiel
<a name="codecommit-add-code"></a>

Au cours de cette étape, vous téléchargez le code d'un exemple d'application créé pour un CodeDeploy exemple de procédure pas à pas, et vous l'ajoutez à votre CodeCommit référentiel.



1. Ensuite, téléchargez un exemple et enregistrez-le dans un dossier ou un répertoire sur votre ordinateur local.

   1. Choisissez l’une des options suivantes. Choisissez `SampleApp_Linux.zip` si vous souhaitez suivre les étapes de ce didacticiel pour les instances Linux.
      + Si vous souhaitez effectuer un déploiement sur des instances Amazon Linux à l'aide de CodeDeploy, téléchargez l'exemple d'application ici : [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).
      + Si vous souhaitez effectuer un déploiement sur des instances Windows Server à l'aide de CodeDeploy, téléchargez l'exemple d'application ici : [SampleApp\$1Windows.zip](samples/SampleApp_Windows.zip).

      L'exemple d'application contient les fichiers suivants à déployer avec CodeDeploy : 
      + `appspec.yml`— Le fichier de spécification de l'application (AppSpecfichier) est un fichier au format [YAML](http://www.yaml.org) utilisé CodeDeploy pour gérer un déploiement. Pour plus d'informations sur le AppSpec fichier, reportez-vous à la section [Référence CodeDeploy AppSpec du fichier](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) dans le *Guide de AWS CodeDeploy l'utilisateur*.
      + `index.html`— Le fichier d'index contient la page d'accueil de l'exemple d'application déployé.
      + `LICENSE.txt`— Le fichier de licence contient les informations de licence de l'exemple d'application.
      + Fichiers pour scripts : l'exemple d'application utilise des scripts pour écrire des fichiers texte dans un emplacement de votre instance. Un fichier est écrit pour chacun des événements du cycle de vie du CodeDeploy déploiement, comme suit :
        + `scripts`Dossier (exemple Linux uniquement) : le dossier contient les scripts shell suivants pour installer les dépendances et démarrer et arrêter l'exemple d'application pour le déploiement automatique :`install_dependencies`,`start_server`, et`stop_server`.
        + (Exemple Windows uniquement) `before-install.bat` — Il s'agit d'un script batch pour l'événement du cycle de vie du `BeforeInstall` déploiement, qui sera exécuté pour supprimer les anciens fichiers écrits lors des déploiements précédents de cet exemple et créer un emplacement sur votre instance où écrire les nouveaux fichiers.

   1. Téléchargez le fichier compressé (zippé).

1. Décompressez les fichiers de [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) dans le répertoire local que vous avez créé précédemment (par exemple, `/tmp/MyDemoRepo` ou`c:\temp\MyDemoRepo`).

   Veillez à placer les fichiers directement dans votre répertoire local. N'incluez pas un dossier `SampleApp_Linux`. Sur votre machine Linux, macOS ou Unix locale, par exemple, votre hiérarchie de répertoires et de fichiers doit ressembler à ceci :

   ```
   /tmp
      └-- MyDemoRepo
          │-- appspec.yml
          │-- index.html
          │-- LICENSE.txt
          └-- scripts
              │-- install_dependencies
              │-- start_server
              └-- stop_server
   ```

1. Pour télécharger des fichiers dans votre référentiel, appliquez l'une des méthodes suivantes.

   1. Pour télécharger vos fichiers à l'aide de la CodeCommit console : 

      1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des **référentiels**.

      1. Choisissez **Ajouter un fichier**, puis choisissez **Charger le fichier**. 

      1. Sélectionnez **Choose file (Choisir un fichier)**, puis naviguez vers votre fichier. Pour ajouter un fichier dans un dossier, choisissez **Créer un fichier**, puis entrez le nom du dossier avec le nom du fichier, par exemple`scripts/install_dependencies`. Collez le contenu du fichier dans le nouveau fichier.

         Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. 

         Choisissez **Valider les modifications**.

      1. Répétez cette étape pour chaque fichier.

         Le contenu de votre dépôt doit ressembler à ceci :

         ```
                │-- appspec.yml
                │-- index.html
                │-- LICENSE.txt
                └-- scripts
                    │-- install_dependencies
                    │-- start_server
                    └-- stop_server
         ```

   1. Pour utiliser les commandes git pour télécharger vos fichiers : 

      1. Passez dans le répertoire de votre référentiel local :

         ```
         (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo
         (For Windows) cd c:\temp\MyDemoRepo
         ```

      1. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

         ```
         git add -A
         ```

      1. Exécutez la commande suivante pour valider les fichiers avec un message de validation :

         ```
         git commit -m "Add sample application files"
         ```

      1. Exécutez la commande suivante pour publier les fichiers depuis votre référentiel local vers votre référentiel CodeCommit :

         ```
         git push
         ```

1. Les fichiers que vous avez téléchargés et ajoutés à votre dépôt local ont maintenant été ajoutés à la `main` branche de votre CodeCommit `MyDemoRepo` référentiel et sont prêts à être inclus dans un pipeline.

## Étape 3 : créer une instance Linux Amazon EC2 et installer l'agent CodeDeploy
<a name="codecommit-create-deployment"></a>

Au cours de cette étape, vous créez l'instance Amazon EC2 dans laquelle vous déployez un exemple d'application. Dans le cadre de ce processus, créez un rôle d'instance qui permet l'installation et la gestion de l' CodeDeploy agent sur l'instance. L' CodeDeploy agent est un progiciel qui permet à une instance d'être utilisée dans CodeDeploy des déploiements. Vous attachez également des politiques qui permettent à l'instance de récupérer les fichiers que l' CodeDeploy agent utilise pour déployer votre application et de permettre à l'instance d'être gérée par SSM.

**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 : Autorisations**.

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

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.

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

**Pour lancer une instance**

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 **MyCodePipelineDemo**. Cela affecte à l'instance une balise **Key** of **Name** et une balise **Value** de**MyCodePipelineDemo**. Vous créerez ultérieurement une CodeDeploy application qui déploiera l'exemple d'application sur cette instance. CodeDeploysélectionne les instances à déployer en fonction des balises.

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. 

   Vous pouvez également choisir **Proceed sans paire de clés**.
**Note**  
Pour les besoins de ce didacticiel, vous pouvez procéder sans paire de clés. Pour utiliser SSH pour vous connecter à vos instances, créez ou utilisez une paire de clés.

1. Sous **Paramètres réseau**, procédez comme suit.

   Dans **Attribuer automatiquement une adresse IP publique**, assurez-vous que le statut est **Activé**.

   Pour le groupe de sécurité créé, choisissez **HTTP**, puis sous **Type de source**, sélectionnez **Mon adresse IP**.

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**).

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

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 4 : créer une application dans CodeDeploy
<a name="codecommit-create-codedeploy-app"></a>

Dans CodeDeploy, une [https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html) est une ressource qui contient l'application logicielle que vous souhaitez déployer. Vous utiliserez ensuite cette application CodePipeline pour automatiser les déploiements de l'exemple d'application sur votre instance Amazon EC2.

Tout d'abord, vous créez un rôle qui permet d' CodeDeploy effectuer des déploiements. Ensuite, vous créez une application CodeDeploy .

**Pour créer un rôle CodeDeploy de service**

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 une entité de confiance**, sélectionnez **Service AWS**. Sous **Use case** (Cas d'utilisation), choisissez **CodeDeploy**. Choisissez **CodeDeploy**parmi les options répertoriées. Choisissez **Suivant**. La stratégie gérée `AWSCodeDeployRole` est déjà attachée au rôle.

1. Choisissez **Suivant**.

1. Entrez un nom pour le rôle (par exemple, **CodeDeployRole**), puis choisissez **Créer un rôle**.

**Pour créer une application dans CodeDeploy**

1. Ouvrez la CodeDeploy console dans [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)

1. Si la page **Applications** n'apparaît pas, dans le menu, choisissez **Applications**.

1. Choisissez **Créer une application**.

1. Dans **Nom de l'application**, saisissez **MyDemoApplication**. 

1. Dans **Plateforme informatique**, choisissez **EC2/Sur site**.

1. Choisissez **Créer une application**.

**Pour créer un groupe de déploiement dans CodeDeploy**

Un [https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html) est une ressource qui définit les paramètres liés au déploiement, tels que les instances sur lesquelles déployer et la vitesse du déploiement.

1. Sur la page qui affiche votre application, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **MyDemoDeploymentGroup**.

1. Dans **Rôle de service**, choisissez l'ARN du rôle de service que vous avez créé précédemment (par exemple,**`arn:aws:iam::account_ID:role/CodeDeployRole`**).

1. Sous **Type de déploiement**, choisissez **Sur place**.

1. Sous **Configuration de l'environnement**, choisissez **Instances Amazon EC2**. Dans le champ **Clé**, entrez**Name**. Dans le champ **Valeur**, entrez le nom que vous avez utilisé pour étiqueter l'instance (par exemple,**MyCodePipelineDemo**).

1. Sous **Configuration de l'agent avec AWS Systems Manager**, choisissez **Now et planifiez les mises à jour**. L'agent est alors installé sur l'instance. L'instance Linux est déjà configurée avec l'agent SSM et sera désormais mise à jour avec l' CodeDeploy agent.

1. Dans **Configuration de déploiement**, choisissez `CodeDeployDefault.OneAtaTime`.

1. Sous **Load Balancer**, assurez-vous que l'**option Activer l'équilibrage de charge** n'est pas sélectionnée. Vous n'avez pas besoin de configurer un équilibreur de charge ou de choisir un groupe cible pour cet exemple.

1. Choisissez **Créer un groupe de déploiement**.

## Étape 5 : Créez votre premier pipeline dans CodePipeline
<a name="codecommit-create-pipeline"></a>

Vous êtes maintenant prêt à créer et à exécuter votre premier pipeline. Au cours de cette étape, vous créez un pipeline qui s'exécute automatiquement lorsque le code est transféré vers votre CodeCommit référentiel.

**Pour créer un CodePipeline pipeline**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

   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**MyFirstPipeline**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **CodeCommit**. Dans **Nom du référentiel**, choisissez le nom du CodeCommit référentiel dans lequel vous l'avez créé[Étape 1 : Création d'un CodeCommit référentiel](#codecommit-create-repository). Dans **Nom de branche**, choisissez `main`, puis **Étape suivante**.

   Après avoir sélectionné le nom du référentiel et la branche, un message affiche la règle Amazon CloudWatch Events à créer pour ce pipeline. 

   Sous **Modifier les options de détection**, ne modifiez pas les valeurs par défaut. Cela permet d' CodePipeline utiliser Amazon CloudWatch Events pour détecter les modifications apportées à votre référentiel source.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.
**Note**  
Dans ce didacticiel, vous déployez un code qui ne requiert aucun service de génération. Vous pouvez donc ignorer cette étape. Toutefois, si votre code source doit être généré avant d'être déployé sur des instances, vous pouvez configurer [CodeBuild](https://aws.amazon.com/codebuild/) au cours de cette étape.

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. À **l'étape 6 : Ajouter une étape de déploiement**, dans **Fournisseur de déploiement**, sélectionnez **CodeDeploy**. Dans **Nom de l'application**, choisissez **MyDemoApplication**. Dans **Groupe de déploiement**, choisissez **MyDemoDeploymentGroup**, puis **Étape suivante**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

1. Le pipeline commence à s'exécuter une fois qu'il a été créé. Il télécharge le code depuis votre CodeCommit référentiel et crée un CodeDeploy déploiement sur votre instance EC2. Vous pouvez consulter les messages de progression et de réussite et d'échec au fur et à mesure que l' CodePipeline exemple déploie la page Web sur l'instance Amazon EC2 lors du déploiement. CodeDeploy   
![\[Vue d'un pipeline qui commence à s'exécuter dans la CodePipeline console.\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/codepipeline-firstpipeline-codecommit-pol.png)

Félicitations \$1 Vous venez de créer un pipeline simple dans CodePipeline. 

Vérifiez ensuite les résultats.

**Pour vérifier que votre pipeline a été exécuté avec succès**

1. Affichez la progression initiale du pipeline. L'état de chaque étape passe de **Pas encore d'exécution** à **En cours**, puis devient soit **Réussi**, soit **Échec**. Le pipeline doit terminer la première exécution en quelques minutes.

1. Une fois que **Succeded** est affiché pour l'état du pipeline, dans la zone d'état de l'étape de **déploiement**, sélectionnez **CodeDeploy**. Cela ouvre la CodeDeploy console. Si **Réussi** n'est pas affiché, consultez [Résolution des problèmes CodePipeline](troubleshooting.md).

1.  Dans l'onglet **Déploiements**, choisissez l’ID de déploiement. Sur la page du déploiement, sous **Événements du cycle de vie de déploiement**, choisissez l'ID de l'instance. Ceci ouvre la console EC2.

1. Dans l'onglet **Description**, sous **DNS public**, copiez l'adresse (par exemple, `ec2-192-0-2-1.us-west-2.compute.amazonaws.com`), puis collez-la dans la barre d'adresses de votre navigateur web.

   La page Web s'affiche pour l'exemple d'application que vous avez téléchargé et transféré CodeCommit dans votre référentiel.

Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez [CodePipeline concepts ](concepts.md).

## Étape 6 : Modifier le code dans votre CodeCommit dépôt
<a name="codecommit-push-code"></a>

Votre pipeline est configuré de sorte à s'exécuter chaque fois que le code est modifié dans votre référentiel CodeCommit. Au cours de cette étape, vous apportez des modifications au fichier HTML qui fait partie de l'exemple d' CodeDeployapplication dans le CodeCommit référentiel. Lorsque vous transmettez ces modifications, votre pipeline s'exécute à nouveau et les modifications que vous apportez sont visibles à l'adresse web à laquelle vous avez accédé précédemment.

1. Passez dans le répertoire de votre référentiel local :

   ```
   (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo
   (For Windows) cd c:\temp\MyDemoRepo
   ```

1. Utilisez un éditeur de texte pour modifier le fichier `index.html` :

   ```
   (For Linux or Unix)gedit index.html
   (For OS X)open –e index.html
   (For Windows)notepad index.html
   ```

1. Révisez le contenu du fichier `index.html` pour modifier la couleur d'arrière-plan et une partie du texte sur la page web, puis enregistrez le fichier. 

   ```
   <!DOCTYPE html>
   <html>
   <head>
     <title>Updated Sample Deployment</title>
     <style>
       body {
         color: #000000;
         background-color: #CCFFCC;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
           
       h1 {
         font-size: 250%;
         font-weight: normal;
         margin-bottom: 0;
       }
       
       h2 {
         font-size: 175%;
         font-weight: normal;
         margin-bottom: 0;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Updated Sample Deployment</h1></div>
     <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div>
     <div align="center">
       <p>Learn more:</p> 
       <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p>
       <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p>
       <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p>
     </div>
   </body>
   </html>
   ```

1. Validez et transférez vos modifications CodeCommit dans votre dépôt en exécutant les commandes suivantes, une par une :

   ```
   git commit -am "Updated sample application files"
   ```

   ```
   git push
   ```

**Pour vérifier que votre pipeline a été exécuté avec succès**

1. Affichez la progression initiale du pipeline. L'état de chaque étape passe de **Pas encore d'exécution** à **En cours**, puis devient soit **Réussi**, soit **Échec**. L'exécution du pipeline se terminer en quelques minutes.

1. Une fois que **Réussi** s'affiche pour l'état de l'action, actualisez la page de démonstration à laquelle vous avez accédé précédemment dans votre navigateur.

   La page Web mise à jour s'affiche.

## Étape 7 : Nettoyer les ressources
<a name="codecommit-clean-up"></a>

Vous pouvez utiliser certaines des ressources que vous avez créées dans ce didacticiel pour d'autres didacticiels de ce guide. Par exemple, vous pouvez réutiliser l' CodeDeploy application et le déploiement. Toutefois, une fois ce didacticiel terminé (ou d'autres didacticiels), vous devez supprimer le pipeline, ainsi que les ressources qu'il utilise, afin que l'utilisation de ces ressources ne vous soit pas facturée. Supprimez d'abord le pipeline, puis l' CodeDeploy application et son instance Amazon EC2 associée, et enfin le CodeCommit référentiel.

**Pour nettoyer les ressources utilisées dans ce didacticiel**

1. Pour nettoyer vos CodePipeline ressources, suivez les instructions de la section [Supprimer un pipeline dans AWS CodePipeline](pipelines-delete.md).

1. Pour nettoyer vos CodeDeploy ressources, suivez les instructions de la section [Ressources de procédure pas à pas pour nettoyer le déploiement](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-simple-s3alkthrough.html#tutorials-simple-s3alkthrough-clean-up).

1. Pour supprimer le CodeCommit dépôt, suivez les instructions de la [section Supprimer un CodeCommit dépôt](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-delete-repository.html).

## Étape 8 : Suggestions de lecture
<a name="codecommit-optional-tasks"></a>

En savoir plus sur le CodePipeline fonctionnement :
+ Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez [CodePipeline concepts ](concepts.md).
+ Pour plus d'informations sur les actions que vous pouvez effectuer à CodePipeline l'aide de[Intégrations avec les types CodePipeline d'action](integrations-action-type.md).
+ Essayez ce didacticiel plus avancé, [Didacticiel : Création d'un pipeline à quatre étapes](tutorials-four-stage-pipeline.md). Celui-ci crée un pipeline en plusieurs étapes incluant une étape qui génère le code avant son déploiement.

# Didacticiel : Création d'un pipeline à quatre étapes
<a name="tutorials-four-stage-pipeline"></a>

Maintenant que vous avez créé votre premier pipeline dans [Didacticiel : Création d'un pipeline simple (compartiment S3)](tutorials-simple-s3.md) ou [Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md), vous pouvez commencer à créer des pipelines plus complexes. Ce didacticiel vous explique comment créer un pipeline en quatre étapes qui utilise un GitHub référentiel pour votre source, un serveur de build Jenkins pour créer le projet et une CodeDeploy application pour déployer le code généré sur un serveur intermédiaire. Le schéma suivant montre le pipeline initial en trois étapes.

![\[Schéma illustrant l'étape source avec l'action source, une phase de génération avec l'action Jenkins et une étape de déploiement avec l'action de déploiement.\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/flow-codepipeline-codecommit-jenkins.png)


Une fois le pipeline créé, vous allez le modifier pour ajouter une étape comprenant une action de test pour tester le code, également à l'aide de Jenkins. 

Avant de pouvoir créer ce pipeline, vous devez configurer les ressources requises. Par exemple, si vous souhaitez utiliser un GitHub référentiel pour votre code source, vous devez le créer avant de pouvoir l'ajouter à un pipeline. Dans le cadre de la configuration, ce didacticiel vous guide dans la configuration de Jenkins sur une instance EC2, à des fins de démonstration. 

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Avant de commencer ce didacticiel, assurez-vous de réunir les prérequis généraux indiqués dans [Commencer avec CodePipeline](getting-started-codepipeline.md).

**Topics**
+ [Étape 1 : Vérifier les conditions préalables](#tutorials-four-stage-pipeline-prerequisites)
+ [Étape 2 : créer un pipeline dans CodePipeline](#tutorials-four-stage-pipeline-pipeline-create)
+ [Étape 3 : Ajouter une autre étape à votre pipeline](#tutorials-four-stage-pipeline-add-stage)
+ [Étape 4 : Nettoyer les ressources](#tutorials-four-stage-pipeline-clean-up)

## Étape 1 : Vérifier les conditions préalables
<a name="tutorials-four-stage-pipeline-prerequisites"></a>

Pour intégrer Jenkins, vous devez AWS CodePipeline installer le CodePipeline plugin pour Jenkins sur n'importe quelle instance de Jenkins que vous souhaitez utiliser. CodePipeline Vous devez également configurer un utilisateur ou un rôle IAM dédié à utiliser pour les autorisations entre votre projet Jenkins et. CodePipeline Le moyen le plus simple d'intégrer Jenkins CodePipeline consiste à installer Jenkins sur une instance EC2 qui utilise un rôle d'instance IAM que vous avez créé pour l'intégration de Jenkins. Afin que les liens des actions Jenkins du pipeline soient bien connectés, vous devez configurer les paramètres du pare-feu et de proxy sur le serveur ou l'instance EC2 pour autoriser les connexions entrantes sur le port utilisé par votre projet Jenkins. Assurez-vous d'avoir configuré Jenkins afin d'authentifier les utilisateurs et d'appliquer le contrôle d'accès avant d'autoriser les connexions sur ces ports (par exemple, 443 et 8443 si vous avez sécurisé Jenkins de sorte à ce qu'il n'utilise que des connexions HTTPS, ou 80 et 8080 si vous autorisez les connexions HTTP). Pour plus d'informations, consultez [Sécurisation de Jenkins](https://wiki.jenkins.io/display/JENKINS/Securing+Jenkins).

**Note**  
Ce didacticiel utilise un modèle de code et configure les étapes de génération qui convertissent ce modèle, de Haml à HTML. Vous pouvez télécharger l'exemple de code open source depuis le GitHub référentiel en suivant les étapes décrites dans[Copier ou cloner l'échantillon dans un GitHub référentiel](#tutorials-four-stage-pipeline-prerequisites-github). Vous aurez besoin de l'échantillon complet dans votre GitHub dépôt, et pas seulement du fichier .zip.   
Ce didacticiel présume également que :  
Vous êtes familiarisé avec l'installation et la gestion de Jenkins, ainsi qu'avec la création de projets Jenkins.
Vous avez installé Rake et le gem Haml pour Ruby sur le même ordinateur ou la même instance qui héberge votre projet Jenkins.
Vous avez défini les variables requises de l'environnement système afin que les commandes Rake puissent être exécutées à partir du terminal ou de la ligne de commande (par exemple, sur les systèmes Windows, modifiez la variable PATH pour inclure le répertoire où vous avez installé Rake).

**Topics**
+ [Copier ou cloner l'échantillon dans un GitHub référentiel](#tutorials-four-stage-pipeline-prerequisites-github)
+ [Créez un rôle IAM à utiliser pour l'intégration de Jenkins](#tutorials-four-stage-pipeline-prerequisites-jenkins-iam-role)
+ [Installation et configuration de Jenkins et du CodePipeline plugin pour Jenkins](#tutorials-four-stage-pipeline-prerequisites-jenkins-configure)

### Copier ou cloner l'échantillon dans un GitHub référentiel
<a name="tutorials-four-stage-pipeline-prerequisites-github"></a>

**Pour cloner l'échantillon et le transférer vers un GitHub référentiel**

1. Téléchargez l'exemple de code depuis le GitHub référentiel ou clonez les référentiels sur votre ordinateur local. Il y a deux modèles de modules : 
   + Si vous comptez déployer votre échantillon sur des instances Amazon Linux, RHEL ou Ubuntu Server, choisissez [codepipeline-jenkins-aws-codedeploy\$1linux.zip](https://github.com/awslabs/aws-codepipeline-jenkins-aws-codedeploy_linux). 
   + Si vous comptez déployer votre échantillon sur des instances Windows Server, choisissez [CodePipeline-Jenkins- AWSCodeDeploy\$1Windows](https://github.com/awslabs/AWSCodePipeline-Jenkins-AWSCodeDeploy_windows) .zip.

1. Dans le référentiel, choisissez **Fork** pour cloner le modèle de référentiel dans un référentiel de votre compte Github. Pour plus d’informations, consultez la [documentation GitHub](https://help.github.com/articles/create-a-repo/).

### Créez un rôle IAM à utiliser pour l'intégration de Jenkins
<a name="tutorials-four-stage-pipeline-prerequisites-jenkins-iam-role"></a>

Il est recommandé d'envisager de lancer une instance EC2 pour héberger votre serveur Jenkins et d'utiliser un rôle IAM pour accorder à l'instance les autorisations requises pour interagir avec. CodePipeline

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation de la console IAM, choisissez **Rôles**, puis **Créer un rôle**.

1. Sous **Select type of trusted entity** (Sélectionner le type d'entité approuvée), choisissez **Service AWS**. Sous **Choose the service that will use this role (Choisir le service qui utilisera ce rôle)**, choisissez **EC2**. Sous **Select your use case (Sélectionner votre cas d'utilisation)**, choisissez **EC2**. 

1. Choisissez **Suivant : Autorisations**. Sur la page **Attach permissions policies (Attacher des stratégies d'autorisations)**, sélectionnez la stratégie gérée `AWSCodePipelineCustomActionAccess`, puis choisissez **Next: Tags (Suivant : balises)**. Choisissez **Suivant : Vérification**.

1. Dans la page **Vérification**, dans **Nom du rôle**, entrez le nom du rôle à créer spécifiquement pour l'intégration Jenkins (par exemple, *JenkinsAccess*), puis choisissez **Créer un rôle**.

Lorsque vous créez l'instance EC2 où vous allez installer Jenkins, dans **Étape 3 : Configurer les détails de l'instance**, assurez-vous de choisir le rôle de l'instance (par exemple, *JenkinsAccess*).

Pour plus d'informations sur les rôles d'instance et Amazon EC2, consultez les sections Rôles [IAM pour Amazon EC2, Utilisation des rôles](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) [IAM pour accorder des autorisations aux applications exécutées sur des instances Amazon EC2 et [Création](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-creatingrole-service.html) d'un rôle pour déléguer](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html) des autorisations à un. Service AWS

### Installation et configuration de Jenkins et du CodePipeline plugin pour Jenkins
<a name="tutorials-four-stage-pipeline-prerequisites-jenkins-configure"></a>

**Pour installer Jenkins et le CodePipeline plugin pour Jenkins**

1. Créez une instance EC2 où vous allez installer Jenkins, et dans **Étape 3 : Configurer les détails de l'instance**, assurez-vous de choisir le rôle de l'instance que vous avez créée (par exemple, *JenkinsAccess*). Pour plus d'informations sur la création d'instances EC2, consultez [Lancer une instance Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance_linux.html) dans le guide de l'utilisateur *Amazon EC2*. 
**Note**  
Si vous souhaitez déjà utiliser des ressources Jenkins, vous pouvez le faire, mais vous devez créer un utilisateur IAM spécial, appliquer la politique `AWSCodePipelineCustomActionAccess` gérée à cet utilisateur, puis configurer et utiliser les informations d'identification d'accès de cet utilisateur sur votre ressource Jenkins. Si vous souhaitez que l'interface utilisateur Jenkins fournisse les informations d'identification, configurez Jenkins de sorte à uniquement autoriser les connexions HTTPS. Pour de plus amples informations, veuillez consulter [Résolution des problèmes CodePipeline](troubleshooting.md).

1. Installez Jenkins sur l'instance EC2. Pour plus d'informations, consultez la documentation de Jenkins relative à [l’installation de Jenkins](https://www.jenkins.io/doc/book/installing/linux/) et à [la mise en route et à l’accès à Jenkins](https://wiki.jenkins.io/JENKINS/Starting-and-Accessing-Jenkins.html), ainsi que [details of integration with Jenkins](integrations-action-type.md#JenkinsInt_2) dans [Intégrations de produits et de services avec CodePipeline](integrations.md).

1. Lancez Jenkins et sur la page d'accueil, choisissez **Manage Jenkins**.

1. Sur la page **Manage Jenkins**, choisissez **Manage Plugins**.

1. Choisissez l'onglet **Disponible** et, dans la zone de recherche **Filtre**, entrez **AWS CodePipeline**. Choisissez **CodePipeline Plugin for Jenkins** dans la liste, puis choisissez **Télécharger maintenant et installer après le redémarrage**.

1. Sur la page **Installing Plugins/Upgrades**, sélectionnez **Restart Jenkins when installation is complete and no jobs are running**.

1. Choisissez **Back to Dashboard**.

1. Sur la page principale, choisissez **New Item**.

1. Dans **Nom de l'élément**, entrez le nom du projet Jenkins (par exemple,*MyDemoProject*). Choisissez **Freestyle project**, puis **OK**.
**Note**  
Assurez-vous que le nom de votre projet répond aux exigences relatives à CodePipeline. Pour de plus amples informations, veuillez consulter [Quotas dans AWS CodePipeline](limits.md).

1. Sur la page de configuration du projet, cochez la case **Execute concurrent builds if necessary**. Dans **Gestion du code source**, choisissez **AWS CodePipeline**. Si vous avez installé Jenkins sur une instance EC2 et que vous l'avez configurée AWS CLI avec le profil de l'utilisateur IAM que vous avez créé pour l'intégration entre Jenkins CodePipeline et Jenkins, laissez tous les autres champs vides.

1. Choisissez **Avancé**, puis dans **Fournisseur**, entrez le nom du fournisseur de l'action tel qu'il apparaîtra dans CodePipeline (par exemple,*MyJenkinsProviderName*). Assurez-vous que ce nom est unique et facile à retenir. Vous l'utiliserez lorsque vous ajouterez une action de génération à votre pipeline un peu plus tard dans ce didacticiel, et à nouveau lorsque vous ajouterez une action de test.
**Note**  
Le nom de cette action doit respecter les exigences d'attribution de noms pour les actions dans CodePipeline. Pour de plus amples informations, veuillez consulter [Quotas dans AWS CodePipeline](limits.md).

1. Dans **Build Triggers**, décochez toutes les cases et sélectionnez **Poll SCM**. Dans **Schedule**, tapez cinq astérisques séparés par des espaces, comme suit :

   ```
   * * * * *
   ```

   Ce sondage est effectué CodePipeline toutes les minutes. 

1. Dans **Build**, choisissez **Add build step**. Choisissez **Execute shell** (Amazon Linux, RHEL ou Ubuntu Server) **Exécuter la commande batch** (Windows Server), puis entrez ce qui suit :

   ```
   rake
   ```
**Note**  
Assurez-vous que votre environnement est configuré avec les variables et les paramètres requis pour exécuter Rake ; dans le cas contraire, la génération échouera.

1. Choisissez **Ajouter une action après la génération**, puis choisissez **AWS CodePipeline Publisher**. Choisissez **Add** et dans **Build Output Locations**, laissez l'emplacement vide. Il s'agit de la configuration par défaut. Celle-ci crée un fichier compressé à la fin du processus de génération.

1. Choisissez **Save** pour enregistrer votre projet Jenkins.

## Étape 2 : créer un pipeline dans CodePipeline
<a name="tutorials-four-stage-pipeline-pipeline-create"></a>

Dans cette partie du didacticiel, vous créez le pipeline à l'aide de l'assistant **Créer un pipeline**. 

**Pour créer un processus de publication CodePipeline automatisé**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Si nécessaire, utilisez le sélecteur de région pour définir la même région que celle où se trouvent vos ressources de pipeline. Par exemple, si vous avez créé des ressources pour le didacticiel précédent dans`us-east-2`, assurez-vous que le sélecteur de région est défini sur USA East (Ohio).

   Pour plus d'informations sur les régions et les points de terminaison disponibles CodePipeline, consultez la section [AWS CodePipeline Points de terminaison et quotas](https://docs.aws.amazon.com/general/latest/gr/codepipeline.html).

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. Sur la page **Étape 2 : Choisir les paramètres du pipeline**, dans **Nom du pipeline**, entrez le nom de votre pipeline.

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. Conservez les valeurs par défaut sous **Advanced settings (Paramètres avancés)**, puis choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter une étape source**, dans **Source provider**, sélectionnez **GitHub**.

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. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ajouter Jenkins**. Dans **Nom du fournisseur**, entrez le nom de l'action que vous avez fournie dans le CodePipeline plugin pour Jenkins (par exemple*MyJenkinsProviderName*). Ce nom doit correspondre exactement au nom indiqué dans le CodePipeline plugin pour Jenkins. Dans **URL du serveur**, entrez l'URL de l'instance EC2 où Jenkins est installé. Dans **Nom du projet**, entrez le nom du projet que vous avez créé dans Jenkins, par exemple*MyDemoProject*, puis choisissez **Next**.

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. À **l'étape 6 : Ajouter une phase de déploiement**, réutilisez l' CodeDeploy application et le groupe de déploiement dans lesquels vous avez créé[Didacticiel : Création d'un pipeline simple (compartiment S3)](tutorials-simple-s3.md). Dans **Fournisseur de déploiement**, choisissez **CodeDeploy**. Dans **Nom de l'application**, entrez **CodePipelineDemoApplication**, ou choisissez le bouton d'actualisation et choisissez le nom de l'application dans la liste. Dans **Groupe de déploiement**, entrez **CodePipelineDemoFleet** ou choisissez-le dans la liste, puis choisissez **Suivant**.
**Note**  
Vous pouvez utiliser vos propres CodeDeploy ressources ou en créer de nouvelles, mais cela peut entraîner des coûts supplémentaires.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

1. Le pipeline démarre automatiquement et exécute le modèle à travers le pipeline. Vous pouvez consulter les messages de progression et de réussite et d'échec au fur et à mesure que le pipeline construit l'exemple Haml au format HTML et le déploie sur une page Web sur chacune des instances Amazon EC2 du déploiement. CodeDeploy

## Étape 3 : Ajouter une autre étape à votre pipeline
<a name="tutorials-four-stage-pipeline-add-stage"></a>

Vous allez maintenant ajouter une étape de test, puis une action de test à cette étape, laquelle utilise le test Jenkins inclus dans le modèle pour déterminer si la page web possède un contenu. Ce test est donné uniquement à des fins de démonstration.

**Note**  
Si vous ne souhaitez pas ajouter une autre étape à votre pipeline, vous pouvez ajouter une action de test à l'étape intermédiaire de celui-ci, avant ou après l'action de déploiement.

### Ajout d'une étape de test à votre pipeline
<a name="tutorials-four-stage-pipeline-add-stage-console"></a>

**Topics**
+ [Recherche de l'adresse IP d'une instance](#tutorials-four-stage-pipeline-instance-ip-lookup)
+ [Création d'un projet Jenkins pour tester le déploiement](#tutorials-four-stage-pipeline-create-jenkins-project)
+ [Création d'une quatrième étape](#tutorials-four-stage-pipeline-create-fourth-stage)

#### Recherche de l'adresse IP d'une instance
<a name="tutorials-four-stage-pipeline-instance-ip-lookup"></a>

**Pour vérifier l'adresse IP d'une instance où vous avez déployé votre code**

1. Lorsque l'état du pipeline affiche **Succeeded** dans la zone d'état de l'étape Intermédiaire, choisissez **Details**. 

1. Dans la section **Deployment Details**, sous **Instance ID**, choisissez l'identifiant d'instance de l'une des instances déployées avec succès. 

1. Copiez l'adresse IP de l'instance (par exemple,*192.168.0.4*). Vous utiliserez cette adresse IP dans votre test Jenkins.

#### Création d'un projet Jenkins pour tester le déploiement
<a name="tutorials-four-stage-pipeline-create-jenkins-project"></a>

**Création d'un projet Jenkins**

1. Dans l'instance où vous avez installé Jenkins, ouvrez Jenkins et choisissez **New Item** sur la page d'accueil.

1.  Dans **Nom de l'élément**, entrez le nom du projet Jenkins (par exemple,*MyTestProject*). Choisissez **Freestyle project**, puis **OK**.
**Note**  
Assurez-vous que le nom de votre projet répond aux CodePipeline exigences. Pour de plus amples informations, veuillez consulter [Quotas dans AWS CodePipeline](limits.md).

1. Sur la page de configuration du projet, cochez la case **Execute concurrent builds if necessary**. Dans **Gestion du code source**, choisissez **AWS CodePipeline**. Si vous avez installé Jenkins sur une instance EC2 et que vous l'avez configurée AWS CLI avec le profil de l'utilisateur IAM que vous avez créé pour l'intégration entre Jenkins CodePipeline et Jenkins, laissez tous les autres champs vides. 
**Important**  
Si vous configurez un projet Jenkins et qu'il n'est pas installé sur une instance Amazon EC2, ou s'il est installé sur une instance EC2 exécutant un système d'exploitation Windows, complétez les champs requis par les paramètres de votre hôte proxy et de votre port, et fournissez les informations d'identification de l'utilisateur ou du rôle IAM que vous avez configuré pour l'intégration entre Jenkins et. CodePipeline

1. Choisissez **Advanced** et dans **Category**, choisissez **Test**. 

1. Dans **Fournisseur**, entrez le même nom que celui que vous avez utilisé pour le projet de construction (par exemple,*MyJenkinsProviderName*). Vous utiliserez ce nom lorsque vous ajouterez l'action de test à votre pipeline un peu plus tard dans ce didacticiel.
**Note**  
Ce nom doit répondre aux exigences de CodePipeline dénomination des actions. Pour de plus amples informations, veuillez consulter [Quotas dans AWS CodePipeline](limits.md).

1. Dans **Build Triggers**, décochez toutes les cases et sélectionnez **Poll SCM**. Dans **Schedule**, tapez cinq astérisques séparés par des espaces, comme suit :

   ```
   * * * * *
   ```

   Ce sondage est effectué CodePipeline toutes les minutes. 

1. Dans **Build**, choisissez **Add build step**. Si vous effectuez un déploiement sur des instances Amazon Linux, RHEL ou Ubuntu Server, choisissez **Execute shell**. Entrez ensuite ce qui suit, où l'adresse IP est l'adresse de l'instance EC2 que vous avez copiée précédemment :

   ```
   TEST_IP_ADDRESS=192.168.0.4 rake test
   ```

   Si vous effectuez un déploiement sur des instances Windows Server, choisissez **Execute batch command**, puis entrez ce qui suit, où l'adresse IP est l'adresse de l'instance EC2 que vous avez copiée précédemment :

   ```
   set TEST_IP_ADDRESS=192.168.0.4 rake test
   ```
**Note**  
Ce test suppose la présence d'un port 80 par défaut. Si vous souhaitez spécifier un port différent, ajoutez une instruction de port de test, comme suit :   

   ```
   TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
   ```

1. Choisissez **Ajouter une action après la génération**, puis choisissez **AWS CodePipeline Publisher**. Ne choisissez pas **Add**.

1. Choisissez **Save** pour enregistrer votre projet Jenkins.

#### Création d'une quatrième étape
<a name="tutorials-four-stage-pipeline-create-fourth-stage"></a>

**Pour ajouter une étape à votre pipeline qui inclut l'action de test Jenkins**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Dans **Nom**, choisissez le nom du pipeline que vous avez créé, MySecondPipeline. 

1. Sur la page des détails du pipeline, choisissez **Edit**. 

1. Sur la page **Edit (Modifier)**, choisissez **\$1 Stage (\$1 étape)** pour ajouter une étape immédiatement après l'étape de génération. 

1. Dans le champ du nom de la nouvelle étape, entrez un nom (par exemple, **Testing**), puis choisissez **\$1 Add action group (\$1 Ajouter un groupe d'actions)**. 

1. Dans **Nom de l'action**, entrez*MyJenkinsTest-Action*. Dans **Fournisseur de test**, choisissez le nom du fournisseur que vous avez spécifié dans Jenkins (par exemple,*MyJenkinsProviderName*). Dans **Nom du projet**, entrez le nom du projet que vous avez créé dans Jenkins (par exemple,*MyTestProject*). **Dans **Artefacts d'entrée**, choisissez l'artefact de la version Jenkins dont le nom par défaut est*BuildArtifact*, puis cliquez sur Terminé.**
**Note**  
Comme l'action de test Jenkins fonctionne sur l'application générée dans l'étape de génération Jenkins, utilisez l'artefact de génération pour l'artefact d'entrée vers l'action de test.

   Pour en savoir plus sur les artéfacts d'entrée et de sortie et sur la structure des pipelines, consultez [CodePipeline référence de structure de pipeline](reference-pipeline-structure.md).

1. Sur la page **Edit** choisissez **Save pipeline changes**. Dans la boîte de dialogue **Save pipeline changes**, choisissez **Save and continue**.

1. Bien que la nouvelle étape a été ajoutée à votre pipeline, son état affiche **No executions yet** pour cette étape, car aucune modification n'a déclenché une autre exécution du pipeline. Pour faire passer l'échantillon dans le pipeline révisé, sur la page des détails du pipeline, choisissez **Release change**. 

   Le pipeline affiche ses étapes et ses actions, ainsi que l'état de la révision en cours d'exécution à travers ces quatre étapes. Le temps nécessaire à l'exécution du pipeline dans toutes les étapes dépendra de la taille des artéfacts, de la complexité de votre génération et des actions de test, en plus d'autres facteurs. 

## Étape 4 : Nettoyer les ressources
<a name="tutorials-four-stage-pipeline-clean-up"></a>

Une fois que vous avez terminé ce didacticiel, supprimez le pipeline, ainsi que les ressources qu'il utilise, afin d'éviter d'être facturé pour leur utilisation. Si vous n'avez pas l'intention de continuer à l'utiliser CodePipeline, supprimez le pipeline, puis l' CodeDeploy application et ses instances Amazon EC2 associées, et enfin, le compartiment Amazon S3 utilisé pour stocker les artefacts. Vous devez également envisager de supprimer d'autres ressources, telles que le GitHub référentiel, si vous n'avez pas l'intention de continuer à les utiliser.

**Pour nettoyer les ressources utilisées dans ce didacticiel**

1. Ouvrez une session de terminal sur votre machine Linux, macOS ou Unix locale, ou une invite de commande sur votre machine Windows locale, puis exécutez la **delete-pipeline** commande pour supprimer le pipeline que vous avez créé. Pour **MySecondPipeline**, entrez la commande suivante : 

   ```
   aws codepipeline delete-pipeline --name "MySecondPipeline"
   ```

   Cette commande ne donne aucun résultat.

1. Pour nettoyer vos CodeDeploy ressources, suivez les instructions de la [section Nettoyage](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-walkthrough.html#getting-started-walkthrough-clean-up).

1. Pour nettoyer les ressources de votre instance, supprimez l'instance EC2 où vous avez installé Jenkins. Pour plus d'informations, consultez [Nettoyez votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-clean-up-your-instance.html).

1. Si vous n'avez pas l'intention de créer d'autres pipelines ou de les CodePipeline réutiliser, supprimez le compartiment Amazon S3 utilisé pour stocker les artefacts de votre pipeline. Pour supprimer le compartiment, veuillez suivre les instructions contenues dans [Suppression d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/UG/DeletingaBucket.html).

1. Si vous ne souhaitez pas réutiliser les autres ressources pour ce pipeline, pensez à les supprimer en suivant les instructions propres à chacune d'elles. Par exemple, si vous souhaitez supprimer le GitHub référentiel, suivez les instructions de la section [Supprimer un référentiel](https://help.github.com/articles/deleting-a-repository/) sur le GitHub site Web.

# Tutoriel : Configuration d'une règle d' CloudWatch événements pour recevoir des notifications par e-mail en cas de modification de l'état du pipeline
<a name="tutorials-cloudwatch-sns-notifications"></a>

Après avoir configuré un pipeline dans AWS CodePipeline, vous pouvez configurer une règle d' CloudWatch événements pour envoyer des notifications chaque fois que l'état d'exécution de vos pipelines ou les étapes ou actions de vos pipelines sont modifiés. Pour plus d'informations sur l'utilisation CloudWatch des événements pour configurer les notifications relatives aux modifications de l'état du pipeline, consultez[Surveillance des CodePipeline événements](detect-state-changes-cloudwatch-events.md).

Dans ce didacticiel, vous configurez une notification pour envoyer un e-mail lorsque l'état d'un pipeline passe à ÉCHEC. Ce didacticiel utilise une méthode de transformation d'entrée lors de la création de la règle CloudWatch Events. Elle transforme les détails de schéma du message pour diffuser le message en texte lisible.

**Note**  
Lorsque vous créez les ressources pour ce didacticiel, telles que la notification Amazon SNS et la règle CloudWatch des événements, assurez-vous que les ressources sont créées dans la même AWS région que votre pipeline.

**Topics**
+ [Étape 1 : configurer une notification par e-mail à l'aide d'Amazon SNS](#create-filter-for-target)
+ [Étape 2 : Créer une règle et ajouter la rubrique SNS en tant que cible](#create-notification-rule)
+ [Étape 3 : Nettoyer les ressources](#notifications-clean-up-resources)

## Étape 1 : configurer une notification par e-mail à l'aide d'Amazon SNS
<a name="create-filter-for-target"></a>

Amazon SNS coordonne l'utilisation des rubriques pour envoyer des messages aux points de terminaison ou aux clients abonnés. Utilisez Amazon SNS pour créer un sujet de notification, puis abonnez-vous au sujet à l'aide de votre adresse e-mail. La rubrique Amazon SNS sera ajoutée en tant que cible à votre règle relative aux CloudWatch événements. Pour de plus amples informations, consultez dans le [Guide du développeur Amazon Simple Notification Service](https://docs.aws.amazon.com/sns/latest/dg/).

Créez ou identifiez un sujet dans Amazon SNS. CodePipeline utilisera CloudWatch les événements pour envoyer des notifications relatives à cette rubrique via Amazon SNS. Pour créer une rubrique:

1. [Ouvrez la console Amazon SNS à l'adresse /sns. https://console.aws.amazon.com](https://console.aws.amazon.com/sns)

1. Choisissez **Créer une rubrique**. 

1. Dans la boîte de dialogue **Créer une rubrique**, pour **Nom de rubrique**, saisissez un nom de rubrique (par exemple **PipelineNotificationTopic**).   
![\[Créez le sujet de notification à l'aide d'Amazon SNS.\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/tutorial-SNS-topic.png)

1. Choisissez **Créer une rubrique**.

   Pour plus d'informations, consultez la section [Créer une rubrique](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) dans le manuel *Amazon SNS Developer Guide*.

Abonnez un ou plusieurs destinataires à la rubrique pour recevoir des notifications par e-mail. Pour abonner un destinataire à une rubrique :

1. Dans la console Amazon SNS, dans la liste des **sujets**, cochez la case à côté de votre nouveau sujet. Choisissez **Actions, s'abonner à la rubrique**.

1. Dans la boîte de dialogue **Créer un abonnement**, vérifiez que l'ARN s'affiche dans **ARN de la rubrique**.

1. Pour **Protocole**, choisissez **E-mail**.

1. Indiquez l'adresse e-mail complète du destinataire dans **Point de terminaison**.

1. Choisissez **Create Subscription** (Créer un abonnement).

1. Amazon SNS envoie un e-mail de confirmation d'abonnement au destinataire. Pour recevoir des notifications par e-mail, un destinataire doit cliquer sur le lien **Confirmer l'abonnement** dans l'e-mail de confirmation. Une fois que le destinataire a cliqué sur le lien, s'il est correctement inscrit, Amazon SNS affiche un message de confirmation dans le navigateur Web du destinataire.

   Pour plus d'informations, consultez la section [S'abonner à une rubrique](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) dans le manuel *Amazon SNS Developer Guide*.

## Étape 2 : Créer une règle et ajouter la rubrique SNS en tant que cible
<a name="create-notification-rule"></a>

Créez une règle de notification d' CloudWatch événements avec CodePipeline comme source d'événement.

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

1. Dans le panneau de navigation, sélectionnez **Events**.

1. Choisissez **Créer une règle**. Sous **Source d'événement**, choisissez **AWS CodePipeline**. Pour **Type d'événement**, choisissez **Changement d'état d'exécution du pipeline**.

1. Choisissez **État(s) spécifique(s)**, puis **FAILED**.

1. Cliquez sur **Modifier** pour ouvrir l'éditeur JSON pour le volet **Aperçu du modèle d'événement**. Ajoutez le paramètre **pipeline** avec le nom de votre pipeline comme indiqué dans l'exemple suivant pour un pipeline nommé « myPipeline. »

   Vous pouvez copier le modèle d'événement ici et le coller dans la console :

   ```
   {
     "source": [
       "aws.codepipeline"
     ],
     "detail-type": [
       "CodePipeline Pipeline Execution State Change"
     ],
     "detail": {
       "state": [
         "FAILED"
       ],
       "pipeline": [
         "myPipeline"
       ]
     }
   }
   ```

1. Pour **Targets** (Cibles), choisissez **Add target** (Ajouter une cible). 

1. Dans la liste des cibles, sélectionnez **Rubrique SNS**. Pour **Rubrique**, saisissez la rubrique que vous avez créée.

1. Développez **Configurer l'entrée**, puis choisissez **Transformateur d'entrée**. 

1. Dans la case **Chemin d'entrée**, saisissez les paires clé-valeur suivantes.

   ```
   { "pipeline" : "$.detail.pipeline" }
   ```

   Dans la case **Modèle d'entrée**, saisissez ce qui suit : 

   ```
   "The Pipeline <pipeline> has failed."
   ```

1. Choisissez **Configure details** (Configurer les détails).

1. Sur la page **Configure rule details**, saisissez un nom et une description facultative. Pour **État**, gardez la case **Activé** sélectionnée.

1. Choisissez **Créer une règle**. 

1. Confirmez CodePipeline que les notifications de build sont désormais envoyées. Par exemple, vérifiez si les e-mails de notification de build sont à présent dans votre boîte de réception.

1. Pour modifier le comportement d'une règle, dans la CloudWatch console, choisissez la règle, puis sélectionnez **Actions**, **Modifier**. Modifiez la règle, choisissez **Configurer les détails**, puis choisissez **Mettre à jour la règle**.

   Pour arrêter d'utiliser une règle pour envoyer des notifications de build, dans la CloudWatch console, choisissez la règle, puis choisissez **Actions**, **Désactiver**.

   Pour supprimer une règle, dans la CloudWatch console, choisissez-la, puis choisissez **Actions**, **Supprimer**.

## Étape 3 : Nettoyer les ressources
<a name="notifications-clean-up-resources"></a>

Une fois que vous avez terminé ce didacticiel, supprimez le pipeline, ainsi que les ressources qu'il utilise, afin d'éviter d'être facturé pour leur utilisation. 

Pour plus d'informations sur la façon de nettoyer la notification SNS et de supprimer la règle Amazon CloudWatch Events, consultez [Clean Up (Unsubscribe from an Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/CleanUp.html)) et consultez le manuel [ CloudWatch Amazon Events](https://docs.aws.amazon.com/AmazonCloudWatchEvents/latest/APIReference/) API `DeleteRule` Reference.

# Tutoriel : Créez un pipeline qui crée et teste votre application Android avec AWS Device Farm
<a name="tutorials-codebuild-devicefarm"></a>

Vous pouvez l'utiliser AWS CodePipeline pour configurer un flux d'intégration continue dans lequel votre application est créée et testée chaque fois qu'un commit est envoyé. Ce didacticiel explique comment créer et configurer un pipeline pour créer et tester votre application Android avec le code source d'un GitHub référentiel. Le pipeline détecte l'arrivée d'un nouveau GitHub commit, puis l'utilise [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)pour créer l'application et [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) pour la tester.

**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.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

Vous pouvez l'essayer en utilisant votre application Android existante et vos définitions de test, ou vous pouvez utiliser l'[exemple d'application et les définitions de test fournis par Device Farm](https://github.com/aws-samples/aws-device-farm-sample-app-for-android).

**Avant de commencer**

1. Connectez-vous à la AWS Device Farm console et choisissez **Créer un nouveau projet**.

1. Choisissez votre projet. Dans le navigateur, copiez l'URL de votre nouveau projet. L'URL contient l'ID de projet. 

1. Copiez et conservez cet ID de projet. Vous l'utiliserez lorsque vous créerez votre pipeline dans CodePipeline.

   Voici un exemple d'URL de projet. Pour extraire l'ID de projet, copiez la valeur figurant après `projects/`. Dans cet exemple, l'ID de projet est `eec4905f-98f8-40aa-9afc-4c1cfexample`.

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Configurez CodePipeline pour utiliser vos tests Device Farm
<a name="codepipeline-configure-tests"></a>

1. 

   Ajoutez et validez un fichier appelé [https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)à la racine du code de votre application, puis envoyez-le dans votre référentiel. CodeBuild utilise ce fichier pour exécuter des commandes et accéder aux artefacts nécessaires à la création de votre application.

   ```
   version: 0.2
   
   phases:
     build:
       commands:
         - chmod +x ./gradlew
         - ./gradlew assembleDebug
   artifacts:
     files:
        - './android/app/build/outputs/**/*.apk'
     discard-paths: yes
   ```

1. (Facultatif) Si vous [utilisez Calabash ou Appium pour tester votre application](https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types-intro.html), ajoutez le fichier de définition de test à votre référentiel. Dans une étape ultérieure, vous pourrez configurer Device Farm pour utiliser les définitions afin de réaliser votre suite de tests. 

   Si vous utilisez les tests intégrés à Device Farm, vous pouvez ignorer cette étape.

1. Pour créer votre pipeline et ajouter une étape source, procédez comme suit :

   1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à 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. Sur la page **Étape 2 : Choisir les paramètres du pipeline**, dans **Nom du pipeline**, entrez le nom de votre pipeline.

   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**, laissez **Nouveau rôle de service** sélectionné et laissez **Nom du rôle** inchangé. Vous pouvez également choisir d'utiliser un rôle de service si vous en avez déjà un.
**Note**  
Si vous utilisez un rôle de CodePipeline service créé avant juillet 2018, vous devez ajouter des autorisations pour Device Farm. Pour ce faire, ouvrez la console IAM, recherchez le rôle, puis ajoutez les autorisations suivantes à la politique du rôle. Pour de plus amples informations, veuillez consulter [Ajouter des autorisations au rôle CodePipeline de service](how-to-custom-role.md#how-to-update-role-new-services).  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

   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 une étape source**, 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 **Référentiel**, choisissez le référentiel source.

   1. Dans **Branche**, choisissez la branche que vous souhaitez utiliser.

   1. Conservez les valeurs par défaut restantes pour l'action source. Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, ajoutez une étape de construction :

   1. Dans **Fournisseur de build**, choisissez **Autres fournisseurs de build**, puis choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

      CodeBuild utilise cette image du système d'exploitation, sur laquelle Android Studio est installé, pour créer votre application.

   1. Pour **Rôle de service**, choisissez votre rôle CodeBuild de service existant ou créez-en un nouveau.

   1. Pour **Build specifications (Spécifications de génération)**, choisissez **Use a buildspec file (Utiliser un fichier buildspec)**.

   1. Choisissez **Continuer vers CodePipeline**. Cela revient à la CodePipeline console et crée un CodeBuild projet qui utilise le `buildspec.yml` dans votre référentiel pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Vous devez voir un diagramme montrant les étapes source et de génération.

1. Ajoutez une action de test Device Farm à 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 **Test**.

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

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

   1. Dans **Action provider**, choisissez **AWS Device Farm**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Dans **Artefacts d'entrée**, choisissez l'artefact d'entrée correspondant à l'artefact de sortie de l'étape qui précède l'étape de test, comme `BuildArtifact`. 

      Dans la AWS CodePipeline console, vous pouvez trouver le nom de l'artefact de sortie pour chaque étape en survolant l'icône d'information dans le diagramme du pipeline. Si votre pipeline teste votre application directement depuis l'étape **Source**, choisissez **SourceArtifact**. Si le pipeline inclut une phase de **construction**, choisissez **BuildArtifact**.

   1. Entrez **ProjectId**l'identifiant de votre projet Device Farm. Suivez les étapes indiquées au début de ce didacticiel pour récupérer votre ID de projet.

   1. Dans **DevicePoolArn**, entrez l'ARN du pool de périphériques. Pour obtenir le pool de périphériques disponible ARNs pour le projet, y compris l'ARN des meilleurs appareils, utilisez la AWS CLI pour entrer la commande suivante : 

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. Dans **AppType**, entrez **Android**.

      Voici une liste de valeurs valides pour **AppType**:
      + **iOS**
      + **Android**
      + **Web**

   1. Dans **App**, saisissez le chemin d'accès au package de l'application compilée. Ce chemin d'accès se rapporte à la racine de l'artefact d'entrée de votre étape de test. En règle générale, ce chemin est similaire à `app-release.apk`.

   1. Dans **TestType**, entrez votre type de test, puis dans **Test**, entrez le chemin du fichier de définition du test. Ce chemin dépend de la racine de l'artefact d'entrée de votre test.

      Voici une liste de valeurs valides pour **TestType**:
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTNG**
      + **APPIUM\$1NODE**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTNG**
      + **APPIUM\$1WEB\$1NODE**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **FUZZ INTÉGRÉ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**Note**  
Les nœuds d'environnement personnalisés ne sont pas pris en charge.

   1. Dans les autres champs, indiquez la configuration appropriée pour votre test et le type d'application.

   1. (Facultatif) Dans **Avancé**, indiquez les informations de configuration pour le test.

   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**.

# Tutoriel : Créez un pipeline qui teste votre application iOS avec AWS Device Farm
<a name="tutorials-codebuild-devicefarm-S3"></a>

 Vous pouvez l'utiliser AWS CodePipeline pour configurer facilement un flux d'intégration continue dans lequel votre application est testée chaque fois que le compartiment source change. Ce didacticiel vous montre comment créer et configurer un pipeline pour tester votre application iOS à partir d'un compartiment S3. Le pipeline détecte l'arrivée d'une modification enregistrée via Amazon CloudWatch Events, puis utilise [Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) pour tester l'application créée. 

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

Vous pouvez tester cela en utilisant votre application iOS existante ou vous pouvez utiliser l'[exemple d'application iOS](samples/s3-ios-test-1.zip).

**Avant de commencer**

1. Connectez-vous à la AWS Device Farm console et choisissez **Créer un nouveau projet**.

1. Choisissez votre projet. Dans le navigateur, copiez l'URL de votre nouveau projet. L'URL contient l'ID de projet.

1. Copiez et conservez cet ID de projet. Vous l'utiliserez lorsque vous créerez votre pipeline dans CodePipeline.

   Voici un exemple d'URL de projet. Pour extraire l'ID de projet, copiez la valeur figurant après `projects/`. Dans cet exemple, l'ID de projet est `eec4905f-98f8-40aa-9afc-4c1cfexample`.

   ```
   https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs
   ```

## Configurer CodePipeline pour utiliser vos tests Device Farm (exemple Amazon S3)
<a name="codepipeline-configure-tests-S3"></a>

1. Créez ou utilisez un compartiment S3 avec la gestion des versions activée. Suivez les instructions fournies dans [Étape 1 : créer un compartiment source S3 pour votre application](tutorials-simple-s3.md#s3-create-s3-bucket) pour créer un compartiment S3.

1. Dans la console Amazon S3 de votre compartiment, choisissez **Upload** et suivez les instructions pour télécharger votre fichier .zip.

   Votre exemple d'application doit être empaqueté dans un fichier .zip.

1. Pour créer votre pipeline et ajouter une étape source, procédez comme suit :

   1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à 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. Sur la page **Étape 2 : Choisir les paramètres du pipeline**, dans **Nom du pipeline**, entrez le nom de votre pipeline.

   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**, laissez **Nouveau rôle de service** sélectionné et laissez **Nom du rôle** inchangé. Vous pouvez également choisir d'utiliser un rôle de service si vous en avez déjà un.
**Note**  
Si vous utilisez un rôle de CodePipeline service créé avant juillet 2018, vous devez ajouter des autorisations pour Device Farm. Pour ce faire, ouvrez la console IAM, recherchez le rôle, puis ajoutez les autorisations suivantes à la politique du rôle. Pour de plus amples informations, veuillez consulter [Ajouter des autorisations au rôle CodePipeline de service](how-to-custom-role.md#how-to-update-role-new-services).  

      ```
      {
           "Effect": "Allow",
           "Action": [
              "devicefarm:ListProjects",
              "devicefarm:ListDevicePools",
              "devicefarm:GetRun",
              "devicefarm:GetUpload",
              "devicefarm:CreateUpload",
              "devicefarm:ScheduleRun"
           ],
           "Resource": "*"
      }
      ```

   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 une étape source**, dans **Source provider**, choisissez **Amazon S3**.

   1. Dans l'**emplacement Amazon S3**, entrez le compartiment, par exemple`my-storage-bucket`, et la clé d'objet, par exemple `s3-ios-test-1.zip` pour votre fichier .zip.

   1. Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, créez une étape de construction fictive pour votre pipeline. Cela vous permet de créer le pipeline dans l'assistant. Une fois que vous avez créé votre pipeline à deux étapes à l'aide de l'assistant, vous n'avez plus besoin de cette étape de génération d'espace réservé. Une fois le pipeline terminé, cette deuxième étape est supprimée et la nouvelle étape de test est ajoutée à l'étape 5.

   

   1. Dans **Fournisseur de génération**, choisissez **Ajouter Jenkins**. Cette sélection de build est uniquement un espace réservé. Elle n'est pas utilisée.

   1. Dans **Nom du fournisseur**, entrez un nom. Ce nom est un espace réservé. Elle n'est pas utilisée.

   1. Dans **URL du serveur**, entrez du texte. Ce texte est un espace réservé. Elle n'est pas utilisée.

   1. Dans **Nom du projet**, entrez un nom. Ce nom est un espace réservé. Elle n'est pas utilisée.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**.

   1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Vous devez voir un diagramme montrant les étapes source et de génération.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/codepipeline-view-pipeline-S3.png)

1. Ajoutez une action de test Device Farm à votre pipeline comme suit :

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

   1. Choisissez **Modifier l'étape**. Sélectionnez **Delete (Supprimer)**. Cela supprime l'étape d'espace réservé maintenant que vous n'en avez plus besoin pour la création du pipeline.

   1. Au bas du diagramme, choisissez **\$1 Ajouter une étape**.

   1. Dans le nom de l'étape, saisissez un nom pour l'étape, par exemple Test, puis choisissez **Ajouter une étape**.

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

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

   1. Dans **Action provider**, choisissez **AWS Device Farm**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Dans **Artefacts d'entrée**, choisissez l'artefact d'entrée correspondant à l'artefact de sortie de l'étape qui précède l'étape de test, comme `SourceArtifact`. 

      Dans la AWS CodePipeline console, vous pouvez trouver le nom de l'artefact de sortie pour chaque étape en survolant l'icône d'information dans le diagramme du pipeline. Si votre pipeline teste votre application directement depuis l'étape **Source**, choisissez **SourceArtifact**. Si le pipeline inclut une phase de **construction**, choisissez **BuildArtifact**.

   1. Dans **ProjectId**, choisissez l'ID de votre projet Device Farm. Suivez les étapes indiquées au début de ce didacticiel pour récupérer votre ID de projet.

   1. Dans **DevicePoolArn**, entrez l'ARN du pool de périphériques. Pour obtenir le pool de périphériques disponible ARNs pour le projet, y compris l'ARN des meilleurs appareils, utilisez la AWS CLI pour entrer la commande suivante : 

      ```
      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
      ```

   1. Dans **AppType**, entrez **iOS**.

      Voici une liste de valeurs valides pour **AppType**:
      + **iOS**
      + **Android**
      + **Web**

   1. Dans **App**, saisissez le chemin d'accès au package de l'application compilée. Ce chemin d'accès se rapporte à la racine de l'artefact d'entrée de votre étape de test. En règle générale, ce chemin est similaire à `ios-test.ipa`.

   1. Dans **TestType**, entrez votre type de test, puis dans **Test**, entrez le chemin du fichier de définition du test. Ce chemin dépend de la racine de l'artefact d'entrée de votre test.

      Si vous utilisez l'un des tests Device Farm intégrés, entrez le type de test configuré dans votre projet Device Farm, tel que BUILTIN\$1FUZZ. Dans **FuzzEventCount**, entrez une durée en millisecondes, par exemple 6 000. Dans **FuzzEventThrottle**, entrez une durée en millisecondes, par exemple 50.

      Si vous n'utilisez pas l'un des tests Device Farm intégrés, entrez votre type de test, puis dans **Test**, entrez le chemin du fichier de définition du test. Ce chemin dépend de la racine de l'artefact d'entrée de votre test. 

      Voici une liste de valeurs valides pour **TestType**:
      + **APPIUM\$1JAVA\$1JUNIT**
      + **APPIUM\$1JAVA\$1TESTNG**
      + **APPIUM\$1NODE**
      + **APPIUM\$1RUBY**
      + **APPIUM\$1PYTHON**
      + **APPIUM\$1WEB\$1JAVA\$1JUNIT**
      + **APPIUM\$1WEB\$1JAVA\$1TESTNG**
      + **APPIUM\$1WEB\$1NODE**
      + **APPIUM\$1WEB\$1RUBY**
      + **APPIUM\$1WEB\$1PYTHON**
      + **FUZZ INTÉGRÉ**
      + **INSTRUMENTATION**
      + **XCTEST**
      + **XCTEST\$1UI**
**Note**  
Les nœuds d'environnement personnalisés ne sont pas pris en charge.

   1. Dans les autres champs, indiquez la configuration appropriée pour votre test et le type d'application.

   1. (Facultatif) Dans **Avancé**, indiquez les informations de configuration pour le test.

   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 l'exécution d'un pipeline, choisissez **Changement de version**, puis **Publication**.

# Tutoriel : Création d'un pipeline à déployer sur Service Catalog
<a name="tutorials-S3-servicecatalog"></a>

Service Catalog vous permet de créer et de fournir des produits à partir AWS CloudFormation de modèles. 

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Ce didacticiel explique comment créer et configurer un pipeline pour déployer votre modèle de produit sur Service Catalog et apporter les modifications que vous avez apportées à votre référentiel source (déjà créé dans GitHub CodeCommit, ou Amazon S3).

**Note**  
Lorsque Amazon S3 est le fournisseur source de votre pipeline, vous devez télécharger dans votre compartiment tous les fichiers source regroupés sous la forme d'un seul fichier .zip. Sinon, l'action source échoue.

Tout d'abord, vous créez un produit dans Service Catalog, puis vous créez un pipeline dans AWS CodePipeline. Ce didacticiel fournit deux options pour définir la configuration de déploiement :
+ Créez un produit dans Service Catalog et chargez un fichier modèle dans votre référentiel source. Fournissez la version du produit et la configuration de déploiement dans la CodePipeline console (sans fichier de configuration distinct). Consultez [Option 1 : Déployer vers Service Catalog sans fichier de configuration](#tutorials-S3-servicecatalog-ex1-configure).
**Note**  
Le fichier de modèle peut être créé au format YAML ou JSON.
+ Créez un produit dans Service Catalog et chargez un fichier modèle dans votre référentiel source. Fournir la version du produit et la configuration de déploiement dans un fichier de configuration distinct. Consultez [Option 2 : Déployer vers Service Catalog à l'aide d'un fichier de configuration](#tutorials-S3-servicecatalog-ex2-configure).

## Option 1 : Déployer vers Service Catalog sans fichier de configuration
<a name="tutorials-S3-servicecatalog-ex1-configure"></a>

Dans cet exemple, vous chargez le fichier AWS CloudFormation modèle d'un compartiment S3, puis vous créez votre produit dans Service Catalog. Ensuite, vous créez votre pipeline et spécifiez la configuration de déploiement dans la CodePipeline console.

### Étape 1 : Charger l'exemple de fichier de modèle dans le référentiel source
<a name="tutorials-S3-servicecatalog-configure"></a>

1. Ouvrez un éditeur de texte. Créez un exemple de modèle en collant les informations suivantes dans le fichier. Enregistrez le fichier sous le nom `S3_template.json`.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   Ce modèle permet AWS CloudFormation de créer un compartiment S3 qui peut être utilisé par Service Catalog.

1. Chargez le fichier `S3_template.json` dans votre référentiel AWS CodeCommit .

### Étape 2 : Création d'un produit dans Service Catalog
<a name="tutorials-S3-servicecatalog-product"></a>

1. En tant qu'administrateur informatique, connectez-vous à la console Service Catalog, accédez à la page **Produits**, puis choisissez **Upload new product**.

1. Sur la page **Charger un nouveau produit**, procédez comme suit :

   1. Dans **Nom du produit**, entrez le nom que vous souhaitez utiliser pour votre nouveau produit.

   1. Dans **Description**, entrez la description du catalogue de produits. Cette description apparaît dans la liste des produits pour aider l'utilisateur à choisir le bon produit. 

   1. Dans **Fourni par**, entrez le nom de votre service ou administrateur informatique.

   1. Choisissez **Suivant**.

1. (Facultatif) Dans **Saisir les informations du Support**, saisissez les coordonnées du support produit, puis choisissez **Suivant**.

1. Dans **Détails de la version**, procédez comme suit :

   1. Choisissez **Charger un fichier de modèle**. Recherchez votre fichier `S3_template.json` et chargez-le.

   1. Dans **Nom de la version**, entrez le nom de la version du produit (par exemple, **devops S3 v2**).

   1. Dans **Description**, entrez les détails qui distinguent cette version des autres.

   1. Choisissez **Suivant**.

1. Dans la page **Vérification**, vérifiez que les informations sont exactes, puis choisissez **Créer**. 

1. Sur la page **Produits**, dans le navigateur, copiez l'URL de votre nouveau produit. Elle contient l'ID du produit. Copiez et conservez cet ID de produit. Vous l'utiliserez lorsque vous créerez votre pipeline dans CodePipeline.

   Voici l'URL d'un produit nommé `my-product`. Pour extraire l'ID de produit, copiez la valeur comprise entre le signe égal (`=`) et le caractère esperluette (`&`). Dans cet exemple, l'ID de produit est `prod-example123456`.

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**Note**  
Copiez l'URL de votre produit avant de quitter la page. Lorsque vous quittez cette page, vous devez utiliser l'interface de ligne de commande pour obtenir votre ID de produit.

   Après quelques secondes, votre produit s'affiche sur la page **Produits**. Vous devrez peut-être actualiser votre navigateur pour voir le produit dans la liste.

### Étape 3 : Créer votre pipeline
<a name="tutorials-S3-servicecatalog-pipeline"></a>

1. Pour nommer votre pipeline et sélectionner ses paramètres, procédez comme suit :

   1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à 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 le nom de votre pipeline.

   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. Pour ajouter un stage source sur la page **Étape 3 : Ajouter un stage source**, procédez comme suit :

   1. Dans **Fournisseur de source**, choisissez **AWS CodeCommit**.

   1. Dans **Nom du référentiel** et **Nom de branche**, entrez le référentiel et la branche que vous souhaitez utiliser pour votre action source.

   1. Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**.

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. À **l'étape 6 : Ajouter une phase de déploiement**, procédez comme suit :

   1. Dans **Fournisseur de déploiement**, choisissez **AWS Service Catalog**.

   1. Pour configuration du déploiement, choisissez **Entrer la configuration du déploiement**.

   1. Dans **Product ID**, collez l'ID de produit que vous avez copié depuis la console Service Catalog.

   1. Dans **Template file path (Chemin du fichier de modèle)**, entrez le chemin d'accès relatif de l'emplacement où le fichier de modèle est stocké.

   1. Dans **Type de produit**, choisissez le **CloudFormation modèle**.

   1. Dans **Nom de la version du produit**, entrez le nom de la version du produit que vous avez spécifiée dans Service Catalog. Si vous souhaitez que la modification du modèle soit déployée dans une nouvelle version de produit, entrez un nom de version de produit qui n'a été utilisé pour aucune version précédente du même produit.

   1. Pour **Artefact d'entrée**, choisissez l'artefact d'entrée source.

   1. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, passez en revue les paramètres de votre pipeline, puis choisissez **Créer**.

1. Une fois que votre pipeline s'exécute correctement, à l'étape de déploiement, choisissez **Détails**. Cela ouvre votre produit dans Service Catalog.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. Sous les informations sur le produit, choisissez le nom de votre version pour ouvrir le modèle de produit. Affichez le déploiement du modèle.

### Étape 4 : Apportez une modification et vérifiez votre produit dans Service Catalog
<a name="tutorials-S3-servicecatalog-change"></a>

1. Consultez votre pipeline dans la CodePipeline console, puis sur votre scène source, choisissez **Details**. Votre AWS CodeCommit référentiel source s'ouvre dans la console. Choisissez **Modifier** et apportez une modification au fichier (par exemple, à la description). 

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. Validez et envoyez votre modification. Votre pipeline démarre une fois que vous avez envoyé la modification. Lorsque l'exécution du pipeline est terminée, lors de la phase de déploiement, choisissez **Details** pour ouvrir votre produit dans Service Catalog.

1. Sous les informations sur le produit, choisissez le nouveau nom de version pour ouvrir le modèle de produit. Affichez la modification du modèle déployé.

## Option 2 : Déployer vers Service Catalog à l'aide d'un fichier de configuration
<a name="tutorials-S3-servicecatalog-ex2-configure"></a>

Dans cet exemple, vous chargez le fichier AWS CloudFormation modèle d'un compartiment S3, puis vous créez votre produit dans Service Catalog. Vous pouvez également charger un fichier de configuration distinct qui spécifie votre configuration de déploiement. Ensuite, vous créez votre pipeline et spécifiez l'emplacement de votre fichier de configuration.

### Étape 1 : Charger l'exemple de fichier de modèle dans le référentiel source
<a name="tutorials-S3-servicecatalog-upload2"></a>

1. Ouvrez un éditeur de texte. Créez un exemple de modèle en collant les informations suivantes dans le fichier. Enregistrez le fichier sous le nom `S3_template.json`.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   Ce modèle permet AWS CloudFormation de créer un compartiment S3 qui peut être utilisé par Service Catalog.

1. Chargez le fichier `S3_template.json` dans votre référentiel AWS CodeCommit .

### Étape 2 : Créer le fichier de configuration du déploiement de votre produit
<a name="tutorials-S3-servicecatalog-configure2"></a>

1. Ouvrez un éditeur de texte. Créez le fichier de configuration de votre produit. Le fichier de configuration est utilisé pour définir les paramètres/préférences de déploiement de Service Catalog. Vous utilisez ce fichier lorsque vous créez votre pipeline.

   Cet exemple fournit le nom de version de produit (`ProductVersionName`) « devops S3 v2 » et la description de version de produit (`ProductVersionDescription`) `MyProductVersionDescription`. Si vous souhaitez que la modification du modèle soit déployée dans une nouvelle version de produit, entrez simplement un nom de version de produit qui n'a été utilisé pour aucune version précédente du même produit.

    Enregistrez le fichier sous le nom `sample_config.json`.

   ```
   {
       "SchemaVersion": "1.0",
       "ProductVersionName": "devops S3 v2",
       "ProductVersionDescription": "MyProductVersionDescription",
       "ProductType": "CLOUD_FORMATION_TEMPLATE",
       "Properties": {
           "TemplateFilePath": "/S3_template.json"
       }
   }
   ```

   Ce fichier crée automatiquement les informations sur la version de produit à chaque fois que votre pipeline s'exécute.

1. Chargez le fichier `sample_config.json` dans votre référentiel AWS CodeCommit . Veillez à charger ce fichier dans votre référentiel source.

### Étape 3 : Création d'un produit dans Service Catalog
<a name="tutorials-S3-servicecatalog-product2"></a>

1. En tant qu'administrateur informatique, connectez-vous à la console Service Catalog, accédez à la page **Produits**, puis choisissez **Upload new product**.

1. Sur la page **Charger un nouveau produit**, procédez comme suit :

   1. Dans **Nom du produit**, entrez le nom que vous souhaitez utiliser pour votre nouveau produit.

   1. Dans **Description**, entrez la description du catalogue de produits. Cette description apparaît dans la liste des produits pour aider l'utilisateur à choisir le bon produit. 

   1. Dans **Fourni par**, entrez le nom de votre service ou administrateur informatique.

   1. Choisissez **Suivant**.

1. (Facultatif) Dans **Saisir les informations du Support**, saisissez les coordonnées du support produit, puis choisissez **Suivant**.

1. Dans **Détails de la version**, procédez comme suit :

   1. Choisissez **Charger un fichier de modèle**. Recherchez votre fichier `S3_template.json` et chargez-le.

   1. Dans **Nom de la version**, entrez le nom de la version du produit (par exemple, « devops S3 v2 »).

   1. Dans **Description**, entrez les détails qui distinguent cette version des autres.

   1. Choisissez **Suivant**.

1. Sur la page **Vérification**, vérifiez que les informations sont correctes, puis choisissez **Confirmer et charger**. 

1. Sur la page **Produits**, dans le navigateur, copiez l'URL de votre nouveau produit. Elle contient l'ID du produit. Copiez et conservez cet ID de produit. Vous l'utiliserez lorsque vous créerez votre pipeline dans CodePipeline.

   Voici l'URL d'un produit nommé `my-product`. Pour extraire l'ID de produit, copiez la valeur comprise entre le signe égal (`=`) et le caractère esperluette (`&`). Dans cet exemple, l'ID de produit est `prod-example123456`. 

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**Note**  
Copiez l'URL de votre produit avant de quitter la page. Lorsque vous quittez cette page, vous devez utiliser l'interface de ligne de commande pour obtenir votre ID de produit.

   Après quelques secondes, votre produit s'affiche sur la page **Produits**. Vous devrez peut-être actualiser votre navigateur pour voir le produit dans la liste.

### Étape 4 : Créer votre pipeline
<a name="tutorials-S3-servicecatalog-pipeline2"></a>

1. Pour nommer votre pipeline et sélectionner ses paramètres, procédez comme suit :

   1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   1. Choisissez **Mise en route**. Choisissez **Créer un pipeline**, puis entrez un nom pour votre pipeline.

   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. Pour ajouter une étape source, procédez comme suit :

   1. Dans **Fournisseur de source**, choisissez **AWS CodeCommit**.

   1. Dans **Nom du référentiel** et **Nom de branche**, entrez le référentiel et la branche que vous souhaitez utiliser pour votre action source.

   1. Choisissez **Suivant**.

1. Dans **Add build stage (Ajouter une étape de génération)**, choisissez **Skip build stage (Ignorer l'étape de génération)** et acceptez le message d'avertissement en choisissant à nouveau **Skip (Ignorer)**.

1. Dans **Add deploy stage (Ajouter une étape de déploiement)**, procédez comme suit :

   1. Dans **Fournisseur de déploiement**, choisissez **AWS Service Catalog**.

   1. Choisissez **Use configuration file (Utiliser un fichier de configuration)**.

   1. Dans **Product ID**, collez l'ID de produit que vous avez copié depuis la console Service Catalog.

   1. Dans **Configuration file path (Chemin du fichier de configuration)**, entrez le chemin d'accès du fichier de configuration dans votre référentiel.

   1. Choisissez **Suivant**.

1. Dans **Vérification**, vérifiez les paramètres de votre pipeline, puis choisissez **Créer**.

1. Une fois votre pipeline exécuté avec succès, lors de votre phase de déploiement, choisissez **Details** pour ouvrir votre produit dans Service Catalog.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. Sous les informations sur le produit, choisissez le nom de votre version pour ouvrir le modèle de produit. Affichez le déploiement du modèle.

### Étape 5 : Envoyer (push) une modification et vérifier votre produit dans Service Catalog
<a name="tutorials-S3-servicecatalog-change2"></a>

1. Affichez votre pipeline dans la CodePipeline console, puis sur la scène source, choisissez **Détails**. Votre AWS CodeCommit référentiel source s'ouvre dans la console. Choisissez **Modifier**, puis apportez une modification au fichier (par exemple, à la description).

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. Validez et envoyez votre modification. Votre pipeline démarre une fois que vous avez envoyé la modification. Lorsque l'exécution du pipeline est terminée, lors de la phase de déploiement, choisissez **Details** pour ouvrir votre produit dans Service Catalog.

1. Sous les informations sur le produit, choisissez le nouveau nom de version pour ouvrir le modèle de produit. Affichez la modification du modèle déployé.

# Tutoriel : Création d'un pipeline avec AWS CloudFormation
<a name="tutorials-cloudformation"></a>

Les exemples fournissent des exemples de modèles que vous pouvez utiliser AWS CloudFormation pour créer un pipeline qui déploie votre application sur vos instances chaque fois que le code source change. L'exemple de modèle crée un pipeline que vous pouvez afficher dans AWS CodePipeline. Le pipeline détecte l'arrivée d'une modification enregistrée via Amazon CloudWatch Events.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Topics**
+ [Exemple 1 : créer un AWS CodeCommit pipeline avec AWS CloudFormation](tutorials-cloudformation-codecommit.md)
+ [Exemple 2 : créer un pipeline Amazon S3 avec AWS CloudFormation](tutorials-cloudformation-s3.md)

# Exemple 1 : créer un AWS CodeCommit pipeline avec AWS CloudFormation
<a name="tutorials-cloudformation-codecommit"></a>

Cette présentation explique comment utiliser la AWS CloudFormation console pour créer une infrastructure qui inclut un pipeline connecté à un référentiel CodeCommit source. Dans ce didacticiel, vous utiliserez le fichier modèle fourni pour créer votre pile de ressources, qui inclut votre magasin d'artefacts, votre pipeline et vos ressources de détection des modifications, telles que votre règle Amazon CloudWatch Events. Après avoir créé votre pile de ressources dans AWS CloudFormation, vous pouvez consulter votre pipeline dans la AWS CodePipeline console. Le pipeline est un pipeline en deux étapes avec une étape CodeCommit source et une étape de CodeDeploy déploiement.

**Prérequis :**

Vous devez avoir créé les ressources suivantes à utiliser avec l' AWS CloudFormation exemple de modèle :
+ Vous devez avoir créé un référentiel source. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez créé[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Vous devez avoir créé une CodeDeploy application et un groupe de déploiement. Vous pouvez utiliser les ressources CodeDeploy que vous avez créées dans [Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ [Choisissez l'un de ces liens pour télécharger le AWS CloudFormation modèle de fichier d'exemple permettant de créer un pipeline : [YAML \$1 JSON](samples/codepipeline-codecommit-events-yaml.zip)](samples/codepipeline-codecommit-events-json.zip)

  Décompressez le fichier et placez-le sur votre ordinateur local.
+ Téléchargez l'exemple de fichier d'application [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip).



**Créez votre pipeline dans AWS CloudFormation**

1. Décompressez les fichiers du [SampleAppfichier \$1Linux.zip](samples/SampleApp_Linux.zip) et chargez-les dans votre AWS CodeCommit dépôt. Vous devez charger les fichiers décompressés dans le répertoire racine de votre référentiel. Vous pouvez suivre les instructions figurant dans [Étape 2 : ajouter un exemple de code à votre CodeCommit référentiel](tutorials-simple-codecommit.md#codecommit-add-code) pour transmettre les fichiers à votre référentiel.

1. Ouvrez la AWS CloudFormation console et choisissez **Create Stack**. Choisissez **Avec de nouvelles ressources (standard)**.

1. Sous **Spécifier le modèle**, choisissez **Charger un modèle**. Sélectionnez **Choisir un fichier**, puis choisissez le fichier modèle sur votre ordinateur local. Choisissez **Suivant**.

1. Dans **Nom de la pile**, entrez un nom pour votre pipeline. Les paramètres spécifiés par l'exemple de modèle s'affichent. Entrez les paramètres suivants : 

   1. Dans **ApplicationName**, entrez le nom de votre CodeDeploy application.

   1. Dans **BetaFleet**, entrez le nom de votre groupe de CodeDeploy déploiement.

   1. Dans **BranchName**, entrez la branche du référentiel que vous souhaitez utiliser.

   1. Dans **RepositoryName**, entrez le nom de votre référentiel CodeCommit source.

1. Choisissez **Suivant**. Acceptez les valeurs par défaut de la page suivante, puis choisissez **Suivant**.

1. Dans **Fonctionnalités**, sélectionnez **Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM**, puis choisissez **Create stack**.

1. Une fois la création de la pile terminée, affichez la liste des événements pour rechercher les erreurs éventuelles.

   **Résolution des problèmes**

   L'utilisateur IAM qui crée le pipeline AWS CloudFormation peut avoir besoin d'autorisations supplémentaires pour créer des ressources pour le pipeline. Les autorisations suivantes sont requises dans la politique afin de AWS CloudFormation créer les ressources Amazon CloudWatch Events requises pour le CodeCommit pipeline :

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.
**Note**  
Pour afficher le pipeline créé, recherchez la colonne **Logical ID** sous l'onglet **Ressources** correspondant à votre stack in CloudFormation. Notez le nom du pipeline dans la colonne **Physical ID**. Dans CodePipeline, vous pouvez afficher le pipeline avec le même identifiant physique (nom du pipeline) dans la région où vous avez créé votre pile.

1. Dans votre référentiel source, validez et envoyez une modification. Vos ressources de détection de modification récupèrent la modification, et votre pipeline démarre.

# Exemple 2 : créer un pipeline Amazon S3 avec AWS CloudFormation
<a name="tutorials-cloudformation-s3"></a>

Cette présentation explique comment utiliser la AWS CloudFormation console pour créer une infrastructure qui inclut un pipeline connecté à un compartiment source Amazon S3. Dans ce didacticiel, vous utiliserez le fichier modèle fourni pour créer votre pile de ressources, qui inclut votre compartiment source, votre magasin d'artefacts, votre pipeline et les ressources de détection des modifications, telles que votre règle et votre suivi Amazon CloudWatch Events. CloudTrail Après avoir créé votre pile de ressources dans AWS CloudFormation, vous pouvez consulter votre pipeline dans la AWS CodePipeline console. Le pipeline est un pipeline en deux étapes avec une étape source Amazon S3 et une étape de CodeDeploy déploiement.

**Prérequis :**

Vous devez disposer des ressources suivantes pour utiliser l' AWS CloudFormation exemple de modèle :
+ Vous devez avoir créé les instances Amazon EC2, sur lesquelles vous avez installé l' CodeDeploy agent. Vous devez avoir créé une CodeDeploy application et un groupe de déploiement. Utilisez Amazon EC2 et les CodeDeploy ressources que vous y avez créées. [Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md)
+ Cliquez sur les liens suivants pour télécharger les exemples de fichiers AWS CloudFormation modèles permettant de créer un pipeline avec une source Amazon S3 : 
  + Téléchargez l'exemple de modèle pour votre pipeline : [YAML](samples/codepipeline-s3-events-yaml.zip) \$1 [JSON](samples/codepipeline-s3-events-json.zip)
  + [Téléchargez le modèle d'exemple pour votre CloudTrail bucket et votre trail : [YAML \$1 JSON](samples/codepipeline-s3-cloudtrail-yaml.zip)](samples/codepipeline-s3-cloudtrail-json.zip)
  + Décompressez les fichiers et placez-les sur votre ordinateur local.
+ Téléchargez l'exemple d'application à partir du [SampleAppfichier \$1Linux.zip](samples/SampleApp_Linux.zip).

  Enregistrez le fichier .zip sur votre ordinateur local. Vous chargez le fichier .zip après la création de la pile.

**Créez votre pipeline dans AWS CloudFormation**

1. Ouvrez la AWS CloudFormation console, puis choisissez **Create Stack**. Choisissez **Avec de nouvelles ressources (standard)**.

1. Dans **Choisir un modèle**, choisissez **Charger un modèle**. Sélectionnez **Choisir un fichier**, puis choisissez le fichier modèle sur votre ordinateur local. Choisissez **Suivant**.

1. Dans **Nom de la pile**, entrez un nom pour votre pipeline. Les paramètres spécifiés par l'exemple de modèle s'affichent. Entrez les paramètres suivants : 

   1. Dans **ApplicationName**, entrez le nom de votre CodeDeploy application. Vous pouvez remplacer le nom par défaut `DemoApplication`.

   1. Dans **BetaFleet**, entrez le nom de votre groupe de CodeDeploy déploiement. Vous pouvez remplacer le nom par défaut `DemoFleet`.

   1. Dans le champ **SourceObjectKey**, saisissez `SampleApp_Linux.zip`. Vous chargez ce fichier dans votre compartiment une fois que le modèle a créé le compartiment et le pipeline.

1. Choisissez **Suivant**. Acceptez les valeurs par défaut de la page suivante, puis choisissez **Suivant**.

1. Dans **Fonctionnalités**, sélectionnez **Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM**, puis choisissez **Create stack**.

1. Une fois la création de la pile terminée, affichez la liste des événements pour rechercher les erreurs éventuelles.

   **Résolution des problèmes**

   L'utilisateur IAM qui crée le pipeline AWS CloudFormation peut avoir besoin d'autorisations supplémentaires pour créer des ressources pour le pipeline. Les autorisations suivantes sont requises dans la politique afin de AWS CloudFormation créer les ressources Amazon CloudWatch Events requises pour le pipeline Amazon S3 :

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. Dans CloudFormation l'onglet **Ressources** de votre pile, consultez les ressources créées pour votre pile. 
**Note**  
Pour afficher le pipeline créé, recherchez la colonne **Logical ID** sous l'onglet **Ressources** correspondant à votre stack in CloudFormation. Notez le nom du pipeline dans la colonne **Physical ID**. Dans CodePipeline, vous pouvez afficher le pipeline avec le même identifiant physique (nom du pipeline) dans la région où vous avez créé votre pile.

   Choisissez le compartiment S3 dont le nom comporte une étiquette `sourcebucket`, par exemple `s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.` Ne choisissez pas le compartiment d'artefacts de pipeline.

   Le compartiment source est vide, car la ressource est nouvellement créée par CloudFormation. Ouvrez la console Amazon S3 et localisez votre `sourcebucket` compartiment. Choisissez **Charger**, puis suivez les instructions pour charger votre fichier .zip `SampleApp_Linux.zip`.
**Note**  
Lorsque Amazon S3 est le fournisseur source de votre pipeline, vous devez télécharger dans votre compartiment tous les fichiers source regroupés sous la forme d'un seul fichier .zip. Sinon, l'action source échoue.

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Sous **Pipelines**, choisissez votre pipeline, puis choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Effectuez les étapes de la procédure suivante pour créer vos ressources AWS CloudTrail .

**Créez vos AWS CloudTrail ressources dans AWS CloudFormation**

1. Ouvrez la AWS CloudFormation console, puis choisissez **Create Stack**.

1. Dans **Choisir un modèle**, choisissez **Télécharger un modèle sur Amazon S3**. Choisissez **Parcourir**, puis sélectionnez le fichier modèle pour les AWS CloudTrail ressources sur votre ordinateur local. Choisissez **Suivant**.

1. Dans **Nom de la pile**, entrez le nom de votre pile de ressources. Les paramètres spécifiés par l'exemple de modèle s'affichent. Entrez les paramètres suivants : 

   1. Dans **SourceObjectKey**, acceptez la valeur par défaut pour le fichier zip de l'exemple d'application.

1. Choisissez **Suivant**. Acceptez les valeurs par défaut de la page suivante, puis choisissez **Suivant**.

1. Dans **Fonctionnalités**, sélectionnez **Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM**, puis choisissez **Créer**.

1. Une fois la création de la pile terminée, affichez la liste des événements pour rechercher les erreurs éventuelles.

   Les autorisations suivantes sont requises dans la politique AWS CloudFormation afin de créer les CloudTrail ressources requises pour le pipeline Amazon S3 :

   ```
   {
        "Effect": "Allow",
        "Action": [
           "cloudtrail:CreateTrail",
           "cloudtrail:DeleteTrail",
           "cloudtrail:StartLogging",
           "cloudtrail:StopLogging",
           "cloudtrail:PutEventSelectors"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

   Sous **Pipelines**, choisissez votre pipeline, puis choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Dans votre compartiment source, validez et envoyez une modification. Vos ressources de détection de modification récupèrent la modification, et votre pipeline démarre.

# Tutoriel : Création d'un pipeline qui utilise des variables issues d'actions de AWS CloudFormation déploiement
<a name="tutorials-cloudformation-action"></a>

Dans ce didacticiel, vous allez utiliser la AWS CodePipeline console pour créer un pipeline avec une action de déploiement. Lorsque le pipeline s'exécute, le modèle crée une pile, ainsi qu'un fichier `outputs`. Les sorties générées par le modèle de pile sont les variables générées par l' AWS CloudFormation action dans CodePipeline.

Dans l'action où vous créez la pile à partir du modèle, vous définissez un espace de noms de variables. Les variables produites par le fichier `outputs` peuvent ensuite être consommées par les actions suivantes. Dans cet exemple, vous créez un ensemble de modifications basé sur la `StackName` variable produite par l' AWS CloudFormation action. Après une approbation manuelle, vous exécutez le jeu de modifications, puis créez une action de suppression de pile qui supprime la pile en fonction de la variable `StackName`.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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.

**Topics**
+ [Conditions préalables : créer un rôle AWS CloudFormation de service et un référentiel CodeCommit](#tutorials-cloudformation-action-prereq)
+ [Étape 1 : Téléchargez, modifiez et chargez l'exemple de AWS CloudFormation modèle](#tutorials-cloudformation-action-upload)
+ [Étape 2 : Créer votre pipeline](#tutorials-cloudformation-action-pipeline)
+ [Étape 3 : ajouter une action CloudFormation de déploiement pour créer l'ensemble de modifications](#tutorials-cloudformation-action-changeset)
+ [Étape 4 : Ajouter une action d'approbation manuelle](#tutorials-cloudformation-action-approval)
+ [Étape 5 : ajouter une action CloudFormation de déploiement pour exécuter l'ensemble de modifications](#tutorials-cloudformation-action-deployment)
+ [Étape 6 : ajouter une action CloudFormation de déploiement pour supprimer la pile](#tutorials-cloudformation-action-delete)

## Conditions préalables : créer un rôle AWS CloudFormation de service et un référentiel CodeCommit
<a name="tutorials-cloudformation-action-prereq"></a>

Vous devez déjà disposer des éléments suivants :
+ Un CodeCommit référentiel. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez créé[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Cet exemple crée une pile Amazon DocumentDB à partir d'un modèle. Vous devez utiliser Gestion des identités et des accès AWS (IAM) pour créer un rôle de AWS CloudFormation service avec les autorisations suivantes pour Amazon DocumentDB.

  ```
  "rds:DescribeDBClusters",
  "rds:CreateDBCluster",
  "rds:DeleteDBCluster",
  "rds:CreateDBInstance"
  ```

## Étape 1 : Téléchargez, modifiez et chargez l'exemple de AWS CloudFormation modèle
<a name="tutorials-cloudformation-action-upload"></a>

Téléchargez l'exemple de fichier AWS CloudFormation modèle et chargez-le dans votre CodeCommit référentiel.

1. Accédez à l'exemple de modèle pour votre région. Par exemple, utilisez le tableau sur [https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack](https://docs.aws.amazon.com/documentdb/latest/developerguide/quick_start_cfn.html#quick_start_cfn-launch_stack) pour choisir la région et télécharger le modèle. Téléchargez le modèle pour un cluster Amazon DocumentDB. Le nom du fichier est `documentdb_full_stack.yaml`.

1. Décompressez le fichier `documentdb_full_stack.yaml` et ouvrez-le dans un éditeur de texte. Effectuez les modifications suivantes.

   1. Pour cet exemple, ajoutez le paramètre `Purpose:` suivant à votre section `Parameters` du modèle.

      ```
        Purpose:
          Type: String
          Default: testing
          AllowedValues:
            - testing
            - production
          Description: The purpose of this instance.
      ```

   1. Pour cet exemple, ajoutez la sortie `StackName` suivante à votre section `Outputs:` du modèle.

      ```
        StackName:
          Value: !Ref AWS::StackName
      ```

1. Téléchargez le fichier modèle dans votre AWS CodeCommit référentiel. Vous devez charger le fichier de modèle décompressé et modifié dans le répertoire racine de votre référentiel. 

   Pour télécharger vos fichiers à l' CodeCommit aide de la console, procédez comme suit : 

   1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des **référentiels**.

   1. Choisissez **Ajouter un fichier**, puis choisissez **Charger le fichier**. 

   1. Sélectionnez **Choose file (Choisir un fichier)**, puis naviguez vers votre fichier. Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. Choisissez **Valider les modifications**.

   Votre fichier doit se présenter comme suit au niveau racine de votre référentiel :

   ```
   documentdb_full_stack.yaml
   ```

## Étape 2 : Créer votre pipeline
<a name="tutorials-cloudformation-action-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une CodeCommit action dans laquelle l'artefact source est votre fichier modèle.
+ Une phase de déploiement avec une action CloudFormation de déploiement.

Chaque action des étapes source et de déploiement créées par l'assistant se voit attribuer un espace de noms variable, `SourceVariables` et `DeployVariables`, respectivement. Comme un espace de noms est attribué aux actions, les variables configurées dans cet exemple sont disponibles pour les actions en aval. Pour de plus amples informations, veuillez consulter [Référence aux variables](reference-variables.md).

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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**MyCFNDeployPipeline**.

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 du service**, sélectionnez l'une des options suivantes :
   + Choisissez **Nouveau rôle de service** pour autoriser CodePipeline la création d'un rôle de service dans IAM.
   + Choisissez **Existing service role (Rôle de service existant)**. Dans **Role name (Nom du rôle)**, choisissez votre rôle de service à partir de la liste.

1. Dans **Magasin d'artefacts** : 

   1. Choisissez l'**emplacement par défaut** pour utiliser le magasin d'artefacts par défaut, tel que le compartiment d'artefacts Amazon S3 désigné par défaut, pour votre pipeline dans la région que vous avez sélectionnée pour votre pipeline.

   1. Choisissez un **emplacement personnalisé** si vous possédez déjà un magasin d'artefacts, tel qu'un bucket d'artefacts Amazon S3, dans la même région que votre pipeline.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline. Lorsque vous créez ou modifiez un pipeline, vous devez disposer d'un compartiment d'artefacts dans la région du pipeline et d'un compartiment d'artefacts par AWS région dans laquelle vous exécutez une action.  
Pour plus d’informations, consultez [Artefacts d'entrée et de sortie](welcome-introducing-artifacts.md) et [CodePipeline référence de structure de pipeline](reference-pipeline-structure.md).

   Choisissez **Suivant**.

1. À **l'étape 3 : Ajouter une étape source** : 

   1. Dans **Fournisseur de source**, choisissez **AWS CodeCommit**.

   1. Dans **Nom du référentiel**, choisissez le nom du CodeCommit référentiel dans lequel vous l'avez créé[Étape 1 : Création d'un CodeCommit référentiel](tutorials-simple-codecommit.md#codecommit-create-repository).

   1. Dans **Nom de branche**, choisissez le nom de la branche qui contient votre dernière mise à jour du code.

   Après avoir sélectionné le nom du référentiel et la branche, la règle Amazon CloudWatch Events à créer pour ce pipeline s'affiche. 

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Nom de l'action**, choisissez **Déployer**. Dans **Fournisseur de déploiement**, choisissez **CloudFormation**.

   1. Dans **Mode d'action**, choisissez **Créer ou mettre à jour une pile**.

   1. Dans **Nom de la pile**, attribuez un nom à la pile. Il s'agit du nom de la pile que le modèle va créer.

   1. Dans **Nom du fichier de sortie**, entrez un nom pour le fichier de sorties, par exemple **outputs**. Il s'agit du nom du fichier qui sera créé par l'action après la création de la pile.

   1. Développez **Avancé**. Sous **Remplacements de paramètres**, entrez les remplacements de modèles en tant que paires clé-valeur. Par exemple, ce modèle nécessite les remplacements suivants.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "testing"}
      ```

      Si vous ne saisissez pas de valeurs de remplacement, le modèle crée une pile avec les valeurs par défaut.

   1. Choisissez **Suivant**.

   1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Vous devriez voir un diagramme illustrant les étapes du pipeline. Autorisez votre pipeline s'exécuter. Votre pipeline en deux étapes est terminé et prêt pour les étapes supplémentaires à ajouter.

## Étape 3 : ajouter une action CloudFormation de déploiement pour créer l'ensemble de modifications
<a name="tutorials-cloudformation-action-changeset"></a>

Créez une action suivante dans votre pipeline qui permettra de CloudFormation créer l'ensemble de modifications avant l'action d'approbation manuelle.



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

   Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez de modifier le pipeline ou continuez à l'afficher en mode **Edition**.

1. Choisissez de modifier l'étape de **déploiement**.

1. Ajoutez une action de déploiement qui créera un ensemble de modifications pour la pile créée lors de l'action précédente. Vous ajoutez cette action après l'action existante dans la scène.

   1. Dans **Nom de l'action**, entrez **Change\$1Set**. Dans **Action provider**, sélectionnez **AWS CloudFormation **.

   1. Dans **Artefact d'entrée**, sélectionnez **SourceArtifact**.

   1. Dans **Mode d'action**, choisissez **Créer ou remplacer un jeu de modifications**.

   1. Dans **Nom de la pile**, entrez la syntaxe de la variable comme indiqué. Il s'agit du nom de la pile pour laquelle le jeu de modifications est créé, où l'espace de noms par défaut `DeployVariables` est affecté à l'action.

      ```
      #{DeployVariables.StackName}
      ```

   1. Dans **Nom du jeu de modifications**, entrez le nom du jeu de modifications.

      ```
      my-changeset
      ```

   1. Dans **Remplacements de paramètres**, modifiez le paramètre `Purpose` de `testing` en `production`.

      ```
      {
      "DBClusterName": "MyDBCluster",
      "DBInstanceName": "MyDBInstance",
      "MasterUser": "UserName",
      "MasterPassword": "Password",
      "DBInstanceClass": "db.r4.large",
      "Purpose": "production"}
      ```

   1. Choisissez **Terminé** pour enregistrer l'action.

## Étape 4 : Ajouter une action d'approbation manuelle
<a name="tutorials-cloudformation-action-approval"></a>

Créez une action d'approbation manuelle dans votre pipeline.



1. Choisissez de modifier le pipeline ou continuez à l'afficher en mode **Edition**.

1. Choisissez de modifier l'étape de **déploiement**.

1. Ajoutez une action d'approbation manuelle après l'action de déploiement qui crée le jeu de modifications. Cette action vous permet de vérifier la modification de ressource créée définie CloudFormation avant que le pipeline n'exécute l'ensemble de modifications.

## Étape 5 : ajouter une action CloudFormation de déploiement pour exécuter l'ensemble de modifications
<a name="tutorials-cloudformation-action-deployment"></a>

Créez une action suivante dans votre pipeline qui permet d' CloudFormation exécuter la modification définie après l'action d'approbation manuelle.



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

   Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez de modifier le pipeline ou continuez à l'afficher en mode **Edition**.

1. Choisissez de modifier l'étape de **déploiement**.

1. Ajoutez une action de déploiement qui exécutera l'ensemble de modifications approuvé lors de l'action manuelle précédente :

   1. Dans **Nom de l'action**, entrez **Execute\$1Change\$1Set**. Dans **Action provider**, sélectionnez **AWS CloudFormation**.

   1. Dans **Artefact d'entrée**, sélectionnez **SourceArtifact**.

   1. Dans **Action mode (Mode d'action)**, choisissez **Execute a change set (Exécuter un jeu de modifications)**.

   1. Dans **Nom de la pile**, entrez la syntaxe de la variable comme indiqué. Il s'agit du nom de la pile pour laquelle le jeu de modifications est créé.

      ```
      #{DeployVariables.StackName}
      ```

   1. Dans **Nom du jeu de modifications**, entrez le nom du jeu de modifications que vous avez créé lors de l'action précédente.

      ```
      my-changeset
      ```

   1. Choisissez **Terminé** pour enregistrer l'action.

   1. Continuez l'exécution du pipeline.

## Étape 6 : ajouter une action CloudFormation de déploiement pour supprimer la pile
<a name="tutorials-cloudformation-action-delete"></a>

Créez une action finale dans votre pipeline qui permet d' CloudFormation obtenir le nom de la pile à partir de la variable du fichier de sortie et de supprimer la pile.



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

   Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez de modifier le pipeline.

1. Choisissez de modifier l'étape de **déploiement**.

1. Ajoutez une action de déploiement qui supprimera la pile :

   1. Dans **Nom de l'action**, sélectionnez **DeleteStack**. Dans **Fournisseur de déploiement**, choisissez **CloudFormation**.

   1. Dans **Mode d'action**, choisissez **Supprimer une pile**.

   1. Dans **Nom de la pile**, entrez la syntaxe de la variable comme indiqué. Il s'agit du nom de la pile que l'action va supprimer.

   1. Choisissez **Terminé** pour enregistrer l'action.

   1. Choisissez **Save (Enregistrer)** pour enregistrer la stratégie.

   Le pipeline s'exécute lorsqu'il est enregistré.

# Tutoriel : Déploiement standard d'Amazon ECS avec CodePipeline
<a name="ecs-cd-pipeline"></a>

Ce didacticiel vous aide à créer un pipeline de déploiement end-to-end continu (CD) complet avec Amazon ECS with CodePipeline.

**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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Note**  
Ce didacticiel concerne l'action de déploiement standard d'Amazon ECS pour CodePipeline. Pour un didacticiel qui utilise l'action de déploiement d'Amazon ECS pour 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)

**Note**  
Ce didacticiel concerne l'action de déploiement standard d'Amazon ECS CodePipeline avec une action source. Pour un didacticiel qui utilise l'action de ECSstandard déploiement Amazon en même temps que l'action de ECRBuild AndPublish création CodePipeline pour transférer votre image, consultez[Tutoriel : créer et envoyer une image Docker vers Amazon ECR avec CodePipeline (type V2)](tutorials-ecr-build-publish.md).

## Conditions préalables
<a name="ecs-cd-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 CodeCommit) avec votre Dockerfile et la source de votre application. Pour plus d'informations, voir [Création d'un CodeCommit référentiel](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html) dans le *guide de AWS CodeCommit l'utilisateur*.
+ Un référentiel d'images Docker (ce didacticiel utilise Amazon ECR) contenant une image que vous avez créée à partir de votre Dockerfile et de la source de l'application. 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*.
+ Une définition de tâche Amazon ECS qui fait référence à l'image Docker hébergée dans votre référentiel d'images. Pour plus d'informations, consultez la section [Création d'une définition de tâche](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.
**Important**  
L'action de déploiement standard d'Amazon ECS pour CodePipeline crée sa propre révision de la définition de tâche en fonction de la révision utilisée par le service Amazon ECS. Si vous créez de nouvelles révisions pour la définition de tâche sans mettre à jour le service Amazon ECS, l'action de déploiement ignorera ces révisions.

  Vous trouverez ci-dessous un exemple de définition de tâche utilisé pour ce didacticiel. La valeur que vous utilisez pour `name` et `family` qui sera utilisée à l'étape suivante pour votre fichier de spécifications de construction.

  ```
  {
    "ipcMode": null,
    "executionRoleArn": "role_ARN",
    "containerDefinitions": [
      {
        "dnsSearchDomains": null,
        "environmentFiles": null,
        "logConfiguration": {
          "logDriver": "awslogs",
          "secretOptions": null,
          "options": {
            "awslogs-group": "/ecs/hello-world",
            "awslogs-region": "us-west-2",
            "awslogs-stream-prefix": "ecs"
          }
        },
        "entryPoint": null,
        "portMappings": [
          {
            "hostPort": 80,
            "protocol": "tcp",
            "containerPort": 80
          }
        ],
        "command": null,
        "linuxParameters": null,
        "cpu": 0,
        "environment": [],
        "resourceRequirements": null,
        "ulimits": null,
        "dnsServers": null,
        "mountPoints": [],
        "workingDirectory": null,
        "secrets": null,
        "dockerSecurityOptions": null,
        "memory": null,
        "memoryReservation": 128,
        "volumesFrom": [],
        "stopTimeout": null,
        "image": "image_name",
        "startTimeout": null,
        "firelensConfiguration": null,
        "dependsOn": null,
        "disableNetworking": null,
        "interactive": null,
        "healthCheck": null,
        "essential": true,
        "links": null,
        "hostname": null,
        "extraHosts": null,
        "pseudoTerminal": null,
        "user": null,
        "readonlyRootFilesystem": null,
        "dockerLabels": null,
        "systemControls": null,
        "privileged": null,
        "name": "hello-world"
      }
    ],
    "placementConstraints": [],
    "memory": "2048",
    "taskRoleArn": null,
    "compatibilities": [
      "EC2",
      "FARGATE"
    ],
    "taskDefinitionArn": "ARN",
    "family": "hello-world",
    "requiresAttributes": [],
    "pidMode": null,
    "requiresCompatibilities": [
      "FARGATE"
    ],
    "networkMode": "awsvpc",
    "cpu": "1024",
    "revision": 1,
    "status": "ACTIVE",
    "inferenceAccelerators": null,
    "proxyConfiguration": null,
    "volumes": []
  }
  ```
+ Un cluster Amazon ECS qui exécute un service utilisant la définition de tâche que vous avez mentionnée précédemment. Pour plus d'informations, consultez les sections [Création d'un cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html) et [Création d'un service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.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 : Ajout d'un fichier de spécification de génération dans votre référentiel source
<a name="cd-buildspec"></a>

Ce didacticiel permet CodeBuild de créer votre image Docker et de l'envoyer vers Amazon ECR. Ajoutez un fichier `buildspec.yml` à votre référentiel de code source pour indiquer à CodeBuild comment effectuer cette opération. L'exemple de spécification de génération ci-dessous prévoit les opérations suivantes :
+ Phase antérieure à la génération :
  + Connectez-vous à Amazon ECR.
  + Définition de l'URI du référentiel en fonction de votre image ECR et ajout d'une balise d'image avec les sept premiers caractères de l'ID de validation Git de la source.
+ Phase de génération :
  + Création de l'image Docker et balisage de l'image avec `latest` et l'ID de validation Git.
+ Phase postérieure à la génération :
  + Transmission de l'image à votre référentiel ECR avec les deux balises.
  + Écrivez un fichier appelé `imagedefinitions.json` dans la racine de compilation contenant le nom du conteneur de votre service Amazon ECS, ainsi que l'image et le tag. La phase de déploiement de votre pipeline de déploiement continu s'appuie sur ces informations pour créer une révision de la définition de tâche de votre service avant de mettre à jour ce dernier afin qu'il utilise la nouvelle définition de tâche. Le fichier `imagedefinitions.json` est obligatoire pour l'exécutant de tâches ECS.

Collez cet exemple de texte pour créer votre `buildspec.yml` fichier et remplacez les valeurs de votre image et de la définition de la tâche. Ce texte utilise l'exemple d'ID de compte 111122223333.

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws --version
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com
      - REPOSITORY_URI=012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"hello-world","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
    files: imagedefinitions.json
```

La spécification de construction a été écrite pour l'exemple de définition de tâche fourni dans[Conditions préalables](#ecs-cd-prereqs), utilisé par le service Amazon ECS pour ce didacticiel. La valeur `REPOSITORY_URI` correspond au référentiel `image` (sans aucune balise d'image), tandis que la valeur `hello-world` située vers la fin du fichier correspond au nom de conteneur dans la définition de tâche du service. 

**Pour ajouter un fichier `buildspec.yml` à votre référentiel source**

1. Ouvrez un éditeur de texte, puis copiez et collez la spécification de génération précédente dans un nouveau fichier.

1. Remplacez la `REPOSITORY_URI` valeur (`012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world`) par l'URI de votre référentiel Amazon ECR (sans aucune balise d'image) pour votre image Docker. Remplacez `hello-world` par le nom de conteneur figurant dans la définition de tâche de votre service qui fait référence à votre image Docker.

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

   1. Ajoutez le fichier.

      ```
      git add .
      ```

   1. Validez la modification.

      ```
      git commit -m "Adding build specification."
      ```

   1. Transmettez la validation.

      ```
      git push
      ```

## Étape 2 : Création de votre pipeline de déploiement continu
<a name="pipeline-wizard"></a>

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

**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 **Welcome (Bienvenue)**, choisissez **Créer un pipeline**. 

   Si c'est la première fois que vous l'utilisez CodePipeline, une page d'introduction apparaît à la place du message de **bienvenue**. Choisir **Get Started Now** (Démarrer maintenant).

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**, tapez le nom de votre pipeline. Pour ce didacticiel, le nom du pipeline est **hello-world**.

1. Dans **Type de pipeline**, conservez la sélection par défaut à **V2**. Les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md). Choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter une étape source**, pour **Source provider**, sélectionnez ** AWS CodeCommit**.

   1. Pour **Nom du référentiel**, choisissez le nom du référentiel CodeCommit à utiliser comme emplacement source pour votre pipeline.

   1. Pour **Nom de branche**, choisissez la branche à utiliser, puis **Étape suivante**.

1. Sur la page **Étape 4 : Ajouter une étape de construction**, pour le **fournisseur de construction **AWS CodeBuild****, sélectionnez, puis sélectionnez **Créer un projet**.

   1. Dans **Nom du projet**, attribuez un nom unique à votre projet de génération. Pour ce didacticiel, le nom de projet est **hello-world**.

   1. Pour **Image d'environnement**, choisissez **Managed image (Image gérée)**.

   1. Pour **Operating system (Système d'exploitation)**, choisissez **Amazon Linux 2**.

   1. Pour **Runtime(s) (Exécution(s))**, sélectionnez **Standard**.

   1. Pour **Image**, choisissez **`aws/codebuild/amazonlinux2-x86_64-standard:3.0`**.

   1. Pour la **Image version (Version d'image)** et le **Environment type (Type d'environnement)**, utilisez les valeurs par défaut.

   1. Sélectionnez **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Activer cet indicateur si vous souhaitez créer des images Docker ou que vos builds reçoivent des privilèges élevés)**.

   1. Désélectionnez les **CloudWatch journaux**. Il se peut que vous deviez développer le **mode Avancé**.

   1. Choisissez **Continuer vers CodePipeline**.

   1. Choisissez **Suivant**.
**Note**  
L'assistant crée un rôle CodeBuild de service pour votre projet de build, appelé **codebuild- *build-project-name* -service-role**. Notez ce nom de rôle lorsque vous y ajouterez des autorisations Amazon ECR ultérieurement.

1. Sur la page **Étape 5 : Ajouter une étape de déploiement**, dans le **champ Fournisseur de déploiement**, sélectionnez **Amazon ECS**.

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

   1. Pour **Nom du service**, choisissez le service à mettre à jour, puis **Étape suivante**. Pour ce didacticiel, le nom de service est **hello-world**.

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.
**Note**  
Maintenant que le pipeline est créé, il essaie d'exécuter les différentes phases. Cependant, le CodeBuild rôle par défaut créé par l'assistant n'est pas autorisé à exécuter toutes les commandes contenues dans le `buildspec.yml` fichier, de sorte que la phase de génération échoue. Les autorisations nécessaires à la phase de génération sont ajoutées dans la section suivante.

## Étape 3 : ajouter des autorisations Amazon ECR au rôle CodeBuild
<a name="code-build-perms"></a>

L' CodePipeline assistant a créé un rôle IAM pour le projet de construction, appelé CodeBuild **codebuild- *build-project-name* -service-role**. Pour ce didacticiel, le nom est **codebuild-hello-world-service-role**. Étant donné que le `buildspec.yml` fichier appelle les opérations de l'API Amazon ECR, le rôle doit disposer d'une politique autorisant les autorisations nécessaires pour effectuer ces appels Amazon ECR. La procédure suivante vous aide à attacher les autorisations adéquates au rôle.

**Pour ajouter des autorisations Amazon ECR au rôle CodeBuild**

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

1. Dans le volet de navigation de gauche, choisissez **Rôles**.

1. Dans le champ de recherche, tapez **codebuild-** et choisissez le rôle créé par l' CodePipeline assistant. Pour ce didacticiel, le nom du rôle est **codebuild-hello-world-service-role**.

1. Sur la page **Summary (Récapitulatif)**, choisissez **Attach policies (Attacher les stratégies)**.

1. Cochez la case située à gauche de la EC2 ContainerRegistryPowerUser politique **Amazon**, puis choisissez **Joindre la politique**.

## Étape 4 : Test de votre pipeline
<a name="commit-change"></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 service Amazon ECS exécute l'image Docker créée à partir de votre modification de code.

# Tutoriel : Création d'un pipeline avec une source Amazon ECR et déploiement ECS-to-CodeDeploy
<a name="tutorials-ecs-ecr-codedeploy"></a>

Dans ce didacticiel, vous allez configurer un pipeline AWS CodePipeline qui déploie des applications de conteneur à l'aide d'un blue/green déploiement prenant en charge les images Docker. Dans un déploiement bleu/vert, vous pouvez lancer la nouvelle version de votre application avec l'ancienne version, et tester la nouvelle version avant de rediriger le trafic. Vous pouvez également surveiller le processus de déploiement et revenir rapidement en arrière en cas de problème.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Note**  
Ce didacticiel est destiné à l'action de déploiement d'Amazon ECS vers le CodeDeploy bleu/vert pour. CodePipeline Pour un didacticiel utilisant l'action de déploiement standard d'Amazon ECS dans CodePipeline, consultez[Tutoriel : Déploiement standard d'Amazon ECS avec CodePipeline](ecs-cd-pipeline.md).

Le pipeline terminé détecte les modifications apportées à votre image, qui est stockée dans un référentiel d'images tel qu'Amazon ECR, et utilisée CodeDeploy pour acheminer et déployer le trafic vers un cluster Amazon ECS et un équilibreur de charge. CodeDeploy utilise un écouteur pour rediriger le trafic vers le port du conteneur mis à jour spécifié dans le AppSpec fichier. Pour plus d'informations sur la manière dont l'équilibreur de charge, l'écouteur de production, les groupes cibles et votre application Amazon ECS sont utilisés dans le cadre d'un blue/green déploiement, consultez [Tutoriel : Déployer un service Amazon ECS](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment.html).

Le pipeline est également configuré pour utiliser un emplacement source CodeCommit, tel que l'endroit où votre définition de tâche Amazon ECS est stockée. Dans ce didacticiel, vous allez configurer chacune de ces AWS ressources, puis créer votre pipeline avec des étapes contenant des actions pour chaque ressource.

Votre pipeline de livraison continue créera et déploiera automatiquement des images de conteneur chaque fois que le code source est modifié ou qu'une nouvelle image de base est téléchargée sur Amazon ECR.

Ce flux utilise les artefacts suivants :
+ Un fichier image Docker qui spécifie le nom du conteneur et l'URI du référentiel de votre référentiel d'images Amazon ECR.
+ Définition de tâche Amazon ECS répertoriant le nom de votre image Docker, le nom du conteneur, le nom du service Amazon ECS et la configuration de votre équilibreur de charge.
+  CodeDeploy AppSpec Fichier qui spécifie le nom du fichier de définition de tâche Amazon ECS, le nom du conteneur de l'application mise à jour et le port du conteneur où le trafic de production est CodeDeploy redirigé. Il peut également spécifier la configuration du réseau et les fonctions Lambda facultatifs que vous pouvez exécuter durant les hooks d'événement de cycle de vie de déploiement.

**Note**  
Lorsque vous validez une modification dans votre référentiel d'images Amazon ECR, l'action de la source du pipeline crée un `imageDetail.json` fichier pour cette validation. Pour de plus amples informations concernant le fichier `imageDetail.json`, veuillez consulter [Fichier ImageDetail.json pour les actions de déploiement d'Amazon ECS blue/green](file-reference.md#file-reference-ecs-bluegreen).

Lorsque vous créez ou modifiez votre pipeline et mettez à jour ou spécifiez des artefacts source pour votre étape de déploiement, assurez-vous pour qu'il pointe vers la source des artefacts avec le nom et la version les plus récents que vous souhaitez utiliser. Une fois que vous avez configuré votre pipeline, au fur et à mesure que vous apportez des modifications à votre image ou à une définition de tâche, il se peut que vous ayez besoin de mettre à jour vos fichiers d'artefact source dans vos référentiels, puis de modifier l'étape de déploiement dans votre pipeline.

**Topics**
+ [Conditions préalables](#tutorials-ecs-ecr-codedeploy-prereq)
+ [Étape 1 : créer une image et la transférer vers un référentiel Amazon ECR](#tutorials-ecs-ecr-codedeploy-imagerepository)
+ [Étape 2 : Création de fichiers AppSpec source et de définition de tâches, puis transfert vers un CodeCommit référentiel](#tutorials-ecs-ecr-codedeploy-taskdefinition)
+ [Étape 3 : Créer votre équilibreur de charge d'application et vos groupes cibles](#tutorials-ecs-ecr-codedeploy-loadbal)
+ [Étape 4 : créer votre cluster et votre service Amazon ECS](#tutorials-ecs-ecr-codedeploy-cluster)
+ [Étape 5 : Création de votre CodeDeploy application et de votre groupe de déploiement (plateforme de calcul ECS)](#tutorials-ecs-ecr-codedeploy-deployment)
+ [Étape 6 : Créer le pipeline](#tutorials-ecs-ecr-codedeploy-pipeline)
+ [Étape 7 : Modifier le pipeline et vérifier le déploiement](#tutorials-ecs-ecr-codedeploy-update)

## Conditions préalables
<a name="tutorials-ecs-ecr-codedeploy-prereq"></a>

Vous devez avoir déjà créé les ressources suivantes :
+ Un CodeCommit référentiel. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez créé[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Lancez une instance Linux Amazon EC2 et installez Docker pour créer une image, comme indiqué dans ce didacticiel. Si vous avez déjà une image que vous souhaitez utiliser, vous pouvez ignorer cette condition préalable.

## Étape 1 : créer une image et la transférer vers un référentiel Amazon ECR
<a name="tutorials-ecs-ecr-codedeploy-imagerepository"></a>

Dans cette section, vous utilisez Docker pour créer une image, puis vous l'utilisez AWS CLI pour créer un référentiel Amazon ECR et transférer l'image vers le référentiel.

**Note**  
Si vous avez déjà une image que vous souhaitez utiliser, vous pouvez ignorer cette étape.

**Pour créer une image**

1. Connectez-vous à votre instance Linux dans laquelle Docker est installé.

   Retirez une image pour `nginx`. Cette commande fournit l'`nginx:latest`image :

   ```
   docker pull nginx
   ```

1. Exécutez **docker images**. Vous devez voir l'image dans la liste.

   ```
   docker images
   ```

**Pour créer un référentiel Amazon ECR et publier votre image**

1. Créez un référentiel Amazon ECR pour stocker votre image . Notez l'`repositoryUri` dans la sortie.

   ```
   aws ecr create-repository --repository-name nginx
   ```

   Sortie :

   ```
   {
       "repository": {
           "registryId": "aws_account_id",
           "repositoryName": "nginx",
           "repositoryArn": "arn:aws:ecr:us-east-1:aws_account_id:repository/nginx",
           "createdAt": 1505337806.0,
           "repositoryUri": "aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx"
       }
   }
   ```

1. Balisez l'image avec la valeur `repositoryUri` de l'étape précédente.

   ```
   docker tag nginx:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
   ```

1. Exécutez la **aws ecr get-login-password** commande, comme indiqué dans cet exemple pour la `us-west-2` région et l'ID de compte 111122223333.

   ```
   aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
   ```

1. Transférez l'image vers Amazon ECR à l'aide `repositoryUri` de l'étape précédente.

   ```
   docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
   ```

## Étape 2 : Création de fichiers AppSpec source et de définition de tâches, puis transfert vers un CodeCommit référentiel
<a name="tutorials-ecs-ecr-codedeploy-taskdefinition"></a>

Dans cette section, vous allez créer un fichier JSON de définition de tâche et l'enregistrer auprès d'Amazon ECS. Vous créez ensuite un AppSpec fichier pour votre client Git CodeDeploy et vous l'utilisez pour transférer les fichiers vers votre CodeCommit dépôt.

**Pour créer une définition de tâche pour votre image**

1. Créez un fichier nommé `taskdef.json` avec les contenus suivants. Pour `image`, saisissez votre nom d'image, par exemple nginx. Cette valeur est mise à jour lorsque votre pipeline est exécuté.
**Note**  
Assurez-vous que le rôle d'exécution spécifié dans la définition de tâche contient la stratégie `AmazonECSTaskExecutionRolePolicy`. Pour plus d'informations, consultez [Amazon ECS Task Execution IAM Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans le *manuel du développeur Amazon ECS*.

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "name": "sample-website",
               "image": "nginx",
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "networkMode": "awsvpc",
       "cpu": "256",
       "memory": "512",
       "family": "ecs-demo"
   }
   ```

1. Enregistrez votre définition de tâche dans le fichier `taskdef.json`.

   ```
   aws ecs register-task-definition --cli-input-json file://taskdef.json
   ```

1. Une fois la définition de tâche enregistrée, modifiez votre fichier afin de supprimer le nom et d'inclure le texte d'espace réservé `<IMAGE1_NAME>` dans le champ de l'image.

   ```
   {
       "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "name": "sample-website",
               "image": "<IMAGE1_NAME>",
               "essential": true,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ]
           }
       ],
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "networkMode": "awsvpc",
       "cpu": "256",
       "memory": "512",
       "family": "ecs-demo"
   }
   ```

**Pour créer un AppSpec fichier**
+ Le AppSpec fichier est utilisé pour les CodeDeploy déploiements. Le fichier, qui inclut des champs facultatifs, utilise ce format :

  ```
  version: 0.0
  Resources:
    - TargetService:
        Type: AWS::ECS::Service
        Properties:
          TaskDefinition: "task-definition-ARN"
          LoadBalancerInfo:
            ContainerName: "container-name"
            ContainerPort: container-port-number
  # Optional properties
          PlatformVersion: "LATEST"
          NetworkConfiguration:
              AwsvpcConfiguration:
                Subnets: ["subnet-name-1", "subnet-name-2"]
                SecurityGroups: ["security-group"]
                AssignPublicIp: "ENABLED"
  Hooks:
  - BeforeInstall: "BeforeInstallHookFunctionName"
  - AfterInstall: "AfterInstallHookFunctionName"
  - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName"
  - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName"
  - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"
  ```

  Pour plus d'informations sur le AppSpec fichier, y compris des exemples, consultez la section [Référence CodeDeploy AppSpec du fichier](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html).

  Créez un fichier nommé `appspec.yaml` avec les contenus suivants. Pour `TaskDefinition`, ne modifiez pas le texte d'espace réservé `<TASK_DEFINITION>`. Cette valeur est mise à jour lorsque votre pipeline est exécuté.

  ```
  version: 0.0
  Resources:
    - TargetService:
        Type: AWS::ECS::Service
        Properties:
          TaskDefinition: <TASK_DEFINITION>
          LoadBalancerInfo:
            ContainerName: "sample-website"
            ContainerPort: 80
  ```

**Pour transférer des fichiers vers votre CodeCommit dépôt**

1. Envoyez ou téléchargez les fichiers dans votre CodeCommit dépôt. Ces fichiers constituent l'artefact source créé par l'assistant **Create Pipeline (Création de pipeline)** pour votre action de déploiement dans CodePipeline. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

   ```
   /tmp
     |my-demo-repo
       |-- appspec.yaml
       |-- taskdef.json
   ```

1. Choisissez la méthode que vous souhaitez utiliser pour charger vos fichiers :

   1. Pour utiliser la ligne de commande Git à partir d'un référentiel cloné sur votre ordinateur local :

      1. Modifiez les répertoires vers votre référentiel local :

         ```
         (For Linux, macOS, or Unix) cd /tmp/my-demo-repo
         (For Windows) cd c:\temp\my-demo-repo
         ```

      1. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

         ```
         git add -A
         ```

      1. Exécutez la commande suivante pour valider les fichiers avec un message de validation :

         ```
         git commit -m "Added task definition files"
         ```

      1. Exécutez la commande suivante pour transférer les fichiers de votre dépôt local vers votre CodeCommit dépôt :

         ```
         git push
         ```

   1. Pour télécharger vos fichiers à l' CodeCommit aide de la console, procédez comme suit :

      1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des **référentiels**.

      1. Choisissez **Ajouter un fichier**, puis choisissez **Charger le fichier**.

      1. Sélectionnez **Choisir un fichier**, puis recherchez votre fichier. Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. Choisissez **Valider les modifications**.

      1. Répétez cette étape pour chaque fichier que vous souhaitez charger.

## Étape 3 : Créer votre équilibreur de charge d'application et vos groupes cibles
<a name="tutorials-ecs-ecr-codedeploy-loadbal"></a>

Dans cette section, vous allez créer un Amazon EC2 Application Load Balancer. Vous utiliserez les noms de sous-réseaux et les valeurs de groupe cible que vous créerez avec votre équilibreur de charge ultérieurement, lorsque vous créerez votre service Amazon ECS. Vous pouvez créer un équilibreur de charge d'application ou un Network Load Balancer. L'équilibreur de charge doit utiliser un VPC avec deux sous-réseaux publics dans différentes zones de disponibilité. Au cours de ces étapes, vous devez confirmer votre VPC par défaut, créer un équilibreur de charge, puis créer deux groupes cible pour votre équilibreur de charge. Pour plus d'informations, consultez [Groupes cibles pour vos équilibreurs de charge du réseau](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html).

**Pour vérifier votre VPC par défaut et les sous-réseaux publics**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Vérifiez le VPC par défaut à utiliser. Dans le volet de navigation, sélectionnez **Votre VPCs**. Notez que le VPC affiche **Oui** dans la colonne **VPC par défaut**. Il s'agit du VPC par défaut. Il contient des sous-réseaux par défaut que vous pouvez sélectionner.

1. Choisissez **Sous-réseaux**. Choisissez deux sous-réseaux qui contiennent **Oui** dans la colonne **Sous-réseau par défaut**.
**Note**  
Prenez note de votre sous-réseau IDs. Vous en aurez besoin ultérieurement dans ce didacticiel.

1. Choisissez les sous-réseaux, puis choisissez l'onglet **Description**. Vérifiez que les sous-réseaux que vous souhaitez utiliser sont dans des zones de disponibilité différentes.

1. Choisissez les sous-réseaux, puis choisissez l'onglet **Table de routage**. Pour vérifier que chaque sous-réseau que vous souhaitez utiliser est un sous-réseau public, vérifiez qu'une ligne de passerelle est incluse dans la table de routage.

**Pour créer un Amazon EC2 Application Load Balancer**

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le volet de navigation, choisissez **Load Balancers**.

1. Sélectionnez **Create Load Balancer** (Créer un équilibreur de charge).

1. Choisissez **Équilibreur de charge d'application**, puis choisissez **Créer**.

1. Dans **Nom**, entrez le nom de votre équilibreur de charge.

1. Dans **Méthode**, choisissez **Accessible sur Internet**.

1. Dans **Type d'adresse IP**, choisissez **ipv4**.

1. Configurez deux ports d'écoute pour votre équilibreur de charge :

   1. Sous **Protocole d'écoute de l'équilibreur de charge**, choisissez **HTTP**. Sous **Port de l'équilibreur de charge**, entrez **80**.

   1. Choisissez **Add listener** (Ajouter un écouteur).

   1. Sous **Protocole de l'équilibreur de charge** pour le deuxième écouteur, choisissez **HTTP**. Sous **Port de l'équilibreur de charge**, entrez **8080**.

1. Sous **Zones de disponibilité**, dans **VPC**, choisissez le VPC par défaut. Ensuite, choisissez deux sous-réseaux par défaut que vous souhaitez utiliser.

1. Choisissez **Next: Configure Security Settings** (Suivant : Configurer les paramètres de sécurité).

1. Choisissez **Next: Configure Security Groups** (Suivant : Configurer des groupes de sécurité).

1. Choisissez **Sélectionner un groupe de sécurité existant** et prenez note de l'ID du groupe de sécurité.

1. Choisissez **Next: Configure Routing** (Suivant :Configurer le routage).

1. Dans **Groupe cible**, choisissez **Nouveau groupe cible** et configurez votre premier groupe cible :

   1. Dans **Nom**, entrez un nom de groupe cible (par exemple, **target-group-1**).

   1. Dans **Type cible**, choisissez **IP**.

   1. Dans **Protocole**, choisissez **HTTP**. Dans **Port**, entrez **80**.

   1. Choisissez **Next: Register Targets** (Suivant : Enregistrer des cibles).

1. Choisissez **Suivant : Vérification**, puis **Créer**.

**Pour créer un deuxième groupe cible pour votre équilibreur de charge**

1. Une fois votre équilibreur de charge configuré, ouvrez la console Amazon EC2. Dans le volet de navigation, sélectionnez **Groupes cibles**.

1. Sélectionnez **Créer un groupe cible**.

1. Dans **Nom**, entrez un nom de groupe cible (par exemple, **target-group-2**).

1. Dans **Type cible**, choisissez **IP**.

1. Dans **Protocole**, choisissez **HTTP**. Dans **Port**, entrez **8080**.

1. Dans **VPC**, choisissez le VPC par défaut.

1. Choisissez **Créer**.
**Note**  
Vous devez avoir deux groupes cibles créés pour votre équilibreur de charge afin de permettre l'exécution du déploiement. Vous devez uniquement noter l'ARN de votre premier groupe cible. Cet ARN est utilisé dans le fichier JSON `create-service` au cours de l'étape suivante.

**Pour mettre à jour votre équilibreur de charge de façon à inclure votre deuxième groupe cible**

1. Ouvrez la console Amazon EC2. Dans le volet de navigation, choisissez **Load Balancers**.

1. Choisissez l'équilibreur de charge, puis choisissez l'onglet **Ecouteurs**. Choisissez l'écouteur avec le port 8080, puis choisissez **Modifier**.

1. Choisissez l'icône en forme de crayon en regard de **Réacheminer vers**. Choisissez votre deuxième groupe cible, puis choisissez la coche. Choisissez **Mettre à jour** pour mettre à jour les mises à jour.

## Étape 4 : créer votre cluster et votre service Amazon ECS
<a name="tutorials-ecs-ecr-codedeploy-cluster"></a>

Dans cette section, vous créez un cluster et un service Amazon ECS qui CodeDeploy acheminent le trafic pendant le déploiement (vers un cluster Amazon ECS plutôt que vers des instances EC2). Pour créer votre service Amazon ECS, vous devez utiliser les noms de sous-réseaux, le groupe de sécurité et la valeur du groupe cible que vous avez créés avec votre équilibreur de charge pour créer votre service.

**Note**  
Lorsque vous suivez ces étapes pour créer votre cluster Amazon ECS, vous utilisez le modèle de cluster **Networking only**, qui approvisionne les conteneurs AWS Fargate. AWS Fargate est une technologie qui gère votre infrastructure d'instance de conteneur pour vous. Vous n'avez pas besoin de choisir ou de créer manuellement des instances Amazon EC2 pour votre cluster Amazon ECS.

**Pour créer un nouveau cluster Amazon ECS**

1. Ouvrez la console Amazon ECS Classic à l'adresse [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/).

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Choisissez **Créer un cluster**.

1. **Choisissez le modèle de cluster **Networking only** qui utilise AWS Fargate, puis choisissez Next step.**

1. Saisissez le nom d'un cluster sur la page **Configure cluster (Configurer le cluster)**. Vous pouvez ajouter une balise facultative pour votre ressource. Choisissez **Créer**.

**Pour créer un service Amazon ECS**

Utilisez le AWS CLI pour créer votre service dans Amazon ECS.

1. Créez un fichier JSON et nommez-le `create-service.json`. Collez ce qui suit dans le fichier JSON.

   Pour le `taskDefinition` champ, lorsque vous enregistrez une définition de tâche dans Amazon ECS, vous lui attribuez une famille. Il s'agit d'un élément similaire à un nom pour plusieurs versions de la définition de tâche, spécifié avec un numéro de révision. Dans cet exemple, utilisez « `ecs-demo:1` » comme famille et numéro de révision dans votre fichier. Utilisez les noms des sous-réseau, le groupe de sécurité et la valeur du groupe cible créés avec l'équilibreur de charge dans [Étape 3 : Créer votre équilibreur de charge d'application et vos groupes cibles](#tutorials-ecs-ecr-codedeploy-loadbal).
**Note**  
Vous devez inclure votre ARN de groupe cible dans ce fichier. Ouvrez la console Amazon EC2 et dans le volet de navigation, sous **LOAD BALANCING**, sélectionnez **Target** Groups. Choisissez votre premier groupe cible. Copiez votre ARN à partir de l'onglet **Description**.

   ```
   {
       "taskDefinition": "family:revision-number",
       "cluster": "my-cluster",
       "loadBalancers": [
           {
               "targetGroupArn": "target-group-arn",
               "containerName": "sample-website",
               "containerPort": 80
           }
       ],
       "desiredCount": 1,
       "launchType": "FARGATE",
       "schedulingStrategy": "REPLICA",
       "deploymentController": {
           "type": "CODE_DEPLOY"
       },
       "networkConfiguration": {
           "awsvpcConfiguration": {
               "subnets": [
                   "subnet-1",
                   "subnet-2"
               ],
               "securityGroups": [
                   "security-group"
               ],
               "assignPublicIp": "ENABLED"
           }
       }
   }
   ```

1. Exécutez la commande **create-service**, en spécifiant le fichier JSON :
**Important**  
N'oubliez pas d'inclure `file://` devant le nom du fichier. Il est nécessaire dans cette commande.

   Cet exemple crée un service nommé `my-service`.
**Note**  
Cet exemple de commande crée un service nommé my-service. Si vous avez déjà un service portant ce nom, la commande renvoie une erreur.

   ```
   aws ecs create-service --service-name my-service --cli-input-json file://create-service.json
   ```

   La sortie renvoie les champs de description pour votre service.

1. Exécutez la commande **describe-services** pour vérifier que le service a été créé.

   ```
   aws ecs describe-services --cluster cluster-name --services service-name
   ```

## Étape 5 : Création de votre CodeDeploy application et de votre groupe de déploiement (plateforme de calcul ECS)
<a name="tutorials-ecs-ecr-codedeploy-deployment"></a>

Lorsque vous créez une CodeDeploy application et un groupe de déploiement pour la plate-forme de calcul Amazon ECS, l'application est utilisée lors d'un déploiement pour référencer le groupe de déploiement, les groupes cibles, les écouteurs et le comportement de réacheminement du trafic appropriés.

**Pour créer une CodeDeploy application**

1. Ouvrez la CodeDeploy console et choisissez **Create application**.

1. Dans **Nom de l'application**, entrez le nom que vous souhaitez utiliser.

1. Dans **Plateforme de calcul**, choisissez **Amazon ECS**.

1. Choisissez **Créer une application**.

**Pour créer un groupe CodeDeploy de déploiement**

1. Sur la page de votre application, dans l'onglet **Groupe de déploiement**, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, entrez un nom décrivant le groupe de déploiement.

1. Dans **Rôle de service**, choisissez un rôle de service qui accorde CodeDeploy l'accès à Amazon ECS. Pour créer un rôle de service, procédez comme suit :

   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 **CodeDeploy**. Sous **Sélectionnez votre cas d'utilisation**, sélectionnez **CodeDeploy - ECS**. Choisissez **Suivant : Autorisations**. La stratégie gérée `AWSCodeDeployRoleForECS` est déjà attachée au rôle.

   1. Choisissez **Suivant : Balises**, puis **Suivant : Vérification**.

   1. Entrez un nom pour le rôle (par exemple, **CodeDeployECSRole**), puis choisissez **Créer un rôle**.

1. Dans **Configuration de l'environnement**, choisissez le nom de votre cluster Amazon ECS et le nom du service.

1. Dans **Équilibreurs de charge**, choisissez le nom de l'équilibreur de charge qui achemine le trafic vers votre service Amazon ECS.

1. Dans **Port d'écoute de production**, choisissez le port et le protocole de l'écouteur qui transmet le trafic de production à votre service Amazon ECS. Dans **Test listener port (Port de l'écouteur de test)**, choisissez le port et le protocole de l'écouteur de test.

1. À partir de **Nom du groupe cible 1** et **Nom du groupe cible 2**, choisissez les groupes cible utilisés pour acheminer le trafic au cours de votre déploiement. Assurez-vous que ce sont les groupes cibles que vous avez créés pour votre équilibreur de charge.

1. Choisissez **Réacheminer le trafic immédiatement** pour déterminer combien de temps après un déploiement réussi vous souhaitez rediriger le trafic vers votre tâche Amazon ECS mise à jour.

1. Choisissez **Créer un groupe de déploiement**.

## Étape 6 : Créer le pipeline
<a name="tutorials-ecs-ecr-codedeploy-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+  CodeCommit Action dans laquelle les artefacts sources sont la définition de la tâche et le AppSpec fichier.
+ Un stage source avec une action de source Amazon ECR où l'artefact source est le fichier image.
+ Une phase de déploiement avec une action de déploiement Amazon ECS au cours de laquelle le déploiement s'exécute avec une CodeDeploy application et un groupe de déploiement.

**Pour créer un pipeline à deux étapes avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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**MyImagePipeline**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **AWS CodeCommit**. Dans **Nom du référentiel**, choisissez le nom du référentiel CodeCommit que vous avez créé dans [Étape 1 : Création d'un CodeCommit référentiel](tutorials-simple-codecommit.md#codecommit-create-repository). Dans **Nom de branche**, choisissez le nom de la branche qui contient votre dernière mise à jour du code.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Fournisseur de déploiement**, choisissez **Amazon ECS (Bleu/vert)**. Dans **Nom de l'application**, entrez ou choisissez le nom de l'application dans la liste, comme `codedeployapp`. Dans **Groupe de déploiement**, saisissez ou choisissez le nom du groupe de déploiement dans la liste, comme `codedeploydeplgroup`.

       
**Note**  
« Déploiement » est le nom donné par défaut à l'étape du pipeline créée lors de l'**Étape 4 : Déploiement** tout comme « Source » est le nom donné à la première étape du pipeline.

   1. Sous **Définition de tâche Amazon ECS**, sélectionnez **SourceArtifact**. Dans le champ, entrez **taskdef.json**.

   1. Sous **AWS CodeDeploy AppSpec fichier**, sélectionnez **SourceArtifact**. Dans le champ, entrez **appspec.yaml**.
**Note**  
À ce stade, ne renseignez aucune information sous **Mettre à jour l'image de la définition de tâche de manière dynamique**.

   1. Choisissez **Suivant**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

**Pour ajouter une action source Amazon ECR à votre pipeline**

Consultez votre pipeline et ajoutez une action source Amazon ECR à votre pipeline.

1. Choisissez votre pipeline. Dans le coin supérieur gauche, choisissez **Modifier**.

1. Dans la phase source, choisissez **Modifier l'étape**.

1. Ajoutez une action parallèle en choisissant **\$1 Ajouter une action** à côté de votre action CodeCommit source.

1. Dans **Nom d'action**, saisissez un nom pour le pipeline (par exemple, **Image**).

1. Dans **Fournisseur d'action**, choisissez **Amazon ECR**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ECR-source-action.png)

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

1. Dans **Balise d'image**, spécifiez le nom et la version de l'image, s'ils sont différents des précédents.

1. Dans **Artefacts de sortie**, choisissez l'artefact de sortie par défaut (par exemple, `MyImage`) qui contient les informations de nom d'image et d'URI de référentiel que l'étape suivante doit utiliser.

1. Choisissez **Save (Enregistrer)** sur l'écran de l'action. Choisissez **Done (Terminé)** sur l'écran de l'étape. Choisissez **Save (Enregistrer)** sur le pipeline. Un message indique la règle Amazon CloudWatch Events à créer pour l'action source Amazon ECR.

**Pour relier vos artefacts source à l'action de déploiement**

1. Choisissez **Modifier** lors de votre phase de déploiement et choisissez l'icône pour modifier l'action **Amazon ECS (bleu/vert).**

1. Faites défiler jusqu'au bas du panneau. Dans **Artefacts d'entrée**, choisissez **Ajouter**. Ajoutez l'artefact source depuis votre nouveau référentiel Amazon ECR (par exemple,`MyImage`).

1. Dans **Définition de tâche**, sélectionnez **SourceArtifact**, puis vérifiez que la saisie **taskdef.json** est effectuée.

1. Dans **AWS CodeDeploy AppSpec Fichier**, sélectionnez **SourceArtifact**, puis vérifiez que la saisie **appspec.yaml** est effectuée.

1. Dans **Mettre à jour dynamiquement l'image de définition de tâche**, dans **Artifact d'entrée avec URI d'image **MyImage****, choisissez, puis entrez le texte de l'espace réservé utilisé dans le `taskdef.json` fichier :. ** IMAGE1\$1NAME** Choisissez **Enregistrer**.

1. Dans le AWS CodePipeline volet, choisissez **Enregistrer la modification du pipeline**, puis cliquez **sur Enregistrer la modification**. Affichez votre pipeline mis à jour.

   Une fois cet exemple de pipeline créé, la configuration d'action pour les entrées de la console s'affiche dans la structure du pipeline, comme suit :

   ```
   "configuration": {
     "AppSpecTemplateArtifact": "SourceArtifact",
     "AppSpecTemplatePath": "appspec.yaml",
     "TaskDefinitionTemplateArtifact": "SourceArtifact",
     "TaskDefinitionTemplatePath": "taskdef.json",
     "ApplicationName": "codedeployapp",
     "DeploymentGroupName": "codedeploydeplgroup",
     "Image1ArtifactName": "MyImage",
     "Image1ContainerName": "IMAGE1_NAME"
   },
   ```

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

1. Choisissez l'action de déploiement pour la visualiser CodeDeploy et suivre la progression du transfert du trafic.
**Note**  
Il se peut qu'une étape de déploiement affiche un temps d'attente facultatif. Par défaut, CodeDeploy attend une heure après un déploiement réussi avant de mettre fin à l'ensemble de tâches initial. Vous pouvez utiliser ce temps pour revenir en arrière ou mettre fin à la tâche. Sinon, votre déploiement prend fin lorsque l’ensemble de tâches est terminé.

## Étape 7 : Modifier le pipeline et vérifier le déploiement
<a name="tutorials-ecs-ecr-codedeploy-update"></a>

Apportez une modification à votre image, puis transférez la modification dans votre référentiel Amazon ECR. Cela déclenche l'exécution de votre pipeline. Vérifiez que la modification de la source de l'image est déployée.

# Didacticiel : Création d'un pipeline qui déploie un kit Amazon Alexa Skill
<a name="tutorials-alexa-skills-kit"></a>

Dans ce didacticiel, vous configurez un pipeline qui diffuse en continu votre compétence Alexa à l'aide du kit Alexa Skills en tant que fournisseur de déploiement dans votre étape de déploiement. Le pipeline terminé détecte les modifications apportées à votre compétence lorsque vous modifiez les fichiers source dans votre référentiel source. Le pipeline utilise ensuite le kit Alexa Skills pour procéder au déploiement sur l'étape de développement de la compétence Alexa.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Note**  
Cette fonctionnalité n'est pas disponible dans la région Asie-Pacifique (Hong Kong) ou en Europe (Milan). Pour utiliser les autres actions de déploiement disponibles dans cette région, consultez[Intégrations d'actions de déploiement](integrations-action-type.md#integrations-deploy).

Pour créer votre compétence personnalisée en tant que fonction Lambda, voir [Héberger une compétence personnalisée en tant que fonction Lambda AWS](https://developer.amazon.com/docs/custom-skills/host-a-custom-skill-as-an-aws-lambda-function.html). Vous pouvez également créer un pipeline qui utilise des fichiers source Lambda et un CodeBuild projet pour déployer les modifications apportées à Lambda en fonction de vos compétences.

## Conditions préalables
<a name="tutorials-alexa-skills-kit-prereq"></a>

Vous devez déjà disposer des éléments suivants :
+ Un CodeCommit référentiel. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez créé[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Un compte de développeur Amazon. Ce compte est propriétaire de vos compétences Alexa. Vous pouvez créer un compte gratuitement depuis la page [kit Alexa Skills](https://developer.amazon.com/alexa-skills-kit). 
+ Une compétence Alexa. Vous pouvez créer un exemple de compétence à l'aide du didacticiel [Obtention d'exemple de code de compétence personnalisé](https://developer.amazon.com/docs/custom-skills/use-the-alexa-skills-kit-samples.html).
+ Installez la CLI ASK et configurez-la à l'`ask init`aide de vos AWS informations d'identification. Veuillez consulter [Installation et initialisation de l'interface de ligne de commande ASK](https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html#install-initialize).

## Étape 1 : Créer un profil de sécurité LWA des services de développement Alexa
<a name="tutorials-alexa-skills-kit-profile"></a>

Dans cette section, vous allez créer un profil de sécurité à utiliser avec Login with Amazon (LWA). Si vous disposez déjà d'un profil, vous pouvez ignorer cette étape.
+ Utilisez les étapes de [generate-lwa-tokens](https://developer.amazon.com/docs/smapi/ask-cli-command-reference.html#generate-lwa-tokens) pour créer un profil de sécurité.
+ Après avoir créé le profil, notez l'**ID client** et la **clé secrète du client**.
+ Assurez-vous de saisir le **retour autorisé URLs** comme indiqué dans les instructions. Ils URLs permettent à la commande ASK CLI de rediriger les demandes de jeton d'actualisation.

## Étape 2 : créer des fichiers source de compétences Alexa et les transférer vers votre CodeCommit référentiel
<a name="tutorials-alexa-skills-kit-push"></a>

Dans cette section, vous allez créer et transmettre vos fichiers source de compétence Alexa au référentiel que le pipeline utilise pour votre étape source. Pour la compétence que vous avez créée dans la console du développeur Amazon, vous créez et transmettez les éléments suivants : 
+ Un fichier `skill.json`.
+ Un dossier `interactionModel/custom`.
**Note**  
Cette structure de répertoires est conforme aux exigences de format du package Kit Alexa Skills, comme décrit dans [Format de package de compétence](https://developer.amazon.com/docs/smapi/skill-package-api-reference.html#skill-package-format). Si votre structure de répertoire n'utilise pas le bon format de package de compétences, les modifications ne sont pas déployées correctement dans la console du kit Alexa Skills.

**Pour créer des fichiers source pour votre compétence**

1. Récupérez votre ID de compétence à partir de la console du développeur du kit Alexa Skills. Utilisez cette commande :

   ```
   ask api list-skills
   ```

   Recherchez votre compétence par son nom, puis copiez l'ID associé dans le champ `skillId`.

1. Générez un fichier `skill.json` contenant les détails de votre compétence. Utilisez cette commande :

   ```
   ask api get-skill -s skill-ID > skill.json
   ```

1. (Facultatif) Créez un dossier `interactionModel/custom`.

   Utilisez cette commande pour générer le fichier de modèle d'interaction dans le dossier. Pour les paramètres régionaux, ce didacticiel utilise en-US comme paramètres régionaux dans le nom de fichier.

   ```
   ask api get-model --skill-id skill-ID --locale locale >
       ./interactionModel/custom/locale.json
   ```

**Pour transférer des fichiers vers votre CodeCommit dépôt**

1. Envoyez ou téléchargez les fichiers dans votre CodeCommit dépôt. Ces fichiers constituent l'artefact source créé par l'assistant **Create Pipeline (Création de pipeline)** pour votre action de déploiement dans AWS CodePipeline. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

   ```
   skill.json
   /interactionModel
     /custom
       |en-US.json
   ```

1. Choisissez la méthode que vous souhaitez utiliser pour charger vos fichiers :

   1. Pour utiliser la ligne de commande Git à partir d'un référentiel cloné sur votre ordinateur local :

      1. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

         ```
         git add -A
         ```

      1. Exécutez la commande suivante pour valider les fichiers avec un message de validation :

         ```
         git commit -m "Added Alexa skill files"
         ```

      1. Exécutez la commande suivante pour transférer les fichiers de votre dépôt local vers votre CodeCommit dépôt :

         ```
         git push
         ```

   1. Pour télécharger vos fichiers à l' CodeCommit aide de la console, procédez comme suit : 

      1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des **référentiels**.

      1. Choisissez **Ajouter un fichier**, puis choisissez **Charger le fichier**. 

      1. Sélectionnez **Choisir un fichier**, puis recherchez votre fichier. Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. Choisissez **Valider les modifications**.

      1. Répétez cette étape pour chaque fichier que vous souhaitez charger.

## Étape 3 : Utiliser les commandes CLI ASK pour créer un jeton d'actualisation
<a name="tutorials-alexa-skills-kit-token"></a>

CodePipeline utilise un jeton d'actualisation basé sur l'ID client et le secret de votre compte de développeur Amazon pour autoriser les actions qu'il effectue en votre nom. Dans cette section, vous utilisez l'interface de ligne de commande ASK pour créer le jeton. Vous utilisez ces informations d'identification lorsque vous utilisez l'assistant **Create Pipeline (Création de pipeline)**.

**Pour créer un jeton d'actualisation avec vos informations d'identification de compte de développeur Amazon**

1. Utilisez la commande suivante : 

   ```
   ask util generate-lwa-tokens
   ```

1. Lorsque vous y êtes invité, saisissez votre ID client et votre clé secrète, comme illustré dans l'exemple suivant : 

   ```
   ? Please type in the client ID: 
   amzn1.application-client.example112233445566
   ? Please type in the client secret:
   example112233445566
   ```

1. La page de connexion s'affiche. Connectez-vous avec les informations d'identification de votre compte de développeur Amazon.

1. Revenez à l'écran de ligne de commande. Le jeton d'accès et le jeton d'actualisation sont générés dans la sortie. Copiez le jeton d'actualisation renvoyé dans la sortie.

## Étape 4 : Créer votre pipeline
<a name="tutorials-alexa-skills-kit-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Une étape source avec une CodeCommit action dans laquelle les artefacts sources sont les fichiers de compétences Alexa qui soutiennent votre compétence.
+ Une étape de déploiement avec une action de déploiement du kit Alexa Skills.

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Choisissez la AWS région dans laquelle vous souhaitez créer le projet et ses ressources. L'exécution de la compétence Alexa est uniquement disponible dans les régions suivantes :
   + Asie-Pacifique (Tokyo)
   + Europe (Irlande)
   + USA Est (Virginie du Nord)
   + USA Ouest (Oregon)

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**MyAlexaPipeline**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **AWS CodeCommit**. Dans **Nom du référentiel**, choisissez le nom du CodeCommit référentiel dans lequel vous l'avez créé[Étape 1 : Création d'un CodeCommit référentiel](tutorials-simple-codecommit.md#codecommit-create-repository). Dans **Nom de branche**, choisissez le nom de la branche qui contient votre dernière mise à jour du code.

   Après avoir sélectionné le nom du référentiel et la branche, un message indique la règle Amazon CloudWatch Events à créer pour ce pipeline. 

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**.

   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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Deploy provider (Déployer le fournisseur)**, choisissez **Alexa Skills Kit (Kit Alexa Skills)**. 

   1. Dans **Alexa skill ID (ID de compétence Alexa)**, saisissez l'ID de compétence affecté à votre compétence dans la console du développeur du kit Alexa Skills.

   1. Dans **Client ID (ID client)**, saisissez l'ID de l'application que vous avez enregistrée.

   1. Dans **Client secret (Clé secrète du client)**, saisissez la clé secrète que vous avez choisie lors de l'enregistrement.

   1. Dans **Refresh token (Jeton d'actualisation)**, entrez le jeton que vous avez généré à l'étape 3.  
![\[Étape 6 : Déployer la page pour une action du kit de compétences Alexa\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/alexa-deploy.png)

   1. Choisissez **Suivant**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

## Étape 5 : Modifier un fichier source et vérifier le déploiement
<a name="tutorials-alexa-skills-kit-update"></a>

Apportez une modification à votre compétence, puis transmettez le changement à votre référentiel. Cela déclenche l'exécution de votre pipeline. Vérifiez que votre compétence est mise à jour dans la [console de développeur du kit Alexa Skills](https://developer.amazon.com/alexa/console/ask).

# Tutoriel : Création d'un pipeline qui utilise Amazon S3 comme fournisseur de déploiement
<a name="tutorials-s3deploy"></a>

Dans ce didacticiel, vous allez configurer un pipeline qui fournit des fichiers en continu en utilisant Amazon S3 comme fournisseur d'actions de déploiement dans votre phase de déploiement. Le pipeline terminé détecte les modifications apportées lorsque vous modifiez les fichiers source dans votre référentiel source. Le pipeline utilise ensuite Amazon S3 pour déployer les fichiers dans votre compartiment. Chaque fois que vous modifiez ou ajoutez les fichiers de votre site Web dans votre emplacement source, le déploiement crée le site Web avec vos derniers fichiers. 

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Note**  
Même si vous supprimez des fichiers du référentiel source, l'action de déploiement S3 ne supprime pas les objets S3 correspondant aux fichiers supprimés.

Ce didacticiel fournit deux options :
+ Création d'un pipeline qui déploie un site web statique dans votre compartiment S3 public. Cet exemple crée un pipeline avec une action AWS CodeCommit source et une action de déploiement Amazon S3. Consultez [Option 1 : déployer des fichiers de site Web statiques sur Amazon S3](#tutorials-s3deploy-acc).
+ Créez un pipeline qui compile un exemple de TypeScript code JavaScript et déploie l'artefact de CodeBuild sortie dans votre compartiment S3 à des fins d'archivage. Cet exemple crée un pipeline avec une action source Amazon S3, une action de CodeBuild génération et une action de déploiement Amazon S3. Consultez [Option 2 : déployer des fichiers d'archive créés sur Amazon S3 à partir d'un compartiment source S3](#tutorials-s3deploy-s3source).

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

## Option 1 : déployer des fichiers de site Web statiques sur Amazon S3
<a name="tutorials-s3deploy-acc"></a>

Dans cet exemple, vous téléchargez l'exemple de fichier de modèle de site Web statique, vous chargez les fichiers dans votre AWS CodeCommit référentiel, vous créez votre compartiment et vous le configurez pour l'hébergement. Ensuite, vous utilisez la AWS CodePipeline console pour créer votre pipeline et spécifier une configuration de déploiement Amazon S3.

### Conditions préalables
<a name="tutorials-s3deploy-acc-prereq"></a>

Vous devez déjà disposer des éléments suivants :
+ Un CodeCommit référentiel. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez créé[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Fichiers source pour votre site web statique. Utilisez ce lien pour télécharger un [exemple de site web statique](samples/sample-website.zip). Le téléchargement du fichier sample-website.zip génère les fichiers suivants : 
  + Un fichier `index.html`
  + Un fichier `main.css`
  + Un fichier `graphic.jpg`
+ Un compartiment S3 configuré pour l'hébergement de site web. Veuillez consulter [Hébergement d'un site web statique sur Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). Vérifiez que vous avez créé votre compartiment dans la même région que le pipeline.
**Note**  
Pour héberger un site Web, le compartiment doit avoir un accès en lecture public, ce qui donne un accès en lecture à tout le monde. À l'exception de l'hébergement de site web, vous devez conserver les paramètres d'accès par défaut qui bloquent l'accès public aux compartiments S3.

### Étape 1 : Transférez les fichiers source vers votre CodeCommit dépôt
<a name="tutorials-s3deploy-acc-push"></a>

Dans cette section, vous allez transmettre vos fichiers source au référentiel que le pipeline utilise pour votre étape source.

**Pour transférer des fichiers vers votre CodeCommit dépôt**

1. Extrayez les exemples de fichier téléchargés. Ne chargez pas le fichier ZIP dans votre référentiel.

1. Envoyez ou téléchargez les fichiers dans votre CodeCommit dépôt. Ces fichiers constituent l'artefact source créé par l'assistant **Create Pipeline (Création de pipeline)** pour votre action de déploiement dans CodePipeline. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

   ```
   index.html
   main.css
   graphic.jpg
   ```

1. Vous pouvez utiliser Git ou la CodeCommit console pour télécharger vos fichiers :

   1. Pour utiliser la ligne de commande Git à partir d'un référentiel cloné sur votre ordinateur local :

      1. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

         ```
         git add -A
         ```

      1. Exécutez la commande suivante pour valider les fichiers avec un message de validation :

         ```
         git commit -m "Added static website files"
         ```

      1. Exécutez la commande suivante pour transférer les fichiers de votre dépôt local vers votre CodeCommit dépôt :

         ```
         git push
         ```

   1. Pour télécharger vos fichiers à l' CodeCommit aide de la console, procédez comme suit : 

      1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des **référentiels**.

      1. Choisissez **Ajouter un fichier**, puis choisissez **Charger le fichier**. 

      1. Sélectionnez **Choose file (Choisir un fichier)**, puis naviguez vers votre fichier. Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. Choisissez **Valider les modifications**.

      1. Répétez cette étape pour chaque fichier que vous souhaitez charger.

### Étape 2 : Créer votre pipeline
<a name="tutorials-s3deploy-acc-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une CodeCommit action dans laquelle les artefacts source sont les fichiers de votre site Web.
+ Une étape de déploiement avec une action de déploiement Amazon S3.

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyS3DeployPipeline**.

1. Dans **Type de pipeline**, choisissez **V2**. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md). Choisissez **Suivant**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **AWS CodeCommit**. Dans **Nom du référentiel**, choisissez le nom du référentiel CodeCommit que vous avez créé dans [Étape 1 : Création d'un CodeCommit référentiel](tutorials-simple-codecommit.md#codecommit-create-repository). Dans **Nom de branche**, choisissez le nom de la branche qui contient votre dernière mise à jour du code. À moins d'avoir créé une autre branche vous-même, seul `main` est disponible. 

   Après avoir sélectionné le nom du référentiel et la branche, la règle Amazon CloudWatch Events à créer pour ce pipeline s'affiche. 

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Deploy provider (Fournisseur de déploiement)**, choisissez **Amazon S3**. 

   1. Dans **Bucket (Compartiment)**, indiquez le nom du compartiment public.

   1. Sélectionnez **Extract file before deploy (Extraire le fichier avant de déployer)**.
**Note**  
Le déploiement échoue si vous ne sélectionnez pas **Veuillez extraire le fichier avant le déploiement**. Cela est dû au fait que l' AWS CodeCommit action de votre pipeline compresse les artefacts source et que votre fichier est un fichier ZIP.

      Lorsque **Extract file before deploy (Extraire le fichier avant de déployer)** est sélectionné, **Deployment path (Chemin de déploiement)** s'affiche. Entrez le nom du chemin que vous souhaitez utiliser. Cela crée une structure de dossiers dans Amazon S3 dans laquelle les fichiers sont extraits. Dans le cadre de ce didacticiel, laissez ce champ vide.  
![\[Étape 6 : ajout de la page de phase de déploiement pour une action de déploiement S3 avec une AWS CodeCommit source\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/tutorial-s3deploy-stage-codecommit.png)

   1. (Facultatif) Dans **Canned ACL (Liste ACL prête à l'emploi)**, vous pouvez appliquer un ensemble d'autorisations prédéfinies, appelées [liste ACL prête à l'emploi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl), aux artefacts chargés. 

   1. (Facultatif) Dans **Cache control (Contrôle de cache)**, entrez les paramètres de mise en cache. Vous pouvez définir cela pour contrôler le comportement de mise en cache pour les demandes/réponses. Pour connaître les valeurs valides, consultez le champ d'en-tête [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) pour les opérations HTTP.

   1. Choisissez **Suivant**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

1. Une fois votre pipeline exécuté avec succès, ouvrez la console Amazon S3 et vérifiez que vos fichiers apparaissent dans votre compartiment public, comme indiqué :

   ```
   index.html
   main.css
   graphic.jpg
   ```

1. Accédez à votre point de terminaison pour tester le site web. Votre point de terminaison est conforme au format suivant : `http://bucket-name.s3-website-region.amazonaws.com/`.

   Exemple de point de terminaison : `http://my-bucket.s3-website-us-west-2.amazonaws.com/`. 

   L'exemple de page Web apparaît.

### Étape 3 : Modifier un fichier source et vérifier le déploiement
<a name="tutorials-s3deploy-acc-update"></a>

Apportez une modification à vos fichiers source, puis transmettez le changement à votre référentiel. Cela déclenche l'exécution de votre pipeline. Vérifiez que votre site Web est mis à jour.

## Option 2 : déployer des fichiers d'archive créés sur Amazon S3 à partir d'un compartiment source S3
<a name="tutorials-s3deploy-s3source"></a>

Dans cette option, les commandes de construction de votre phase de construction compilent le TypeScript code en JavaScript code et déploient la sortie dans votre compartiment cible S3 dans un dossier horodaté distinct. Vous devez d'abord créer TypeScript du code et un fichier buildspec.yml. Après avoir combiné les fichiers source dans un fichier ZIP, vous téléchargez le fichier ZIP source dans votre compartiment source S3 et utilisez une CodeBuild étape pour déployer un fichier ZIP d'application intégré dans votre compartiment cible S3. Le code compilé est conservé en tant qu'archive dans votre compartiment cible.

### Conditions préalables
<a name="tutorials-s3deploy-s3source-prereq"></a>

Vous devez déjà disposer des éléments suivants :
+ Un compartiment source S3. Vous pouvez utiliser le compartiment que vous avez créé dans [Didacticiel : Création d'un pipeline simple (compartiment S3)](tutorials-simple-s3.md).
+ Un compartiment cible S3. Veuillez consulter [Hébergement d'un site web statique sur Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). Assurez-vous de créer votre bucket de la même manière Région AWS que le pipeline que vous souhaitez créer.
**Note**  
Cet exemple illustre le déploiement de fichiers sur un compartiment privé. N'activez pas votre compartiment cible pour l'hébergement de site Web ou n'attachez aucune stratégie qui rendrait le compartiment public.

### Étape 1 : Créer et charger des fichiers source sur votre compartiment source S3
<a name="tutorials-s3deploy-s3source-upload"></a>

Dans cette section, vous allez créer et charger vos fichiers source sur le compartiment que le pipeline utilise pour votre étape source. Cette section fournit des instructions pour créer les fichiers source suivants :
+ Un `buildspec.yml` fichier, qui est utilisé pour les projets de CodeBuild construction.
+ Un fichier `index.ts`. 

**Pour créer un fichier buildspec.yml**
+ Créez un fichier nommé `buildspec.yml` avec les contenus suivants. Ces commandes de compilation installent TypeScript et utilisent le TypeScript compilateur pour réécrire le code `index.ts` en JavaScript code.

  ```
  version: 0.2
  
  phases:
    install:
      commands:
        - npm install -g typescript
    build:
      commands:
        - tsc index.ts
  artifacts:
    files:
      - index.js
  ```

**Pour créer un fichier index.ts**
+ Créez un fichier nommé `index.ts` avec les contenus suivants.

  ```
  interface Greeting {
      message: string;
  }
  
  class HelloGreeting implements Greeting {
      message = "Hello!";
  }
  
  function greet(greeting: Greeting) {
      console.log(greeting.message);
  }
  
  let greeting = new HelloGreeting();
  
  greet(greeting);
  ```

**Pour charger des fichiers sur votre compartiment source S3**

1. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

   ```
   buildspec.yml
   index.ts
   ```

   Compressez les fichiers et nommez le fichier `source.zip`.

1. Dans la console Amazon S3, pour votre compartiment source, choisissez **Upload**. Choisissez **Ajouter des fichiers**, puis recherchez le fichier ZIP que vous avez créé.

1.  Choisissez **Charger**. Ces fichiers constituent l'artefact source créé par l'assistant **Create Pipeline (Création de pipeline)** pour votre action de déploiement dans CodePipeline. Votre fichier doit être similaire à ce qui suit dans votre compartiment :

   ```
   source.zip
   ```

### Étape 2 : Créer votre pipeline
<a name="tutorials-s3deploy-s3source-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Une étape source avec une action Amazon S3 dans laquelle les artefacts source sont les fichiers de votre application téléchargeable.
+ Une étape de déploiement avec une action de déploiement Amazon S3.

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyS3DeployPipeline**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **Amazon S3**. Dans **Bucket (Compartiment)**, choisissez le nom de votre compartiment source. Dans **S3 object key (Clé d'objet S3)**, entrez le nom de votre fichier ZIP source. Assurez-vous d'inclure l'extension de fichier .zip.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une étape de construction** :

   1. Dans le champ **Fournisseur de génération**, choisissez **CodeBuild**.

   1. Choisissez **Créer un projet de génération**. Sur la page **Create project (Créer un projet)** :

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans **Environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour la **version Runtime**, choisissez:1.0aws/codebuild/standard.**

   1. Dans **Version d'image**, choisissez Utilisez **Always use the latest image for this runtime version (Toujours utiliser la dernière image pour cette version d'exécution)**.

   1. Pour **Rôle de service**, choisissez votre rôle CodeBuild de service ou créez-en un.

   1. Pour **Build specifications (Spécifications de génération)**, choisissez **Use a buildspec file (Utiliser un fichier buildspec)**.

   1. Choisissez **Continuer vers CodePipeline**. Un message s'affiche si le projet est créé avec succès.

   1. Choisissez **Suivant**.

1. À **l'étape 5 : Ajouter une phase de déploiement** :

   1. Dans **Deploy provider (Fournisseur de déploiement)**, choisissez **Amazon S3**. 

   1. Dans **Bucket (Compartiment)**, entrez le nom de votre compartiment cible S3.

   1. Assurez-vous que **Extract file before deploy (Extraire le fichier avant de déployer)** est décochée.

      Lorsque **Extract file before deploy (Extraire le fichier avant de déployer)** est décochée, **S3 object key (Clé d'objet S3)** est affiché. Entrez le nom du chemin que vous souhaitez utiliser : `js-application/{datetime}.zip`.

      Cela crée un `js-application` dossier dans Amazon S3 dans lequel les fichiers sont extraits. Dans ce dossier, la variable `{datetime}` crée un horodatage sur chaque fichier de sortie lorsque votre pipeline s'exécute.  
![\[Étape 5 : page de déploiement pour une action de déploiement Amazon S3 avec une source Amazon S3\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/tutorial-s3deploy-stage-s3source.png)

   1. (Facultatif) Dans **Canned ACL (Liste ACL prête à l'emploi)**, vous pouvez appliquer un ensemble d'autorisations prédéfinies, appelées [liste ACL prête à l'emploi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl), aux artefacts chargés. 

   1. (Facultatif) Dans **Cache control (Contrôle de cache)**, entrez les paramètres de mise en cache. Vous pouvez définir cela pour contrôler le comportement de mise en cache pour les demandes/réponses. Pour connaître les valeurs valides, consultez le champ d'en-tête [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) pour les opérations HTTP.

   1. Choisissez **Suivant**.

1. Dans **Step 6: Review**, vérifiez les informations puis choisissez **Create pipeline**.

1. Une fois votre pipeline exécuté avec succès, consultez votre compartiment dans la console Amazon S3. Vérifiez que votre fichier ZIP déployé s'affiche dans votre compartiment cible sous le dossier `js-application`. Le JavaScript fichier contenu dans le fichier ZIP doit être`index.js`. Le fichier `index.js` contient la sortie suivante :

   ```
   var HelloGreeting = /** @class */ (function () {
       function HelloGreeting() {
           this.message = "Hello!";
       }
       return HelloGreeting;
   }());
   function greet(greeting) {
       console.log(greeting.message);
   }
   var greeting = new HelloGreeting();
   greet(greeting);
   ```

### Étape 3 : Modifier un fichier source et vérifier le déploiement
<a name="tutorials-s3deploy-s3source-update"></a>

Apportez une modification à vos fichiers source, puis chargez-les dans votre compartiment source. Cela déclenche l'exécution de votre pipeline. Affichez votre compartiment cible et vérifiez que les fichiers de sortie déployés sont disponibles dans le dossier `js-application`, comme indiqué ci-après :

![\[Téléchargement d'un exemple de fichier ZIP\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/tutorial-s3deploy-pipeline-appzip.png)


# Tutoriel : Créez un pipeline qui publie votre application sans serveur sur AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Vous pouvez l'utiliser AWS CodePipeline pour fournir en continu votre application AWS SAM sans serveur au AWS Serverless Application Repository.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Ce didacticiel explique comment créer et configurer un pipeline pour créer votre application sans serveur hébergée GitHub et publiée AWS Serverless Application Repository automatiquement sur le. Le pipeline est utilisé GitHub comme fournisseur de source et CodeBuild comme fournisseur de build. Pour publier votre application sans serveur sur le AWS Serverless Application Repository, vous déployez une [application](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (à partir du AWS Serverless Application Repository) et associez la fonction Lambda créée par cette application en tant que fournisseur d'actions Invoke dans votre pipeline. Vous pouvez ensuite fournir des mises à jour d'applications en continu sur le AWS Serverless Application Repository, sans écrire de code.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

## Avant de commencer
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

Dans ce didacticiel, nous supposons ce qui suit : 
+ Vous connaissez [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) et [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Vous avez une application sans serveur hébergée dans GitHub laquelle vous avez publié à l' AWS Serverless Application Repository aide de la AWS SAM CLI. Pour publier un exemple d'application sur le AWS Serverless Application Repository, voir [Démarrage rapide : publication d'applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) dans le *guide du AWS Serverless Application Repository développeur*. Pour publier votre propre application sur le AWS Serverless Application Repository, consultez la section [Publication d'applications à l'aide de la AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) dans le *guide du AWS Serverless Application Model développeur*.

## Étape 1 : Créer un fichier buildspec.yml
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Créez un `buildspec.yml` fichier avec le contenu suivant et ajoutez-le au GitHub référentiel de votre application sans serveur. *template.yml*Remplacez-le par le AWS SAM modèle de votre application et *bucketname* par le compartiment S3 dans lequel votre application packagée est stockée.

```
version: 0.2
phases:
  install:
    runtime-versions:
        python: 3.8
  build:
    commands:
      - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml
artifacts:
  files:
    - packaged-template.yml
```

## Étape 2 : Créer et configurer votre pipeline
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

Suivez ces étapes pour créer votre pipeline à l' Région AWS endroit où vous souhaitez publier votre application sans serveur.

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Si nécessaire, passez à l' Région AWS endroit où vous souhaitez publier votre application sans serveur.

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. Choisissez **Créer un pipeline**. Sur la page **Étape 2 : Choisir les paramètres du pipeline**, dans **Nom du pipeline**, entrez le nom de votre pipeline.

1. Dans **Type de pipeline**, choisissez **V2**. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md). Choisissez **Suivant**.

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 une étape source**, dans **Source provider**, sélectionnez **GitHub**.

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 **Repository**, choisissez votre référentiel GitHub source.

1. Dans **Branche**, choisissez votre GitHub succursale.

1. Conservez les valeurs par défaut restantes pour l'action source. Choisissez **Suivant**.

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

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Pour **Région**, utilisez la région du pipeline.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Exécution** et **Version d'exécution**, choisissez l'exécution et la version d'exécution requises pour votre application sans serveur.

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.

   1. Pour **Build specifications (Spécifications de génération)**, choisissez **Use a buildspec file (Utiliser un fichier buildspec)**.

   1. Choisissez **Continuer vers CodePipeline**. Cela ouvre la CodePipeline console et crée un CodeBuild projet qui utilise le `buildspec.yml` dans votre référentiel pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Vous devriez voir un schéma illustrant les étapes.

1. Accordez au rôle de CodeBuild service l'autorisation d'accéder au compartiment S3 dans lequel votre application packagée est stockée.

   1. À l'étape **Génération** de votre nouveau pipeline, choisissez **CodeBuild**.

   1. Choisissez l'onglet **Détails de la génération**.

   1. Dans **Environment**, choisissez le rôle CodeBuild de service pour ouvrir la console IAM.

   1. Développez la sélection pour `CodeBuildBasePolicy`, puis choisissez **Modifier la stratégie**.

   1. Choisissez **JSON**.

   1. Ajoutez un nouvel énoncé de stratégie avec le contenu suivant. L'instruction permet CodeBuild de placer des objets dans le compartiment S3 dans lequel votre application empaquetée est stockée. *bucketname*Remplacez-le par le nom de votre compartiment S3.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::bucketname/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Choisissez **Examiner une politique**.

   1. Sélectionnez **Enregistrer les modifications**.

## Étape 3 : Déployer l'application de publication
<a name="serverlessrepo-auto-publish-deploy-app"></a>

Procédez comme suit pour déployer l'application qui contient la fonction Lambda qui effectue la publication sur. AWS Serverless Application Repository Cette application s'appelle **aws-serverless-codepipeline-serverlessrepo-publish**.

**Note**  
Vous devez déployer l'application sur le même site Région AWS que votre pipeline.

1. Accédez à la page de l'[application](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) et choisissez **Déployer**.

1. Sélectionnez **Je comprends que cette application crée des rôles IAM personnalisés**. 

1. Choisissez **Déployer**.

1. Choisissez **View CloudFormation Stack** pour ouvrir la CloudFormation console.

1. Développez la section **Ressources**. Vous voyez **ServerlessRepoPublish**, laquelle est du genre **AWS::Lambda::Function**. Prenez note de l'ID physique de cette ressource pour l'étape suivante. Utilisez cet ID physique lorsque vous créez la nouvelle action de publication dans CodePipeline.

## Étape 4 : Créer l'action de publication
<a name="serverlessrepo-auto-publish-create-action"></a>

Procédez comme suit pour créer l'action de publication dans votre pipeline.

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

1. Dans le volet de navigation de gauche, choisissez le pipeline à modifier.

1. Choisissez **Modifier**.

1. Après la dernière étape de votre pipeline, choisissez **\$1Ajouter une étape**. Dans **Nom de l'étape**, saisissez un nom, tel que **Publish**, puis choisissez **Ajouter une étape**.

1. Dans la nouvelle étape, choisissez **\$1 Add action group (\$1 Ajouter un groupe d'actions)**.

1. Saisissez un nom d'action. Dans **Fournisseur d'action**, dans **Invoquer**, choisissez **AWS Lambda**.

1. Dans **Artefacts d'entrée**, sélectionnez **BuildArtifact**.

1. Dans **Nom de la fonction**, choisissez l'ID physique de la fonction Lambda que vous avez noté à l'étape précédente.

1. Choisissez **Enregistrer** pour l'action.

1. Choisissez **Effectué** pour l'étape.

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

1. Pour vérifier votre pipeline, apportez une modification à votre application dans GitHub. Par exemple, modifiez la description de l'application dans la `Metadata` section de votre fichier AWS SAM modèle. Validez le changement et envoyez-le à votre GitHub agence. Cela déclenche l'exécution de votre pipeline. Une fois le pipeline terminé, vérifiez que votre application a été mise à jour avec vos modifications dans le [AWS Serverless Application Repository](https://console.aws.amazon.com/serverlessrepo/home).

# Tutoriel : Déploiements de fonctions Lambda avec CodePipeline
<a name="tutorials-lambda-deploy"></a>

Ce didacticiel vous aide à créer une action de déploiement CodePipeline qui déploie votre code sur la fonction que vous avez configurée dans Lambda. Vous allez créer un exemple de fonction Lambda dans lequel vous allez créer un alias et une version, ajouter la fonction Lambda compressée à votre emplacement source et exécuter l'action Lambda dans votre pipeline.

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

## Conditions préalables
<a name="tutorials-lambda-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, tel que GitHub, ou un compartiment source S3 (ce didacticiel utilise S3) dans lequel vous stockerez un `.zip` fichier que vous créez pour votre fonction Lambda.
+ 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 relatives à la politique des rôles de service pour l'action de déploiement Lambda](action-reference-LambdaDeploy.md#action-reference-LambdaDeploy-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éation de votre exemple de fonction Lambda
<a name="tutorials-lambda-deploy-instances"></a>

Au cours de cette étape, vous créez la fonction Lambda que vous allez déployer.

**Pour créer votre fonction Lambda**

1. Accédez à la console Lambda et suivez les étapes du didacticiel suivant pour créer un exemple de fonction Lambda : link.

1. Dans le menu de navigation supérieur, choisissez **Créer**, puis **sélectionnez Commencer à zéro** en haut de la page.

1. Pour **Name (Nom)**, entrez **MyLambdaFunction**. 

1. Publiez une nouvelle version. Il s'agira de la version vers laquelle l'alias pointera.

   1. Sélectionnez votre fonction.

   1. Choisissez le menu déroulant **Actions**.

   1. Choisissez **Publish new version (Publier une nouvelle version)**.

   1. (Facultatif) Ajoutez à la description dans **Description**.

   1. Choisissez **Publier**.

1. Créez un alias pour votre fonction, par exemple`aliasV1`.

1. Assurez-vous que l'alias pointe vers la version que vous venez de créer (1, par exemple).
**Note**  
Si vous choisissez \$1LATEST, vous ne pouvez pas utiliser les fonctionnalités de transfert de trafic car Lambda ne prend pas en charge \$1LATEST pour un alias pointant vers plusieurs versions.

## Étape 2 : Téléchargez le fichier de fonctions dans votre référentiel
<a name="tutorials-lambda-deploy-file"></a>

Téléchargez la fonction et enregistrez-la sous forme de fichier zip. Téléchargez le fichier compressé dans votre compartiment S3 en suivant les étapes ci-dessous.

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

1. Ouvrez votre compartiment S3.

1. Choisissez **Charger**.

1. Téléchargez le fichier zip contenant votre `sample_lambda_source.zip` fichier dans votre compartiment source.

   Notez le chemin.

   ```
   object key
   ```

## Étape 3 : Création de votre pipeline
<a name="tutorials-lambda-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 relatives à la politique des rôles de service pour l'action de déploiement Lambda](action-reference-LambdaDeploy.md#action-reference-LambdaDeploy-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 **Fournisseur de source**, choisissez **Amazon S3**.

   1. Dans **Clé d'objet**, ajoutez le nom de votre fichier .zip, y compris son extension, telle que`sample_lambda_source.zip`.

      

   Choisissez **Suivant**.

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

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

1. Sur la page **Étape 6 : Ajouter une étape de déploiement**, sélectionnez **Lambda**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/lambdadeploy-edit-screen.png)

   1. Ajoutez le nom et l'alias de votre fonction. 

   1. Choisissez votre stratégie de déploiement.

   1. Choisissez **Suivant**.

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.  
![\[\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/lambdadeploy-pipeline-screen.png)

## Étape 4 : Test de votre pipeline
<a name="tutorials-lambda-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 doit être déployée sur votre fonction Lambda.

## En savoir plus
<a name="tutorials-lambda-deploy-learn"></a>

L'action de déploiement Lambda permet deux méthodes de déploiement. L'une des méthodes consiste à déplacer le trafic uniquement sans artéfact d'entrée provenant de l'action source. L'autre méthode consiste à mettre à jour le code de fonction à l'aide d'un artefact d'entrée provenant de l'action source, puis à publier une nouvelle version basée sur le code mis à jour. Pour la deuxième méthode, si l'alias est fourni, le trafic CodePipeline sera également transféré. Ce didacticiel d'action de déploiement Lambda explique comment mettre à jour votre fonction à l'aide d'un artefact source.

Pour en savoir plus sur l'action, consultez la page de référence de l'action à l'adresse[AWS Lambda référence d'action de déploiement](action-reference-LambdaDeploy.md).

# Tutoriel : Utilisation de variables avec des actions d'appel Lambda
<a name="tutorials-lambda-variables"></a>

Une action d'appel Lambda peut utiliser les variables d'une autre action dans le cadre de son entrée et renvoyer de nouvelles variables avec sa sortie. Pour plus d'informations sur les variables pour les actions dans CodePipeline, voir[Référence aux variables](reference-variables.md).

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

À la fin de ce tutoriel, vous aurez :
+ Une action d'appel Lambda qui :
  + Consomme la `CommitId` variable d'une action CodeCommit source
  + Émet trois nouvelles variables : `dateTime`, `testRunId` et `region`
+ Une action d'approbation manuelle qui utilise les nouvelles variables de votre action d'appel Lambda pour fournir une URL de test et un ID d'exécution de test
+ Pipeline mis à jour avec les nouvelles actions

**Topics**
+ [Conditions préalables](#lambda-variables-prereqs)
+ [Étape 1 : créer une fonction Lambda](#lambda-variables-function)
+ [Étape 2 : ajouter une action d'appel Lambda et une action d'approbation manuelle à votre pipeline](#lambda-variables-pipeline)

## Conditions préalables
<a name="lambda-variables-prereqs"></a>

Avant de commencer, les prérequis suivants doivent être remplis : 
+ Vous pouvez créer ou utiliser le pipeline avec la CodeCommit source dedans[Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).
+ Modifiez votre pipeline existant afin que l'action CodeCommit source possède un espace de noms. Affectez l'espace de noms `SourceVariables` à l'action.

## Étape 1 : créer une fonction Lambda
<a name="lambda-variables-function"></a>

Procédez comme suit pour créer une fonction Lambda et un rôle d'exécution Lambda. Vous ajoutez l'action Lambda à votre pipeline après avoir créé la fonction Lambda.

**Pour créer une fonction Lambda et un rôle d'exécution**

1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Choisissez **Créer une fonction**. Laissez l'option **Créer à partir de zéro** sélectionnée.

1. Dans **Nom de la fonction**, entrez le nom de votre fonction, par exemple **myInvokeFunction**. Dans **Runtime**, laissez l'option par défaut sélectionnée.

1. Développez **Choose or create an execution role (Choisir ou créer un rôle d'exécution)**. Choisissez **Create a new role with basic Lambda permissions (Créer un rôle avec les autorisations Lambda standard)**.

1. Choisissez **Créer une fonction**.

1. Pour utiliser une variable d'une autre action, elle devra être passée à `UserParameters` dans la configuration de l'action d'appel (Invoke) Lambda. Vous allez configurer l'action dans notre pipeline plus tard dans le didacticiel, mais vous ajouterez le code en supposant que la variable est transmise.

   Pour créer de nouvelles variables, définissez une propriété appelée `outputVariables` sur l'entrée avec la valeur `putJobSuccessResult`. Notez que vous ne pouvez pas produire de variables dans le cadre d'un fichier `putJobFailureResult`.

   ```
    const putJobSuccess = async (message) => {
           const params = {
               jobId: jobId,
               outputVariables: {
                   testRunId: Math.floor(Math.random() * 1000).toString(),
                   dateTime: Date(Date.now()).toString(),
                   region: lambdaRegion
               }
           };
   ```

   Dans votre nouvelle fonction, dans l'onglet **Code**, collez l'exemple de code ci-dessous`index.mjs`.

   ```
   import { CodePipeline } from '@aws-sdk/client-codepipeline';
   
   export const handler = async (event, context) => {
       const codepipeline = new CodePipeline({});
       
       // Retrieve the Job ID from the Lambda action
       const jobId = event["CodePipeline.job"].id;
       
       // Retrieve UserParameters
       const params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;
       
       // The region from where the lambda function is being executed
       const lambdaRegion = process.env.AWS_REGION;
       
       // Notify CodePipeline of a successful job
       const putJobSuccess = async (message) => {
           const params = {
               jobId: jobId,
               outputVariables: {
                   testRunId: Math.floor(Math.random() * 1000).toString(),
                   dateTime: Date(Date.now()).toString(),
                   region: lambdaRegion
               }
           };
           
           try {
               await codepipeline.putJobSuccessResult(params);
               return message;
           } catch (err) {
               throw err;
           }
       };
       
       // Notify CodePipeline of a failed job
       const putJobFailure = async (message) => {
           const params = {
               jobId: jobId,
               failureDetails: {
                   message: JSON.stringify(message),
                   type: 'JobFailed',
                   externalExecutionId: context.invokeid
               }
           };
           
           try {
               await codepipeline.putJobFailureResult(params);
               throw message;
           } catch (err) {
               throw err;
           }
       };
       
       try {
           console.log("Testing commit - " + params);
           
           // Your tests here
           
           // Succeed the job
           return await putJobSuccess("Tests passed.");
       } catch (ex) {
           // If any of the assertions failed then fail the job
           return await putJobFailure(ex);
       }
   };
   ```

1. Autorisez la fonction à enregistrer automatiquement.

1. Copiez le nom de ressource Amazon (ARN) contenu dans le champ **Function ARN** en haut de l'écran.

1. Enfin, ouvrez la console Gestion des identités et des accès AWS (IAM) à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse. Modifiez le rôle d'exécution Lambda pour ajouter la politique suivante :. [AWSCodePipelineCustomActionAccess](https://console.aws.amazon.com/iam/home?region=us-west-2#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCodePipelineCustomActionAccess) Pour connaître les étapes à suivre pour créer un rôle d'exécution Lambda ou modifier la stratégie de rôle, veuillez consulter [Étape 2 : Création de la fonction Lambda](actions-invoke-lambda-function.md#actions-invoke-lambda-function-create-function). 

## Étape 2 : ajouter une action d'appel Lambda et une action d'approbation manuelle à votre pipeline
<a name="lambda-variables-pipeline"></a>

Au cours de cette étape, vous ajoutez une action d'appel Lambda à votre pipeline. Vous ajoutez l'action dans le cadre d'une étape nommée **Test**. Le type d'action est une action d'appel. Vous ajoutez ensuite une action d'approbation manuelle après l'action d'appel.

**Pour ajouter une action Lambda et une action d'approbation manuelle au pipeline**

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

   Les noms de tous les pipelines associés à votre AWS compte sont affichés. Choisissez le pipeline dans lequel vous souhaitez ajouter l'action.

1. Ajoutez l'action de test Lambda à votre pipeline.

   1. Pour modifier votre pipeline, choisissez **Modifier**. Ajoutez une étape après l'action source dans le pipeline existant. Entrez un nom pour l'étape, par exemple **Test**.

   1. Dans la nouvelle étape, choisissez **Ajouter un groupe d'actions** pour ajouter une action. Dans **Nom de l'action**, entrez le nom de l'action d'appel, par exemple **Test\$1Commit**.

   1. Dans **Action provider**, sélectionnez **AWS Lambda**.

   1. Dans **Artefacts d'entrée**, choisissez le nom de l'artefact de sortie de votre action source, tel que `SourceArtifact`.

   1. Dans **FunctionName**, ajoutez l'ARN de la fonction Lambda que vous avez créée.

   1. Dans **Variable namespace (Espace de noms de variables)**, ajoutez le nom de l'espace de noms, par exemple **TestVariables**.

   1. Dans **Artefacts de sortie**, ajoutez le nom de l'artefact de sortie, tel que**LambdaArtifact**.

   1. Sélectionnez **Exécuté**.

1. Ajoutez l'action d'approbation manuelle à votre pipeline.

   1. Votre pipeline étant toujours en mode d'édition, ajoutez une étape après l'action d'appel. Entrez un nom pour l'étape, par exemple **Approval**.

   1. Dans cette nouvelle étape, choisissez l'icône pour ajouter une action. Dans **Nom de l'action**, entrez le nom de l'action d'approbation, par exemple **Change\$1Approval**.

   1. Dans **Fournisseur d'action**, choisissez **Approbation manuelle**.

   1. Dans **URL pour la révision**, élaborez l'URL en ajoutant la syntaxe de variable pour la variable `region` et la variable `CommitId`. Veillez à utiliser les espaces de noms affectés aux actions qui fournissent les variables de sortie. 

      Dans cet exemple, l'URL contenant la syntaxe variable d'une CodeCommit action possède l'espace de noms `SourceVariables` par défaut. La variable de sortie de région Lambda a l'espace de noms `TestVariables`. L'URL se présente comme suit.

      ```
      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}
      ```

      Dans **Commentaires**, élaborez le texte du message d'approbation en ajoutant la syntaxe de variable pour la variable `testRunId`. Pour cet exemple, l'URL avec la syntaxe de variable pour la variable de sortie `testRunId` Lambda a l'espace de noms `TestVariables`. Entrez le message suivant.

      ```
      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
      ```

1. Choisissez **Effectué** pour fermer l'écran d'édition de l'action, puis choisissez **Effectué** pour fermer l'écran d'édition de l'étape. Pour enregistrer le pipeline, choisissez **Effectué**. Le pipeline terminé contient désormais une structure avec les étapes source, de test, d'approbation et de déploiement.

   Choisissez **Publier une modification** pour exécuter la dernière modification via la structure du pipeline.

1. Lorsque le pipeline atteint l'étape d'approbation manuelle, choisissez **Vérification**. Les variables résolues apparaissent comme l'URL de l'ID de validation. Votre approbateur peut choisir cette URL pour afficher la validation.

1. Une fois le pipeline exécuté avec succès, vous pouvez également afficher les valeurs des variables sur la page de l'historique d'exécution des actions.

# Tutoriel : Utiliser une AWS Step Functions action d'appel dans un pipeline
<a name="tutorials-step-functions"></a>

Vous pouvez l'utiliser AWS Step Functions pour créer et configurer des machines d'état. Ce didacticiel vous montre comment ajouter une action d'appel à un pipeline qui active les exécutions de machines d'état à partir de votre pipeline. 

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Dans ce didacticiel, vous effectuez les tâches suivantes :
+ Créez une machine à états standard dans AWS Step Functions.
+ Entrez directement le JSON d’entrée de la machine d'état. Vous pouvez également télécharger le fichier d'entrée de la machine à états dans un compartiment Amazon Simple Storage Service (Amazon S3).
+ Mettez à jour votre pipeline en ajoutant l'action de la machine d'état.

**Topics**
+ [Condition préalable : créer ou choisir un pipeline simple](#tutorials-step-functions-prereq)
+ [Étape 1 : Créer l'exemple de machine d'état](#tutorials-step-functions-sample)
+ [Étape 2 : Ajouter une action d'appel Step Functions à votre pipeline](#tutorials-step-functions-pipeline)

## Condition préalable : créer ou choisir un pipeline simple
<a name="tutorials-step-functions-prereq"></a>

Dans ce didacticiel, vous ajoutez une action d'appel à un pipeline existant. Vous pouvez utiliser le pipeline que vous avez créé dans [Didacticiel : Création d'un pipeline simple (compartiment S3)](tutorials-simple-s3.md) ou [Tutoriel : Création d'un pipeline simple (CodeCommit référentiel)](tutorials-simple-codecommit.md).

Vous utilisez un pipeline existant avec une action source et au moins une structure en deux étapes, mais vous n'utilisez pas d'artefacts source pour cet exemple.

**Note**  
Vous devrez peut-être mettre à jour le rôle de service utilisé par votre pipeline avec les autorisations supplémentaires requises pour exécuter cette action. Pour ce faire, ouvrez la console Gestion des identités et des accès AWS (IAM), recherchez le rôle, puis ajoutez les autorisations à la politique du rôle. Pour de plus amples informations, veuillez consulter [Ajouter des autorisations au rôle CodePipeline de service](how-to-custom-role.md#how-to-update-role-new-services).

## Étape 1 : Créer l'exemple de machine d'état
<a name="tutorials-step-functions-sample"></a>

Dans la console Step Functions, créez une machine à états à l'aide du modèle `HelloWorld` d'exemple. Pour obtenir des instructions, consultez la section [Créer une machine à états](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started.html#create-state-machine) dans le *guide du AWS Step Functions développeur*.

## Étape 2 : Ajouter une action d'appel Step Functions à votre pipeline
<a name="tutorials-step-functions-pipeline"></a>

Ajoutez une action d'appel Step Functions à votre pipeline comme suit :

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

   Les noms de tous les pipelines associés à votre AWS compte sont affichés.

1. Dans **Name**, choisissez le nom du pipeline que vous souhaitez modifier. Une vue détaillée du pipeline s'affiche alors, laquelle indique notamment l'état de chaque action, dans chaque étape du pipeline.

1. Sur la page des détails du pipeline, choisissez **Edit**.

1. Sur la deuxième étape de votre pipeline simple, choisissez **Modifier l’étape**. Sélectionnez **Delete (Supprimer)**. Ceci supprime la deuxième étape maintenant que vous n'en avez plus besoin.

1. Au bas du diagramme, choisissez **\$1 Ajouter une étape**.

1. Dans **Nom d’étape**, saisissez un nom pour l’étape, par exemple **Invoke**, puis choisissez **Ajouter une étape**.

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

1. Dans **Nom de l'action**, saisissez un nom, par exemple **Invoke**.

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

1. Dans **Artefacts d'entrée**, choisissez `SourceArtifact`.

1. Dans **ARN de la machine d'état**, choisissez l'ARN (Amazon Resource Name) de la machine d'état que vous avez créée précédemment.

1. (Facultatif) Dans **Préfixe du nom d'exécution**, saisissez un préfixe à ajouter à l'ID d'exécution de la machine d'état.

1. Dans **Type d'entrée**, choisissez **Littéral**.

1. Dans **Entrée**, saisissez le JSON d’entrée que l'exemple de machine d’état `HelloWorld` attend.
**Note**  
L'entrée dans l'exécution de la machine à états est différente du terme utilisé CodePipeline pour décrire les artefacts d'entrée pour les actions.

   Pour cet exemple, saisissez le JSON suivant :

   ```
   {"IsHelloWorldExample": true}
   ```

1. Sélectionnez **Exécuté**.

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

1. Pour soumettre vos modifications et lancer l'exécution d'un pipeline, choisissez **Changement de version**, puis **Publication**.

1. Une fois votre pipeline terminé, choisissez **AWS Step Functions** dans votre action d'invocation. Dans la AWS Step Functions console, consultez l'ID d'exécution de votre machine à états. L'ID affiche le nom de votre machine d'état `HelloWorld` et l'ID d'exécution de la machine d'état avec le préfixe `my-prefix`.

   ```
   arn:aws:states:us-west-2:account-ID:execution:HelloWorld:my-prefix-0d9a0900-3609-4ebc-925e-83d9618fcca1
   ```

# Tutoriel : Création d'un pipeline utilisé AWS AppConfig comme fournisseur de déploiement
<a name="tutorials-AppConfig"></a>

Dans ce didacticiel, vous allez configurer un pipeline qui fournit en continu des fichiers de configuration en AWS AppConfig tant que fournisseur d'actions de déploiement dans votre phase de déploiement.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Topics**
+ [Conditions préalables](#tutorials-AppConfig-prereq)
+ [Étape 1 : Créez vos AWS AppConfig ressources](#tutorials-AppConfig-application)
+ [Étape 2 : télécharger des fichiers dans votre compartiment source S3](#tutorials-AppConfig-bucket)
+ [Étape 3 : Créer votre pipeline](#tutorials-AppConfig-pipeline)
+ [Étape 4 : apporter une modification à n'importe quel fichier source et vérifier le déploiement](#tutorials-AppConfig-verify)

## Conditions préalables
<a name="tutorials-AppConfig-prereq"></a>

Avant de commencer, vous devez effectuer les opérations suivantes :
+ Cet exemple utilise une source S3 pour votre pipeline. Créez ou utilisez un compartiment Amazon S3 avec le contrôle de version activé. Suivez les instructions fournies dans [Étape 1 : créer un compartiment source S3 pour votre application](tutorials-simple-s3.md#s3-create-s3-bucket) pour créer un compartiment S3.

## Étape 1 : Créez vos AWS AppConfig ressources
<a name="tutorials-AppConfig-application"></a>

Dans cette section, vous allez créer les ressources suivantes :
+ Une *application* in AWS AppConfig est une unité logique de code qui fournit des fonctionnalités à vos clients.
+ Un *environnement* dans AWS AppConfig est un groupe de déploiement logique de AppConfig cibles, telles que des applications dans un environnement bêta ou de production.
+ Un *profil de configuration* est un ensemble de paramètres qui influencent le comportement de votre application. Le profil de configuration permet AWS AppConfig d'accéder à votre configuration dans son emplacement enregistré.
+ (Facultatif) Une *stratégie de déploiement* AWS AppConfig définit le comportement d'un déploiement de configuration, par exemple le pourcentage de clients devant recevoir la nouvelle configuration déployée à un moment donné au cours d'un déploiement.

**Pour créer une application, un environnement, un profil de configuration et une stratégie de déploiement**

1. Connectez-vous au AWS Management Console.

1. Suivez les étapes décrites dans les rubriques suivantes pour créer vos ressources dans AWS AppConfig.
   + [Créez une application](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-application.html).
   + [Créez un environnement](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-environment.html).
   + [Créez un profil AWS CodePipeline de configuration](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-configuration-and-profile.html).
   + (Facultatif) [Choisissez une stratégie de déploiement prédéfinie ou créez la vôtre](https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig-creating-deployment-strategy.html).

## Étape 2 : télécharger des fichiers dans votre compartiment source S3
<a name="tutorials-AppConfig-bucket"></a>

Dans cette section, créez votre ou vos fichiers de configuration. Ensuite, compressez et transférez vos fichiers source vers le compartiment que le pipeline utilise pour votre étape source.

**Pour créer des fichiers de configuration**

1. Créez un `configuration.json` fichier pour chaque configuration dans chaque région. Incluez le contenu suivant :

   ```
   Hello World!
   ```

1. Suivez les étapes ci-dessous pour compresser et télécharger vos fichiers de configuration.

**Pour compresser et télécharger des fichiers source**

1. Créez un fichier .zip avec vos fichiers et nommez-le. `configuration-files.zip` Par exemple, votre fichier .zip peut utiliser la structure suivante :

   ```
   .
   └── appconfig-configurations
       └── MyConfigurations
           ├── us-east-1
           │   └── configuration.json
           └── us-west-2
               └── configuration.json
   ```

1. Dans la console Amazon S3 de votre compartiment, choisissez **Upload** et suivez les instructions pour télécharger votre fichier .zip.

## Étape 3 : Créer votre pipeline
<a name="tutorials-AppConfig-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une action Amazon S3 où les artefacts source sont les fichiers de votre configuration.
+ Une phase de déploiement avec une action AppConfig de déploiement.

**Pour créer un pipeline avec l'assistant**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

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**MyAppConfigPipeline**.

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. À **l'étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **Amazon S3**. Dans **Bucket**, choisissez le nom de votre compartiment source S3. 

   Dans la **clé d'objet S3**, entrez le nom de votre fichier .zip :`configuration-files.zip`.

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Deploy provider**, sélectionnez **AWS AppConfig**. 

   1. Dans **Application**, choisissez le nom de l'application dans laquelle vous l'avez créée AWS AppConfig. Le champ indique l'ID de votre candidature.

   1. Dans **Environnement**, choisissez le nom de l'environnement dans lequel vous l'avez créé AWS AppConfig. Le champ indique l'identifiant de votre environnement.

   1. Dans **Profil de configuration**, choisissez le nom du profil de configuration que vous avez créé dans AWS AppConfig. Le champ indique l'ID de votre profil de configuration.

   1. Dans **Stratégie de déploiement**, choisissez le nom de votre stratégie de déploiement. Il peut s'agir d'une stratégie de déploiement que vous avez créée dans AppConfig ou d'une stratégie que vous avez choisie parmi les stratégies de déploiement prédéfinies dans AppConfig. Le champ indique l'identifiant de votre stratégie de déploiement.

   1. Dans **Chemin de configuration de l'artefact en entrée**, entrez le chemin du fichier. Assurez-vous que le chemin de configuration de votre artefact d'entrée correspond à la structure de répertoire du fichier .zip de votre compartiment S3. Pour cet exemple, entrez le chemin de fichier suivant :`appconfig-configurations/MyConfigurations/us-west-2/configuration.json`. 

   1. Choisissez **Suivant**.

1. À **l'étape 7 : Passez** en revue, passez en revue les informations, puis choisissez **Créer un pipeline**.

## Étape 4 : apporter une modification à n'importe quel fichier source et vérifier le déploiement
<a name="tutorials-AppConfig-verify"></a>

Apportez une modification à vos fichiers source et chargez-la dans votre bucket. Cela déclenche l'exécution de votre pipeline. Vérifiez que votre configuration est disponible en consultant la version.

# Tutoriel : Utiliser un clone complet avec une source de GitHub pipeline
<a name="tutorials-github-gitclone"></a>

Vous pouvez choisir l'option de clonage complet pour votre action GitHub source dans CodePipeline. Utilisez cette option pour exécuter des CodeBuild commandes pour les métadonnées Git dans votre action de création de pipeline.

**Note**  
L'option de clonage complet décrite ici consiste à spécifier si les métadonnées du référentiel CodePipeline doivent être clonées, qui ne peuvent être utilisées que par CodeBuild des commandes. Pour utiliser un [jeton GitHub d'accès utilisateur](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app) à utiliser avec CodeBuild des projets, suivez les étapes décrites ici pour installer le AWS connecteur pour GitHub l'application, puis laissez le champ d'installation de l'application vide. CodeConnections utilisera le jeton d'accès utilisateur pour la connexion.



**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Dans ce didacticiel, vous allez créer un pipeline qui se connecte à votre GitHub dépôt, utilise l'option de clonage complet pour les données source et exécute une CodeBuild version qui clone votre dépôt et exécute les commandes Git pour le référentiel.

**Note**  
Cette fonctionnalité n'est pas disponible dans les régions Asie-Pacifique (Hong Kong), Afrique (Le Cap), Moyen-Orient (Bahreïn), Europe (Zurich) AWS GovCloud ou (USA Ouest). Pour faire référence aux autres actions disponibles, voir[Intégrations de produits et de services avec CodePipeline](integrations.md). Pour les considérations relatives à cette action dans la région Europe (Milan), voir la note dans[CodeStarSourceConnection pour Bitbucket Cloud GitHub, GitHub Enterprise Server, GitLab .com et les actions GitLab autogérées](action-reference-CodestarConnectionSource.md).

**Topics**
+ [Conditions préalables](#tutorials-github-gitclone-prereq)
+ [Étape 1 : Création d'un fichier README](#tutorials-github-gitclone-file)
+ [Étape 2 : Créez votre pipeline et créez votre projet](#tutorials-github-gitclone-pipeline)
+ [Étape 3 : mettre à jour la politique des rôles de CodeBuild service pour utiliser les connexions](#tutorials-github-gitclone-rolepolicy)
+ [Étape 4 : Afficher les commandes du référentiel dans la sortie de compilation](#tutorials-github-gitclone-view)

## Conditions préalables
<a name="tutorials-github-gitclone-prereq"></a>

Avant de commencer, vous devez exécuter les opérations suivantes :
+ Créez un GitHub référentiel avec votre GitHub compte.
+ Préparez vos GitHub informations d'identification. Lorsque vous utilisez le AWS Management Console pour établir une connexion, il vous est demandé de vous connecter avec vos GitHub informations d'identification. 

## Étape 1 : Création d'un fichier README
<a name="tutorials-github-gitclone-file"></a>

Après avoir créé votre GitHub dépôt, procédez comme suit pour ajouter un fichier README.

1. Connectez-vous à votre GitHub dépôt et choisissez votre dépôt.

1. Pour créer un nouveau fichier, choisissez **Ajouter un fichier > Créer un nouveau fichier**. Nommez le fichier`README.md`... fichier et ajoutez le texte suivant.

   ```
   This is a GitHub repository!
   ```

1. Choisissez **Valider les modifications**.

   Assurez-vous que le fichier `README.md` est au niveau racine de votre référentiel.

## Étape 2 : Créez votre pipeline et créez votre projet
<a name="tutorials-github-gitclone-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une connexion à votre GitHub référentiel et une action.
+ Une phase de construction avec une action de AWS CodeBuild construction.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyGitHubPipeline**.

1. Dans **Type de pipeline**, choisissez **V1** pour les besoins de ce didacticiel. Vous pouvez également choisir la **V2** ; toutefois, notez que les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md).

1. Dans **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**.
**Note**  
Si vous choisissez plutôt d'utiliser votre rôle de CodePipeline service existant, assurez-vous d'avoir ajouté l'autorisation `codestar-connections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions relatives au rôle de CodePipeline service, voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Paramètres avancés**, conservez les valeurs par défaut. Dans le **magasin d'artefacts** choisissez **Default location (Emplacement par défaut)** pour utiliser le magasin d'artefacts par défaut, tel que le compartiment d'artefacts Amazon S3 désigné par défaut, pour votre pipeline dans la région que vous avez sélectionnée pour ce dernier.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline.

   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). 

      Installez une application pour toutes vos connexions à un fournisseur particulier. Si vous avez déjà installé le AWS Connector for GitHub app, choisissez-le et ignorez cette étape.
**Note**  
Si vous souhaitez créer un [jeton d'accès utilisateur](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app), assurez-vous d'avoir déjà installé le AWS connecteur pour l' GitHub application, puis laissez le champ Installation de l'application vide. CodeConnections utilisera le jeton d'accès utilisateur pour la connexion. Pour plus d'informations, voir [Accéder à votre fournisseur de source dans CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/access-tokens.html).

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

   1. Dans **Nom de la branche**, choisissez la branche du référentiel que vous souhaitez utiliser.

   1. Veillez à ce que l'option **Démarrer le pipeline lors de la modification du code source** soit sélectionnée.

   1. Sous **Format d'artefact de sortie**, choisissez **Full clone** pour activer l'option Git clone pour le référentiel source. Seules les actions fournies par CodeBuild peuvent utiliser l'option Git clone. [Étape 3 : mettre à jour la politique des rôles de CodeBuild service pour utiliser les connexions](#tutorials-github-gitclone-rolepolicy)Dans ce didacticiel, vous utiliserez cette option pour mettre à jour les autorisations associées à votre rôle de service de CodeBuild projet.

   Choisissez **Suivant**.

1. Dans **Étape 4 : Ajouter une phase de construction**, ajoutez une étape de construction :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.
**Note**  
Notez le nom de votre rôle CodeBuild de service. Vous aurez besoin du nom du rôle pour la dernière étape de ce didacticiel.

   1. Sous **Buildspec**, pour **Build specifications (Spécifications de génération)**, choisissez **Insert build commands (Insérer des commandes de génération)**. Choisissez **Passer à l'éditeur**, puis collez le texte suivant sous **Commandes de génération**.
**Note**  
Dans la `env` section des spécifications de compilation, assurez-vous que l'assistant d'identification pour les commandes git est activé comme indiqué dans cet exemple.

      ```
      version: 0.2
      
      env:
        git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git archive --format=zip HEAD > application.zip
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
          - application.zip
          # - location
        #name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Choisissez **Continuer vers CodePipeline**. Cela revient à la CodePipeline console et crée un CodeBuild projet qui utilise vos commandes de construction pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 3 : mettre à jour la politique des rôles de CodeBuild service pour utiliser les connexions
<a name="tutorials-github-gitclone-rolepolicy"></a>

L'exécution initiale du pipeline échouera car le rôle de CodeBuild service doit être mis à jour avec les autorisations d'utilisation des connexions. Ajoutez l'autorisation `codestar-connections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions sur la mise à jour de la politique dans la console IAM, consultez[Ajoutez CodeBuild GitClone des autorisations pour les connexions à Bitbucket GitHub, GitHub Enterprise Server ou .com GitLab](troubleshooting.md#codebuild-role-connections).

## Étape 4 : Afficher les commandes du référentiel dans la sortie de compilation
<a name="tutorials-github-gitclone-view"></a>

1. Lorsque votre rôle de service est correctement mis à jour, choisissez **Réessayer** en cas d'échec CodeBuild .

1. Une fois le pipeline exécuté avec succès, lors de la phase de construction réussie, choisissez **Afficher les détails**.

   Sur la page de détails, choisissez l'onglet **Logs**. Affichez le résultat CodeBuild de la compilation. Les commandes produisent la valeur de la variable saisie.

   Les commandes affichent le contenu du `README.md` fichier, répertorient les fichiers du répertoire, clonent le référentiel, affichent le journal et archivent le référentiel sous forme de fichier ZIP.

# Tutoriel : Utiliser un clone complet avec une source de CodeCommit pipeline
<a name="tutorials-codecommit-gitclone"></a>

Vous pouvez choisir l'option de clonage complet pour votre action CodeCommit source dans CodePipeline. Utilisez cette option pour autoriser l'accès CodeBuild aux métadonnées Git dans votre action de création de pipeline.

Dans ce didacticiel, vous allez créer un pipeline qui accède à votre CodeCommit dépôt, utilise l'option de clonage complet pour les données source et exécute une CodeBuild version qui clone votre dépôt et exécute les commandes Git pour le référentiel.

**Note**  
CodeBuild les actions sont les seules actions en aval qui prennent en charge l'utilisation des métadonnées Git disponibles avec l'option Git clone. De plus, bien que votre pipeline puisse contenir des actions entre comptes, l' CodeCommitaction et l' CodeBuild action doivent se trouver dans le même compte pour que l'option de clonage complet réussisse.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Topics**
+ [Conditions préalables](#tutorials-codecommit-gitclone-prereq)
+ [Étape 1 : Création d'un fichier README](#tutorials-codecommit-gitclone-file)
+ [Étape 2 : Créez votre pipeline et créez votre projet](#tutorials-codecommit-gitclone-pipeline)
+ [Étape 3 : mettre à jour la politique CodeBuild de rôle de service pour cloner le référentiel](#tutorials-codecommit-gitclone-rolepolicy)
+ [Étape 4 : Afficher les commandes du référentiel dans la sortie de compilation](#tutorials-codecommit-gitclone-view)

## Conditions préalables
<a name="tutorials-codecommit-gitclone-prereq"></a>

Avant de commencer, vous devez créer un CodeCommit référentiel dans le même AWS compte et dans la même région que votre pipeline.

## Étape 1 : Création d'un fichier README
<a name="tutorials-codecommit-gitclone-file"></a>

Suivez ces étapes pour ajouter un fichier README à votre référentiel source. Le fichier README fournit un exemple de fichier source pour l'action CodeBuild en aval à lire.

**Pour ajouter un fichier README**

1. Connectez-vous à votre dépôt et choisissez votre dépôt.

1. Pour créer un nouveau fichier, choisissez **Ajouter un fichier > Créer un fichier**. Nommez le fichier`README.md`... fichier et ajoutez le texte suivant.

   ```
   This is a CodeCommit repository!
   ```

1. Choisissez **Valider les modifications**.

   Assurez-vous que le fichier `README.md` est au niveau racine de votre référentiel.

## Étape 2 : Créez votre pipeline et créez votre projet
<a name="tutorials-codecommit-gitclone-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une action CodeCommit source.
+ Une phase de construction avec une action de AWS CodeBuild construction.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyCodeCommitPipeline**.

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 du service**, sélectionnez l'une des options suivantes :
   + Choisissez **Existing service role (Rôle de service existant)**.
   + Choisissez votre rôle CodePipeline de service actuel. Ce rôle doit disposer de l'autorisation `codecommit:GetRepository` IAM relative à votre politique de rôle de service. Voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Paramètres avancés**, conservez les valeurs par défaut. Choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter un stage source**, procédez comme suit :

   1. Dans **Fournisseur de source**, choisissez **CodeCommit**.

   1. Dans **Nom du dépôt**, choisissez le nom de votre dépôt.

   1. Dans **Nom de la succursale**, choisissez le nom de votre succursale.

   1. Veillez à ce que l'option **Démarrer le pipeline lors de la modification du code source** soit sélectionnée.

   1. Sous **Format d'artefact de sortie**, choisissez **Full clone** pour activer l'option Git clone pour le référentiel source. Seules les actions fournies par CodeBuild peuvent utiliser l'option Git clone. 

   Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, procédez comme suit :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.
**Note**  
Notez le nom de votre rôle CodeBuild de service. Vous aurez besoin du nom du rôle pour la dernière étape de ce didacticiel.

   1. Sous **Buildspec**, pour **Build specifications (Spécifications de génération)**, choisissez **Insert build commands (Insérer des commandes de génération)**. Choisissez **Passer à l'éditeur**, puis sous **Commandes de génération**, collez le code suivant.

      ```
      version: 0.2
      
      env:
        git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
            # name: version
          #commands:
            # - command
            # - command
        pre_build:
          commands:
            - ls -lt
            - cat README.md
        build:
          commands:
            - git log | head -100
            - git status
            - ls
            - git describe --all
        #post_build:
          #commands:
            # - command
            # - command
      #artifacts:
        #files:
          # - location
        #name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Choisissez **Continuer vers CodePipeline**. Cela vous ramène à la CodePipeline console et crée un CodeBuild projet qui utilise vos commandes de génération pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 3 : mettre à jour la politique CodeBuild de rôle de service pour cloner le référentiel
<a name="tutorials-codecommit-gitclone-rolepolicy"></a>

L'exécution initiale du pipeline échouera car vous devez mettre à jour le rôle de CodeBuild service avec les autorisations nécessaires pour extraire des données de votre référentiel.

Ajoutez l'autorisation `codecommit:GitPull` IAM à votre politique de rôle de service. Pour obtenir des instructions sur la mise à jour de la politique dans la console IAM, consultez[Ajouter CodeBuild GitClone des autorisations pour les actions CodeCommit source](troubleshooting.md#codebuild-role-codecommitclone).

## Étape 4 : Afficher les commandes du référentiel dans la sortie de compilation
<a name="tutorials-codecommit-gitclone-view"></a>

**Pour afficher le résultat de la compilation**

1. Lorsque votre rôle de service est correctement mis à jour, choisissez **Réessayer** en cas d'échec CodeBuild .

1. Une fois le pipeline exécuté avec succès, lors de la phase de construction réussie, choisissez **Afficher les détails**.

   Sur la page de détails, choisissez l'onglet **Logs**. Affichez le résultat CodeBuild de la compilation. Les commandes produisent la valeur de la variable saisie.

   Les commandes affichent le contenu du `README.md` fichier, répertorient les fichiers du répertoire, clonent le référentiel, affichent le journal et s'exécutent`git describe --all`. 

# Tutoriel : Création d'un pipeline avec des actions AWS CloudFormation StackSets de déploiement
<a name="tutorials-stackset-deployment"></a>

Dans ce didacticiel, vous allez utiliser la AWS CodePipeline console pour créer un pipeline avec des actions de déploiement permettant de créer un ensemble de piles et de créer des instances de pile. Lorsque le pipeline s'exécute, le modèle crée un ensemble de piles et crée et met à jour les instances dans lesquelles l'ensemble de piles est déployé.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

Il existe deux manières de gérer les autorisations pour un ensemble de piles : les rôles IAM autogérés et les rôles AWS IAM gérés. Ce didacticiel fournit des exemples d'autorisations autogérées.

Pour utiliser Stacksets de la manière la plus efficace possible CodePipeline, vous devez avoir une compréhension claire des concepts sous-jacents CloudFormation StackSets et de leur fonctionnement. Voir les [StackSets concepts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) dans le *guide de AWS CloudFormation l'utilisateur*.

**Topics**
+ [Conditions préalables](#tutorials-stackset-deployment-prereq)
+ [Étape 1 : télécharger le AWS CloudFormation modèle d'exemple et le fichier de paramètres](#tutorials-stackset-deployment-upload)
+ [Étape 2 : Créer votre pipeline](#tutorials-stackset-action-pipeline)
+ [Étape 3 : Afficher le déploiement initial](#tutorials-stackset-action-initial)
+ [Étape 4 : Ajouter une CloudFormationStackInstances action](#tutorials-stacksets-instances)
+ [Étape 5 : Afficher les ressources du stack set pour votre déploiement](#tutorials-stacksets-view)
+ [Étape 6 : Mettre à jour votre stack set](#tutorials-stacksets-update)

## Conditions préalables
<a name="tutorials-stackset-deployment-prereq"></a>

Pour les opérations de stack set, vous utilisez deux comptes différents : un compte d'administration et un compte cible. Vous créez des ensembles de piles dans le compte administrateur. Vous créez des piles individuelles qui appartiennent à un ensemble de piles dans le compte cible.

**Pour créer un rôle d'administrateur avec votre compte d'administrateur**
+ Suivez les instructions de la section [Configurer les autorisations de base pour les opérations de stack set](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). Votre rôle doit être nommé **`AWSCloudFormationStackSetAdministrationRole`**.

**Pour créer un rôle de service dans le compte cible**
+ Créez un rôle de service dans le compte cible qui fait confiance au compte administrateur. Suivez les instructions de la section [Configurer les autorisations de base pour les opérations de stack set](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). Votre rôle doit être nommé **`AWSCloudFormationStackSetExecutionRole`**. 

## Étape 1 : télécharger le AWS CloudFormation modèle d'exemple et le fichier de paramètres
<a name="tutorials-stackset-deployment-upload"></a>

Créez un compartiment source pour vos fichiers de modèles et de paramètres de stack set. Téléchargez l'exemple de fichier AWS CloudFormation modèle, configurez un fichier de paramètres, puis compressez les fichiers avant de les télécharger dans votre compartiment source S3.

**Note**  
Assurez-vous de compresser les fichiers source avant de les télécharger dans votre compartiment source S3, même si le seul fichier source est le modèle.



**Pour créer un compartiment source S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez **Créer un compartiment**.

1. Pour **Bucket name (Nom de compartiment)**, saisissez un nom pour le compartiment.

   Dans **Région**, choisissez la région dans laquelle vous souhaitez créer votre pipeline. Choisissez **Créer un compartiment**.

1. Une fois le compartiment créé, une bannière de réussite apparaît. Choisissez **Go to bucket details (Accéder aux détails du compartiment)**.

1. Dans l'onglet **Propriétés**, choisissez **Versioning**. Choisissez **Activer la gestion des versions**, puis **Enregistrer**.

**Pour créer le fichier AWS CloudFormation modèle**

1. Téléchargez l'exemple de fichier modèle suivant pour générer CloudTrail la configuration des ensembles de piles :[https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml).

1. Enregistrez le fichier sous le nom `template.yml`.

**Pour créer le fichier parameters.txt**

1. Créez un fichier contenant les paramètres de votre déploiement. Les paramètres sont des valeurs que vous souhaitez mettre à jour dans votre pile lors de l'exécution. Le fichier d'exemple suivant met à jour les paramètres du modèle de votre ensemble de piles afin de permettre la journalisation, la validation et les événements globaux.

   ```
   [
     {
       "ParameterKey": "EnableLogFileValidation",
       "ParameterValue": "true"
     }, 
     {
       "ParameterKey": "IncludeGlobalEvents",
       "ParameterValue": "true"
     }
   ]
   ```

1. Enregistrez le fichier sous le nom `parameters.txt`.

**Pour créer le fichier accounts.txt**

1. Créez un fichier avec les comptes sur lesquels vous souhaitez créer des instances, comme indiqué dans l'exemple de fichier suivant.

   ```
   [
       "111111222222","333333444444"
   ]
   ```

1. Enregistrez le fichier sous le nom `accounts.txt`.

**Pour créer et télécharger des fichiers source**

1. Combinez les fichiers dans un seul fichier ZIP. Vos fichiers devraient ressembler à ceci dans votre fichier ZIP.

   ```
   template.yml
   parameters.txt
   accounts.txt
   ```

1. Téléchargez le fichier ZIP dans votre compartiment S3. Ce fichier est l'artefact source créé par l'assistant de **création de pipeline** pour votre action de déploiement dans CodePipeline.

## Étape 2 : Créer votre pipeline
<a name="tutorials-stackset-action-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une action source S3 où l'artefact source est votre fichier modèle et tous les fichiers source associés.
+ Une phase de déploiement avec une action de déploiement d'un ensemble de CloudFormation piles qui crée l'ensemble de piles.
+ Une phase de déploiement avec une action de déploiement d'instances de CloudFormation pile qui crée les piles et les instances au sein des comptes cibles.

**Pour créer un pipeline avec une CloudFormationStackSet action**

1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'[adresse http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyStackSetsPipeline**.

1. Dans **Type de pipeline**, choisissez **V1** pour les besoins de ce didacticiel. Vous pouvez également choisir la **V2** ; toutefois, notez que les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour de plus amples informations, veuillez consulter [Types de pipelines](pipeline-types.md).

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. Dans **Artifact Store, conservez** les valeurs par défaut.
**Note**  
Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline. Lorsque vous créez ou modifiez un pipeline, vous devez disposer d'un compartiment d'artefacts dans la région du pipeline et d'un compartiment d'artefacts par AWS région dans laquelle vous exécutez une action.  
Pour plus d’informations, consultez [Artefacts d'entrée et de sortie](welcome-introducing-artifacts.md) et [CodePipeline référence de structure de pipeline](reference-pipeline-structure.md).

   Choisissez **Suivant**.

1. Sur la page **Étape 3 : Ajouter une étape source**, dans **Source provider**, choisissez **Amazon S3**.

1. Dans **Bucket**, entrez le compartiment source S3 que vous avez créé pour ce didacticiel, tel que`BucketName`. Dans la **clé d'objet S3**, entrez le chemin du fichier et le nom de fichier de votre fichier ZIP, par exemple`MyFiles.zip`.

1. Choisissez **Suivant**.

1. À **l'étape 4 : Ajouter une phase de construction**, choisissez **Ignorer l'étape** de génération, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. 

   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. À **l'étape 6 : Ajouter une phase de déploiement** :

   1. Dans **Deploy provider**, choisissez **AWS CloudFormation Stack Set**.

   1. Dans **Nom de l'ensemble de piles**, entrez le nom de l'ensemble de piles. Il s'agit du nom de l'ensemble de piles créé par le modèle.
**Note**  
Notez le nom de votre stack set. Vous l'utiliserez lorsque vous ajouterez la deuxième action de StackSets déploiement à votre pipeline.

   1. Dans **Chemin du modèle**, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé votre fichier modèle. Par exemple, entrez ce qui suit en utilisant le nom `SourceArtifact` de l'artefact source par défaut.

      ```
      SourceArtifact::template.yml
      ```

   1. Dans **Cibles de déploiement**, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé le fichier de vos comptes. Par exemple, entrez ce qui suit en utilisant le nom `SourceArtifact` de l'artefact source par défaut.

      ```
      SourceArtifact::accounts.txt
      ```

   1. Dans **Cible de déploiement Régions AWS**, entrez une région pour le déploiement de votre instance de pile initiale, telle que`us-east-1`.

   1. Élargissez les **options de déploiement**. Dans **Paramètres**, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé votre fichier de paramètres. Par exemple, entrez ce qui suit en utilisant le nom `SourceArtifact` de l'artefact source par défaut.

      ```
      SourceArtifact::parameters.txt
      ```

      Pour entrer les paramètres sous forme d'entrée littérale plutôt que de chemin de fichier, entrez ce qui suit :

      ```
      ParameterKey=EnableLogFileValidation,ParameterValue=true
      ParameterKey=IncludeGlobalEvents,ParameterValue=true
      ```

   1. Dans **Capabilities**, sélectionnez CAPABILITY\$1IAM et CAPABILITY\$1NAMED\$1IAM.

   1. Dans **Modèle d'autorisation**, choisissez SELF\$1MANAGED.

   1. Dans **Pourcentage de tolérance aux défaillances**, entrez`20`.

   1. Dans **Pourcentage maximal de simultanés**, entrez`25`.

   1. Choisissez **Suivant**.

   1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**. Votre pipeline s'affiche. 

   1. Autorisez votre pipeline s'exécuter. 

## Étape 3 : Afficher le déploiement initial
<a name="tutorials-stackset-action-initial"></a>

Consultez les ressources et le statut de votre déploiement initial. Après avoir vérifié que le déploiement a bien créé votre stack set, vous pouvez ajouter la deuxième action à votre étape de **déploiement**.

**Pour consulter les ressources**

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

1. Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez l' CloudFormation action sur l'**CloudFormationStackSet**action de votre pipeline. Le modèle, les ressources et les événements de votre stack set sont affichés dans la CloudFormation console.

1. Dans le panneau de navigation de gauche, choisissez **StackSets**. Dans la liste, choisissez le nouvel ensemble de piles.

1. Choisissez l'onglet **Stack instances**. Vérifiez qu'une instance de stack pour chaque compte que vous avez fourni a été créée dans la région us-east-1. Vérifiez que le statut de chaque instance de pile est`CURRENT`.

## Étape 4 : Ajouter une CloudFormationStackInstances action
<a name="tutorials-stacksets-instances"></a>

Créez une action suivante dans votre pipeline qui permettra de CloudFormation StackSets créer les instances de pile restantes.

**Pour créer une action suivante dans votre pipeline**

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

   Sous **Pipelines**, choisissez votre pipeline et choisissez **Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez de modifier le pipeline. Le pipeline s'affiche en mode **édition**. 

1. À l'étape du **déploiement**, choisissez **Modifier**.

1. Sous l'action de déploiement **AWS CloudFormation Stack Set**, choisissez **Ajouter un groupe d'actions**.

1. Sur la page **Modifier l'action**, ajoutez les détails de l'action :

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

   1. Dans **Action provider**, sélectionnez **AWS CloudFormation Stack Instances**.

   1. Sous **Artefacts d'entrée**, sélectionnez **SourceArtifact**.

   1. Dans **Nom de l'ensemble de piles**, entrez le nom de l'ensemble de piles. Il s'agit du nom du stack set que vous avez fourni lors de la première action.

   1. Dans **Cibles de déploiement**, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé le fichier de vos comptes. Par exemple, entrez ce qui suit en utilisant le nom `SourceArtifact` de l'artefact source par défaut.

      ```
      SourceArtifact::accounts.txt
      ```

   1. Dans **Cible de déploiement Régions AWS**, entrez les régions pour le déploiement de vos instances de stack restantes, telles que `us-east-2` et `eu-central-1` comme suit :

      ```
      us-east2, eu-central-1
      ```

   1. Dans **Pourcentage de tolérance aux défaillances**, entrez`20`.

   1. Dans **Pourcentage maximal de simultanés**, entrez`25`.

   1. Choisissez **Enregistrer**.

   1. .Publiez manuellement une modification. Votre pipeline mis à jour s'affiche avec deux actions dans la phase de déploiement.

## Étape 5 : Afficher les ressources du stack set pour votre déploiement
<a name="tutorials-stacksets-view"></a>

Vous pouvez consulter les ressources et le statut du déploiement de votre stack set.

**Pour consulter les ressources**

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

1. Sous **Pipelines**, choisissez votre pipeline, puis cliquez **sur Afficher**. Le schéma illustre les étapes source et de déploiement de votre pipeline.

1. Choisissez l' CloudFormation action sur l'**`AWS CloudFormation Stack Instances`**action de votre pipeline. Le modèle, les ressources et les événements de votre stack set sont affichés dans la CloudFormation console.

1. Dans le panneau de navigation de gauche, choisissez **StackSets**. Dans la liste, choisissez votre ensemble de piles.

1. Choisissez l'onglet **Stack instances**. Vérifiez que toutes les instances de stack restantes pour chaque compte que vous avez fourni ont été créées ou mises à jour dans les régions attendues. Vérifiez que le statut de chaque instance de pile est`CURRENT`.

## Étape 6 : Mettre à jour votre stack set
<a name="tutorials-stacksets-update"></a>

Mettez à jour votre stack set et déployez la mise à jour sur les instances. Dans cet exemple, vous modifiez également les cibles de déploiement que vous souhaitez désigner pour la mise à jour. Les instances qui ne font pas partie de la mise à jour passent à un statut obsolète.

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

1. Sous **Pipelines**, choisissez votre pipeline, puis sélectionnez **Modifier**. À l'étape du **déploiement**, choisissez **Modifier**.

1. Choisissez de modifier l'action **AWS CloudFormation Stack Set** dans votre pipeline. Dans **Description**, remplacez la description existante par une nouvelle description pour l'ensemble de piles.

1. Choisissez de modifier l'action **AWS CloudFormation Stack Instances** dans votre pipeline. Dans **Cible de déploiement Régions AWS**, supprimez la `us-east-2` valeur saisie lors de la création de l'action.

1. Enregistrez les Modifications. Choisissez **Libérer la modification** pour exécuter votre pipeline.

1. Ouvrez votre action dans CloudFormation. Choisissez l'onglet **StackSet Info**. Dans **StackSet la description**, vérifiez que la nouvelle description est affichée.

1. Choisissez l'onglet **Stack instances**. Sous **Status**, vérifiez que le statut des instances de pile dans us-east-2 est. `OUTDATED`

# Tutoriel : Création d'une règle de vérification des variables pour un pipeline comme condition d'entrée
<a name="tutorials-varcheckrule"></a>

Dans ce didacticiel, vous allez configurer un pipeline qui fournit en continu des fichiers en GitHub tant que fournisseur d'actions source dans votre stage source. Le pipeline terminé détecte les modifications apportées lorsque vous modifiez les fichiers source dans votre référentiel source. Le pipeline s'exécute puis vérifie les variables de sortie par rapport au nom du référentiel source et au nom de la branche fournis dans les conditions d'entrée dans la phase de construction.

**Important**  
Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

**Important**  
La plupart des actions que vous ajoutez à votre pipeline dans le cadre de cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région que celle où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).   
Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour de plus amples informations, veuillez consulter [Ajouter une action interrégionale dans CodePipeline](actions-create-cross-region.md).

Cet exemple utilise l'exemple de pipeline avec une action source GitHub (Version2) et une action de CodeBuild génération dans laquelle la condition d'entrée pour la phase de génération vérifiera la présence de variables.

## Conditions préalables
<a name="tutorials-varcheckrule-prereq"></a>

Avant de commencer, vous devez exécuter les opérations suivantes :
+ Créez un GitHub référentiel avec votre GitHub compte.
+ Préparez vos GitHub informations d'identification. Lorsque vous utilisez le AWS Management Console pour établir une connexion, il vous est demandé de vous connecter avec vos GitHub informations d'identification. 
+ Une connexion à votre référentiel à configurer GitHub (via GitHub l'application) comme action source pour votre pipeline. Pour créer une connexion à votre GitHub dépôt, consultez[GitHub connexions](connections-github.md).

## Étape 1 : créer un exemple de fichier source et l'ajouter à votre GitHub référentiel
<a name="tutorials-varcheckrule-push"></a>

Dans cette section, vous allez créer et ajouter votre exemple de fichier source au référentiel que le pipeline utilise pour votre étape source. Dans cet exemple, vous produisez et ajoutez les éléments suivants : 
+ Un fichier `README.md`.

Après avoir créé votre GitHub dépôt, procédez comme suit pour ajouter votre fichier README.

1. Connectez-vous à votre GitHub dépôt et choisissez votre dépôt.

1. Pour créer un nouveau fichier, choisissez **Ajouter un fichier**, puis **Créer un nouveau fichier**. Nommez le fichier `README.md` et ajoutez le texte suivant.

   ```
   This is a GitHub repository!
   ```

1. Choisissez **Valider les modifications**. Dans le cadre de ce didacticiel, ajoutez un message de validation contenant le mot « Update » en majuscule, comme dans l'exemple suivant :

   ```
   Update to source files
   ```
**Note**  
La vérification des règles pour les chaînes fait la distinction majuscules/minuscules.

   Assurez-vous que le fichier `README.md` est au niveau racine de votre référentiel.

## Étape 2 : Créer votre pipeline
<a name="tutorials-varcheckrule-create-pipeline"></a>

Dans cette section, vous créez un pipeline avec les actions suivantes :
+ Un stage source avec une connexion à votre GitHub référentiel et une action.
+ Une phase de CodeBuild construction dans laquelle une condition On Entry est configurée pour la règle de vérification des variables.

**Pour créer un pipeline avec l'assistant**

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

1. Sur la page **Bienvenue**, **Démarrez** ou **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**MyVarCheckPipeline**.

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 **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**.
**Note**  
Si vous choisissez plutôt d'utiliser votre rôle de CodePipeline service existant, assurez-vous d'avoir ajouté l'autorisation `codeconnections:UseConnection` IAM à votre politique de rôle de service. Pour obtenir des instructions relatives au rôle de CodePipeline service, voir [Ajouter des autorisations au rôle CodePipeline de service](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services).

1. Sous **Paramètres avancés**, conservez les valeurs par défaut.

   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 **Nom de la branche**, choisissez la branche du référentiel que vous souhaitez utiliser.

   1. Assurez-vous que l'option **Aucun déclencheur** est sélectionnée.

   Choisissez **Suivant**.

1. Dans **Étape 4 : Ajouter une phase de construction**, ajoutez une étape de construction :

   1. Dans le champ **Fournisseur de génération**, choisissez **AWS CodeBuild**. Acceptez la région du pipeline comme **Région** par défaut.

   1. Sélectionnez **Create a project (Créer un projet)**.

   1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération.

   1. Dans le champ **Image d'environnement**, choisissez **Image gérée**. Pour **Système d'exploitation**, choisissez **Ubuntu**.

   1. Pour **Runtime (Exécution)**, sélectionnez **Standard**. **Pour **Image**, choisissez aws/codebuild/standard : 5.0.**

   1. Pour **Rôle de service**, choisissez **Nouveau rôle de service**.
**Note**  
Notez le nom de votre rôle CodeBuild de service. Vous aurez besoin du nom du rôle pour la dernière étape de ce didacticiel.

   1. Sous **Buildspec**, pour **Build specifications (Spécifications de génération)**, choisissez **Insert build commands (Insérer des commandes de génération)**. Choisissez **Passer à l'éditeur**, puis collez le texte suivant sous **Commandes de génération**.

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - 
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. Choisissez **Continuer vers CodePipeline**. Cela revient à la CodePipeline console et crée un CodeBuild projet qui utilise vos commandes de construction pour la configuration. Le projet de construction utilise un rôle de service pour gérer les Service AWS autorisations. Cette étape peut prendre quelques minutes.

   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 phase de déploiement**, choisissez **Ignorer l'étape de déploiement**, puis acceptez le message d'avertissement en choisissant à nouveau **Ignorer**. Choisissez **Suivant**.

1. À **l'étape 7 : Révision**, choisissez **Créer un pipeline**.

## Étape 2 : Modifier la phase de construction pour ajouter la condition et la règle
<a name="tutorials-varcheckrule-create-condition"></a>

Au cours de cette étape, vous modifiez l'étape pour ajouter une condition On Entry pour la règle de vérification des variables.

1. Choisissez votre pipeline, puis sélectionnez **Modifier**. Choisissez d'ajouter une règle de saisie lors de la phase de création. 

   Dans **Fournisseur de règles**, sélectionnez **VariableCheck**.

1. Dans **Variable**, entrez la ou les variables que vous souhaitez vérifier. Dans **Valeur**, entrez la valeur de chaîne à comparer à la variable résolue. Dans les exemples d'écrans suivants, une règle est créée pour une vérification « égale », et une autre règle est créée pour une vérification « contient ».  
![\[La page de création de règles pour la vérification de la variable « equals »\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/varcheck-tut-create-rule-equals.png)  
![\[La page de création de règles pour la vérification de la variable « contient »\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/varcheck-tut-create-rule-contains.png)

1. Choisissez **Enregistrer**. 

   Sélectionnez **Exécuté**.

## Étape 3 : Exécuter le pipeline et afficher les variables résolues
<a name="tutorials-varcheckrule-run"></a>

Au cours de cette étape, vous visualisez les valeurs résolues et les résultats de la règle de vérification des variables.

1. Affichez l'exécution résolue une fois la vérification des règles réussie, comme indiqué dans l'exemple suivant.  
![\[La course réussie\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/varcheck-tut-run-succeeded.png)

1. Consultez les informations sur les variables dans l'onglet **Chronologie**.   
![\[La page d'historique affichant l'onglet Chronologie avec les variables a réussi\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/varcheck-tut-history.png)