

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