

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel : Cré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é.