Tutoriel : Création d'un pipeline qui utilise des variables issues d'actions de AWS CloudFormation déploiement - AWS CodePipeline

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

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.

Conditions préalables : créer un rôle AWS CloudFormation de service et un référentiel CodeCommit

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 (CodeCommitréférentiel).

  • Cet exemple crée une pile Amazon DocumentDB à partir d'un modèle. Vous devez utiliser AWS Identity and Access Management (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

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 page de modèle de votre région. Par exemple, la page pour us-west-2 est à l'adresse https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html. Sous Amazon DocumentDB, téléchargez le modèle d'un cluster Amazon DocumentDB. Le nom du fichier est documentdb_full_stack.yaml.

  2. 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.
    2. Pour cet exemple, ajoutez la sortie StackName suivante à votre section Outputs: du modèle.

      StackName: Value: !Ref AWS::StackName
  3. 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.

    2. Choisissez Ajouter un fichier, puis choisissez Charger le fichier.

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

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

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.

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

  3. Dans l'Étape 1 : Choisir les paramètres d'un pipeline, dans Nom du pipeline, saisissez MyCFNDeployPipeline.

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

  5. Dans Rôle du service, sélectionnez l'une des options suivantes :

    • Choisissez Nouveau rôle de service pour CodePipeline autoriser la création d'un rôle de service dansIAM.

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

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

    2. 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 et CodePipeline référence de structure de pipeline.

    Choisissez Suivant.

  7. Dans Étape 2 : Ajouter une étape source :

    1. Dans Fournisseur de source, choisissez AWS CodeCommit.

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

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

  8. Dans Step 3: Add build stage (Étape 3 : 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).

    Choisissez Suivant.

  9. Dans Étape 4 : Ajouter une étape de déploiement :

    1. Dans Nom de l'action, choisissez Déployer. Dans Fournisseur de déploiement, choisissez CloudFormation.

    2. Dans Mode d'action, choisissez Créer ou mettre à jour une pile.

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

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

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

    6. Choisissez Suivant.

    7. Choisissez Créer un 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 AWS CloudFormation de déploiement pour créer l'ensemble de modifications

Créez une action suivante dans votre pipeline qui permettra de AWS 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/.

    Sous Pipelines, choisissez votre pipeline et choisissez Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  2. Choisissez de modifier le pipeline ou continuez à l'afficher en mode Edition.

  3. Choisissez de modifier l'étape de déploiement.

  4. 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_Set. Dans Action provider, sélectionnez AWS CloudFormation .

    2. Dans Artefact d'entrée, sélectionnez SourceArtifact.

    3. Dans Mode d'action, choisissez Créer ou remplacer un jeu de modifications.

    4. 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}
    5. Dans Nom du jeu de modifications, entrez le nom du jeu de modifications.

      my-changeset
    6. 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"}
    7. Choisissez Terminé pour enregistrer l'action.

Étape 4 : Ajouter une action d'approbation manuelle

Créez une action d'approbation manuelle dans votre pipeline.

  1. Choisissez de modifier le pipeline ou continuez à l'afficher en mode Edition.

  2. Choisissez de modifier l'étape de déploiement.

  3. 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 AWS 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

Créez une action suivante dans votre pipeline qui permet d' AWS 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/.

    Sous Pipelines, choisissez votre pipeline et choisissez Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  2. Choisissez de modifier le pipeline ou continuez à l'afficher en mode Edition.

  3. Choisissez de modifier l'étape de déploiement.

  4. 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_Change_Set. Dans Action provider, sélectionnez AWS CloudFormation.

    2. Dans Artefact d'entrée, sélectionnez SourceArtifact.

    3. Dans Action mode (Mode d'action), choisissez Execute a change set (Exécuter un jeu de modifications).

    4. 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}
    5. 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
    6. Choisissez Terminé pour enregistrer l'action.

    7. Continuez l'exécution du pipeline.

Étape 6 : ajouter une action CloudFormation de déploiement pour supprimer la pile

Créez une action finale dans votre pipeline qui permet d' AWS 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/.

    Sous Pipelines, choisissez votre pipeline et choisissez Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  2. Choisissez de modifier le pipeline.

  3. Choisissez de modifier l'étape de déploiement.

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

    2. Dans Mode d'action, choisissez Supprimer une pile.

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

    4. Choisissez Terminé pour enregistrer l'action.

    5. Choisissez Save (Enregistrer) pour enregistrer la stratégie.

    Le pipeline s'exécute lorsqu'il est enregistré.