AWS CodePipeline - Guide de l`utilisateur

Transcription

AWS CodePipeline - Guide de l`utilisateur
AWS CodePipeline
Guide de l'utilisateur
Version 09/07/2015
AWS CodePipeline Guide de l'utilisateur
AWS CodePipeline Guide de l'utilisateur
AWS CodePipeline: Guide de l'utilisateur
Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any
manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other
trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to,
or sponsored by Amazon.
AWS CodePipeline Guide de l'utilisateur
Table of Contents
Qu'est-ce qu'AWS CodePipeline ? ................................................................................................... 1
Vidéo de présentation d'AWS CodePipeline .............................................................................. 1
Que puis-je faire avec AWS CodePipeline ? ............................................................................. 1
Aperçu rapide d'AWS CodePipeline ......................................................................................... 2
Comment démarrer avec AWS CodePipeline ? .......................................................................... 3
Nous voulons entendre parler de vous ..................................................................................... 3
Concepts ..................................................................................................................................... 4
Livraison continue et intégration .............................................................................................. 4
Fonctionnement d'AWS CodePipeline ...................................................................................... 4
Exécution d'un pipeline .......................................................................................................... 8
Intégrations de produits et services ................................................................................................ 10
Intégrations d'actions source ................................................................................................. 10
Intégrations d'actions de génération ....................................................................................... 12
Intégrations d'actions de test ................................................................................................. 14
Intégrations d'actions de déploiement ..................................................................................... 14
Intégrations d'actions d'approbation ........................................................................................ 17
Intégrations d'actions d'appel ................................................................................................ 17
Intégrations générales avec AWS CodePipeline ....................................................................... 17
Exemples d'intégration issus de la communauté ...................................................................... 18
Billets de blogs ........................................................................................................... 18
Vidéos ....................................................................................................................... 20
Configuration .............................................................................................................................. 22
Etape 1 : Créer un compte AWS ........................................................................................... 22
Etape 2 : Créer ou utiliser un utilisateur IAM ............................................................................ 22
Etape 3 : Utiliser une stratégie gérée IAM pour attribuer des autorisations AWS CodePipeline à
l'utilisateur IAM ................................................................................................................... 22
Etape 4 : Installation de l'AWS CLI ......................................................................................... 23
Etape 5 : Ouvrir la console pour AWS CodePipeline ................................................................. 24
Etapes suivantes ................................................................................................................. 24
Mise en route ............................................................................................................................. 25
Procédure pas à pas avec pipeline simple (compartiment Amazon S3) ........................................ 26
Créer un compartiment Amazon S3 ............................................................................... 26
Création de ressources AWS CodeDeploy ...................................................................... 27
Création de votre premier pipeline ................................................................................. 29
Ajout d'une étape supplémentaire .................................................................................. 33
Activation et désactivation des transitions entre les étapes ................................................. 39
Nettoyage des ressources ............................................................................................ 40
Procédure pas à pas avec pipeline simple (référentiel AWS CodeCommit) .................................... 41
Création d'un référentiel AWS CodeCommit .................................................................... 42
Téléchargement, validation et publication de votre code .................................................... 42
Création d'une instance Amazon EC2 et installation de l'agent AWS CodeDeploy ................... 43
Création d'une application dans AWS CodeDeploy ........................................................... 45
Création de votre premier pipeline ................................................................................. 46
Mise à jour du code de votre référentiel AWS CodeCommit ............................................... 51
Tâches facultatives de gestion de l'étape ........................................................................ 53
Nettoyage des ressources ............................................................................................ 53
Didacticiel avec pipeline à quatre étapes ................................................................................ 53
Définition des prérequis ................................................................................................ 54
Création d'un pipeline .................................................................................................. 56
Ajout d'étapes supplémentaires ..................................................................................... 58
Nettoyage des ressources ............................................................................................ 60
Création d'un pipeline .................................................................................................................. 62
Création d'un pipeline (Console) ............................................................................................ 62
Création d'un pipeline (Interface de ligne de commande) ........................................................... 66
Créer le fichier JSON .................................................................................................. 67
Version 09/07/2015
iv
AWS CodePipeline Guide de l'utilisateur
Exécutez la commande create-pipeline ........................................................................... 69
Modification d'un pipeline ............................................................................................................. 70
Modification d'un pipeline (Console) ....................................................................................... 70
Modification d'un pipeline (AWS CLI) ...................................................................................... 72
Gestion des actions d'approbation dans les pipelines ........................................................................ 76
Options de configuration pour les actions d'approbation manuelle ............................................... 76
Conditions préalables et processus pour les actions d'approbation .............................................. 77
Accorder des autorisations d'approbation à un utilisateur IAM dans AWS CodePipeline ................... 78
Octroi de droits d'approbation pour tous les pipelines et les actions d'approbation .................. 79
Spécifiez l'autorisation d'approbation pour les pipelines et les actions d'approbation
spécifiques ................................................................................................................. 79
Attribution d'autorisations Amazon SNS à un rôle de service ...................................................... 80
Ajout d'une action d'approbation manuelle ............................................................................... 81
Ajouter une action d'approbation manuelle à un pipeline AWS CodePipeline (Console) ............ 81
Ajout d'une action d'approbation manuelle à un pipeline AWS CodePipeline (interface de
ligne de commande) .................................................................................................... 83
Approbation ou rejet d'une action d'approbation ....................................................................... 85
Approbation ou rejet d'une action d'approbation (Console) ................................................. 86
Approbation ou rejet d'une demande d'approbation (interface de ligne de commande) ............. 87
Format de données JSON pour les notifications d'approbation manuelle ...................................... 88
Nouvelle tentative des actions ayant échoué ................................................................................... 90
Nouvelle tentative d'actions ayant échoué (Console) ................................................................. 91
Nouvelle tentative des actions échouées (interface de ligne de commande) .................................. 91
Désactivation ou activation des transitions ...................................................................................... 93
Désactivation ou activation des transitions (Console) ................................................................ 93
Désactivation ou activation des transitions (interface de ligne de commande) ................................ 95
Suppression d'un pipeline ............................................................................................................. 96
Suppression d'un pipeline (Console) ...................................................................................... 96
Suppression d'un pipeline (interface de ligne de commande) ...................................................... 96
Suivi des pipelines ...................................................................................................................... 98
Journalisation des appels de l'API avec CloudTrail ................................................................... 99
Informations AWS CodePipeline dans CloudTrail ............................................................. 99
Présentation des entrées des fichiers journaux AWS CodePipeline ...................................... 99
Affichage d'un pipeline ....................................................................................................... 101
Affichage d'un pipeline (Console) ................................................................................. 101
Affichage d'un pipeline (interface de ligne de commande) ................................................ 103
Affichage des détails de la révision source actuelle d'un pipeline ............................................... 105
Affichage des détails de la révision source actuelle dans un pipeline (Console) .................... 105
Affichage des détails de la révision source actuelle dans un pipeline (interface de ligne de
commande) .............................................................................................................. 106
Tâches avancées ...................................................................................................................... 108
Création d'une action personnalisée pour un pipeline .............................................................. 108
Création d'une action personnalisée (interface de ligne de commande) ............................... 109
Création d'une tâche de travail pour l'action personnalisée ............................................... 112
Ajout d'une action personnalisée à un pipeline ............................................................... 118
Nouvelle exécution manuelle d'un pipeline ............................................................................. 120
Nouvelle exécution manuelle d'une révision via un pipeline (Console) ................................ 120
Lancement manuel d'un pipeline (interface de ligne de commande) ................................... 121
Création d'un pipeline qui utilise des ressources d'un autre compte ........................................... 121
Conditions préalables : Créer une clé de chiffrement AWS KMS ........................................ 122
Etape 1 : Configurer des stratégies de compte et des rôles .............................................. 123
Etape 2 : Modifier le pipeline ....................................................................................... 129
Intégration des fonctions Lambda dans les pipelines ............................................................... 131
Etape 1 : Créer un pipeline ......................................................................................... 132
Etape 2 : Créer la fonction Lambda .............................................................................. 133
Etape 3 : Ajouter la fonction Lambda à un pipeline dans la console AWS CodePipeline .......... 137
Etape 4 : Tester le pipeline avec la fonction Lambda ....................................................... 138
Etape 5 : Etapes suivantes ......................................................................................... 139
Version 09/07/2015
v
AWS CodePipeline Guide de l'utilisateur
Exemple d'événement JSON ....................................................................................... 139
Autres modèles de fonctions ....................................................................................... 140
Dépannage ............................................................................................................................... 151
Erreur de pipeline : Un pipeline configuré avec AWS Elastic Beanstalk affiche un message
d'erreur : « Echec du déploiement. Le rôle fourni ne dispose pas des autorisations suffisantes :
service : AmazonElasticLoadBalancing » ............................................................................... 151
Erreur de pipeline : Une action source affiche un message indiquant que les autorisations
sont insuffisantes : « Impossible d'accéder au référentiel AWS CodeCommit repository-name.
Assurez-vous que le rôle IAM du pipeline dispose des autorisations suffisantes pour accéder au
référentiel. » ...................................................................................................................... 152
Erreur de pipeline : Une action Jenkins de génération ou de test s'exécute pendant une longue
durée puis échoue, en raison d'informations d'identification ou d'autorisations insuffisantes ............ 153
Erreur de pipeline : L'étape source de My GitHub contient des sous-modules Git, mais AWS
CodePipeline ne les initialise pas ......................................................................................... 153
Erreur de pipeline : Mon pipeline affiche le message d'erreur suivant : « PermissionError: Could
not access the GitHub repository » ....................................................................................... 153
Erreur de pipeline : Un pipeline créé dans une région AWS à l'aide d'un compartiment créé dans
une autre région AWS affiche le message « InternalError » avec le code « JobFailed » ................. 155
Besoin d'aide pour résoudre un autre problème ? ................................................................... 155
Référence des autorisations d'accès ............................................................................................. 156
Création d'une stratégie gérée par le client pour AWS CodePipeline .......................................... 159
Création d'une stratégie pour un compartiment Amazon S3, en vue d'une utilisation comme
magasin d'objets pour AWS CodePipeline ............................................................................. 160
Associer une stratégie à un utilisateur ou un groupe IAM ......................................................... 160
Modification d'une stratégie pour un rôle de service IAM .......................................................... 161
Révision de la stratégie de rôle de service par défaut d'AWS CodePipeline ......................... 161
Ajout d'autorisations aux autres services AWS ............................................................... 163
Suppression des autorisations des services AWS non utilisés ........................................... 165
Association ou modification d'une stratégie pour l'intégration Jenkins avec AWS CodePipeline ........ 166
Configuration de l'accès entre comptes dans un pipeline ......................................................... 166
Utilisation de ressources AWS associées à un autre compte dans un pipeline ............................. 168
Fonctionnement et syntaxe des ressources ........................................................................... 171
Pipelines .................................................................................................................. 172
Etapes ..................................................................................................................... 172
Actions ..................................................................................................................... 173
Types d'action ........................................................................................................... 174
Tâches ..................................................................................................................... 174
Command Line Interface Reference ............................................................................................. 176
Référence sur la structure du pipeline .......................................................................................... 177
Exigences en termes de structure des pipelines et des étapes dans AWS CodePipeline ................ 177
Exigences de structure des actions dans AWS CodePipeline .................................................... 178
Chiffrement ............................................................................................................................... 184
Restrictions ............................................................................................................................... 186
Historique du document .............................................................................................................. 190
Glossaire AWS .......................................................................................................................... 195
Version 09/07/2015
vi
AWS CodePipeline Guide de l'utilisateur
Vidéo de présentation d'AWS CodePipeline
Qu'est-ce qu'AWS CodePipeline ?
AWS CodePipeline est un service de livraison continue qui vous permet de modéliser, de visualiser
et d'automatiser les étapes nécessaires à la publication de votre logiciel. Vous pouvez rapidement
modéliser et configurer différentes étapes d'un processus de publication logiciel. AWS CodePipeline
automatise les étapes nécessaires à la publication de vos modifications logicielles en permanence.
Pour plus d'informations sur la tarification pour AWS CodePipeline, consultez Tarification.
Rubriques
• Vidéo de présentation d'AWS CodePipeline (p. 1)
• Que puis-je faire avec AWS CodePipeline ? (p. 1)
• Aperçu rapide d'AWS CodePipeline (p. 2)
• Comment démarrer avec AWS CodePipeline ? (p. 3)
• Nous voulons entendre parler de vous (p. 3)
Vidéo de présentation d'AWS CodePipeline
Cette brève vidéo (3 : 06) décrit comment AWS CodePipeline crée, teste et déploie votre code dès que
ce dernier est modifié, selon les modèles de traitement des publications que vous définissez.
Vidéo de présentation d'AWS CodePipeline.
Que puis-je faire avec AWS CodePipeline ?
Vous pouvez utiliser AWS CodePipeline pour vous aider à développer, tester et déployer
automatiquement vos applications dans le cloud. Plus précisément, vous pouvez :
• Automatiser vos processus de publication : AWS CodePipeline automatise entièrement votre
processus de publication de bout en bout, depuis votre référentiel source et en passant par la
génération, le test et le déploiement. Vous pouvez éviter que des modifications ne transite à travers
un pipeline en incluant une action d'approbation manuelle dans n'importe quelle étape, à l'exception
de l'étape Source. Vous pouvez publier automatiquement, quand vous le souhaitez, de la manière
Version 09/07/2015
1
AWS CodePipeline Guide de l'utilisateur
Aperçu rapide d'AWS CodePipeline
dont vous le souhaitez, sur les systèmes de votre choix, sur une instance ou sur plusieurs d'entre
elles.
• Définir une procédure de publication cohérente : vous pouvez définir un ensemble cohérent d'étapes
pour chaque modification de code. AWS CodePipeline exécute chaque étape de votre publication en
respectant les critères que vous avez définis.
• Accélérer la livraison tout en améliorant la qualité : vous pouvez automatiser votre processus de
publication pour permettre à vos développeurs de tester et de publier un code progressivement, puis
d'accélérer le lancement de nouvelles fonctionnalités pour vos clients.
• Utiliser vos outils favoris : vous pouvez incorporer vos outils source, de génération et de déploiement
existants à votre pipeline. Pour une liste complète de services AWS et outils tiers actuellement pris
en charge par AWS CodePipeline, consultez Intégrations de produits et services (p. 10).
• Afficher les progrès en un clin d'œil : vous pouvez passer en revue l'état en temps réel de vos
pipelines, vérifier les détails de toutes les alertes, relancer des actions ayant échoué, afficher les
informations sur les révisions source utilisées lors de la dernière exécution du pipeline dans chaque
étape et exécuter à nouveau un pipeline.
Aperçu rapide d'AWS CodePipeline
Le schéma suivant montre un exemple de processus de publication à l'aide d'AWS CodePipeline.
Dans cet exemple, lorsque les développeurs valident des modifications dans un référentiel source,
AWS CodePipeline détecte automatiquement les modifications. Ces modifications sont générées, et si
des tests sont configurés, ces derniers sont exécutés. Une fois les tests terminés, le code ainsi généré
est déployé sur les serveurs intermédiaires, afin de le tester. A partir du serveur intermédiaire, AWS
CodePipeline exécute des tests supplémentaires, comme les tests d'intégration ou de chargement.
Si ces tests réussissent, AWS CodePipeline déploie le code testé et approuvé aux instances de
production.
AWS CodePipeline peut déployer des applications à des instances Amazon EC2 en utilisant AWS
CodeDeploy, AWS Elastic Beanstalk, ou AWS OpsWorks. Les développeurs peuvent également
utiliser des points d'intégration fournis par AWS CodePipeline afin de connecter d'autres outils
ou services, y compris des services de génération, des fournisseurs de test ou d'autres cibles ou
systèmes de déploiement.
Version 09/07/2015
2
AWS CodePipeline Guide de l'utilisateur
Comment démarrer avec AWS CodePipeline ?
Un pipeline peut être très simple ou très complexe, en fonction des besoins de votre processus de
publication.
Comment démarrer avec AWS CodePipeline ?
Pour commencer à utiliser AWS CodePipeline :
1. Découvrez comment AWS CodePipeline fonctionne en lisant la section Concepts (p. 4).
2. Préparez-vous à utiliser AWS CodePipeline en suivant les étapes énoncées dans
Configuration (p. 22).
3. Faites des expériences avec AWS CodePipeline en suivant les étapes énoncées dans les
didacticiels Mise en route (p. 25).
4. Utilisez AWS CodePipeline pour vos projets nouveaux ou existants en suivant les étapes énoncées
dans Création d'un pipeline (p. 62).
Nous voulons entendre parler de vous
Nous apprécions vos commentaires. Pour nous contacter, consultez le forum AWS CodePipeline.
Version 09/07/2015
3
AWS CodePipeline Guide de l'utilisateur
Livraison continue et intégration
Concepts AWS CodePipeline
La modélisation et la configuration de votre processus de publication automatisé vous semblera
plus simple si vous comprenez les concepts et termes utilisés dans AWS CodePipeline, ainsi que
certains concepts sous-jacents propres à l'automatisation de la publication. Voici quelques concepts à
connaître lorsque vous utilisez AWS CodePipeline.
Rubriques
• Livraison continue et intégration avec AWS CodePipeline (p. 4)
• Fonctionnement d'AWS CodePipeline (p. 4)
• Exécution d'un pipeline (p. 8)
Livraison continue et intégration avec AWS
CodePipeline
AWS CodePipeline est un service de livraison continue qui automatise la création, le test et le
déploiement de votre logiciel dans la production.
La livraison continue est une méthode de développement logiciel où le processus de publication est
automatisé. Chaque modification logicielle est automatiquement créée, testée et déployée dans la
production. Avant la publication finale vers la production, un utilisateur, un test automatisé ou une
règle commerciale détermine quand cette opération doit avoir lieu. Chaque modification logicielle
réussie peut être immédiatement publiée dans la production avec une livraison continue, toutefois les
modifications n'ont pas toutes besoin d'être publiées immédiatement.
L'Intégration continue est une pratique de développement logiciel où les membres d'une équipe
utilisent un système de contrôle des versions et intègrent leur travail fréquemment dans le même
emplacement, par exemple dans une branche principale. Chaque modification est construite et vérifiée
au moyen de tests et d'autres vérifications afin de détecter toute erreur d'intégration le plus rapidement
possible. L'intégration continue est axée sur le développement automatique et les tests de code,
alors que la livraison continue automatise l'intégralité du processus de publication logicielle jusqu'à la
production.
Fonctionnement d'AWS CodePipeline
AWS CodePipeline vous permet de créer et de gérer votre workflow de publication avec les pipelines.
Un pipeline est une structure de workflow qui décrit la progression des modifications logicielles d'un
Version 09/07/2015
4
AWS CodePipeline Guide de l'utilisateur
Fonctionnement d'AWS CodePipeline
processus de publication. Vous pouvez créer autant de pipelines que nécessaire dans les limites
permises par AWS et AWS CodePipeline, qui sont décrites dans Restrictions (p. 186).
Le schéma suivant et les descriptions qui l'accompagnent vous présentent certaines des conditions
spécifiques à AWS CodePipeline et comment ces concepts sont reliés entre eux :
• Vous pouvez utiliser la console AWS CodePipeline, l'AWS Command Line Interface (AWS CLI), les
kits de développement logiciel AWS, ou toute combinaison de ces éléments pour créer et gérer vos
pipelines.
Lorsque vous créez votre premier pipeline à l'aide de la console, AWS CodePipeline crée un seul
compartiment Amazon S3 dans la même région que celle du pipeline, afin de stocker les éléments
de tous les pipelines de cette région qui sont associés à votre compte. Chaque fois que vous
créez un autre pipeline dans cette région et dans la console, AWS CodePipeline crée un dossier
dans ce compartiment pour ce pipeline, et utilise ce dossier pour stocker les artéfacts de votre
pipeline pendant l'exécution du processus automatique de publication. Ce compartiment est nommé
codepipeline-region-1234567EXAMPLE, region désignant la région AWS dans laquelle vous avez
créé le pipeline. 1234567EXAMPLE est un nombre aléatoire à dix chiffres qui permet de s'assurer
que le nom de compartiment est unique.
Si vous créez un pipeline à l'aide de l'AWS CLI vous pouvez choisir un compartiment Amazon S3
pour stocker les artéfacts de ce pipeline, à condition que ce compartiment se trouve dans la même
région que le pipeline. Il s'agit d'une option intéressante si vous craignez de dépasser les limites des
compartiments Amazon S3 autorisées sur votre compte.
• Une révision est une modification apportée à une source qui est configurée dans une action source
pour AWS CodePipeline, par exemple une validation publiée dans un référentiel GitHub ou AWS
CodeCommit, ou une mise à jour d'un fichier dans un compartiment Amazon S3, versionné. Chaque
révision est exécutée séparément dans le pipeline. Plusieurs révisions peuvent être traitées dans
le même pipeline, mais chaque étape ne peut traiter qu'une révision à la fois. Les révisions sont
exécutées dans le pipeline dès qu'une modification est apportée à l'emplacement spécifié dans
l'étape source du pipeline.
• AWS CodePipeline divise votre workflow en une série d'étapes. Par exemple, il peut y avoir une
étape de génération, où le code est généré et les tests sont exécutés. Il y a également des étapes
de déploiement, où sont déployées des mises à jour de code dans les environnements d'exécution.
Vous pouvez configurer plusieurs déploiements parallèles dans différents environnements d'une
même étape de déploiement. Vous pouvez labelliser chaque étape du processus de publication pour
Version 09/07/2015
5
AWS CodePipeline Guide de l'utilisateur
Fonctionnement d'AWS CodePipeline
optimiser le suivi, le contrôle et la création de rapports (par exemple « Source », « Génération » et
« Bêta »).
Chaque étape est dotée d'un nom unique dans un pipeline et contient une séquence d'actions
dans le cadre de son workflow. Une étape ne peut traiter qu'une révision à la fois. Une révision doit
s'exécuter dans une étape avant que la prochaine révision ne puisse être exécutée. Toutes les
actions configurées pour une étape doivent réussir avant que l'étape ne soit considérée comme
étant achevée. Une fois qu'une étape est terminée, le pipeline transférera automatiquement la
révision et les artéfacts créés par les actions de cette étape vers l'étape suivante du pipeline. Vous
pouvez désactiver et activer manuellement ces transitions. Pour plus d'informations sur la structure
et les exigences d'une étape, consultez Exigences en termes de structure des pipelines et des
étapes dans AWS CodePipeline (p. 177).
• Chaque étape contient au moins une action, qui est une sorte de tâche réalisée sur l'artéfact de
cette étape. Les actions de pipeline interviennent dans un ordre précis, en séquence ou en parallèle,
en fonction de ce qui a été défini dans la configuration de l'étape. Par exemple, une étape bêta
peut contenir une action de déploiement, laquelle déploie le code sur un ou plusieurs serveurs
intermédiaires. Vous pouvez configurer une étape avec une seule action pour commencer, puis
y ajouter des actions supplémentaires, en fonction de vos besoins. Pour plus d'informations,
consultez Modification d'un pipeline (p. 70) et Exigences de structure des actions dans AWS
CodePipeline (p. 178).
Une fois qu'une révision commence à s'exécuter à travers un pipeline, AWS CodePipeline copie les
fichiers ou les modifications qui seront appliqué(e)s aux actions et aux étapes du pipeline dans le
compartiment Amazon S3. Ces objets sont appelés des artéfacts, et peuvent constituer la source
d'une action (artéfacts d'entrée) ou le résultat d'une action (artéfacts de sortie). Un artéfact peut
s'appliquer à plusieurs actions.
• Chaque action dispose d'un type. En fonction du type, l'action peut être dotée d'un artéfact d'entrée,
c'est-à-dire l'artéfact consommé ou utilisé pendant l'exécution de l'action, d'un artéfact de sortie,
qui est le résultat de l'action, ou des deux. Chaque artéfact de sortie doit avoir un nom unique au
sein du pipeline. Chaque artéfact d'entrée d'une action doit correspondre à l'artéfact de sortie d'une
action précédente dans le pipeline, que cette action précède immédiatement l'action d'une étape ou
s'exécute dans plusieurs étapes précédentes. L'illustration suivante explique comment les artéfacts
d'entrée et de sortie sont produits et consommés au sein d'un pipeline :
Version 09/07/2015
6
AWS CodePipeline Guide de l'utilisateur
Fonctionnement d'AWS CodePipeline
• Une transition désigne une révision dans un pipeline qui passe d'une étape à une autre dans un
workflow. Dans la console AWS CodePipeline, les flèches de transition relient les étapes entre elles
afin d'indiquer leur ordre. Une fois qu'une étape est terminée, la révision passera par défaut à l'étape
suivante du pipeline. Vous pouvez désactiver la transition d'une étape à une autre. Dans ce cas,
votre pipeline exécutera toutes les actions des étapes précédant la transition, mais n'exécutera pas
les étapes ou les actions après cette étape tant que vous n'activerez pas cette transition. Il s'agit
d'un moyen simple d'éviter que des modifications ne soient exécutées sur l'intégralité du pipeline.
Une fois la transition activée, la révision la plus récente qui a été exécutée avec succès à travers les
étapes précédentes sera exécutée dans les étapes suivant cette transition. Si toutes les transitions
sont activées, le pipeline s'exécute en continu ; chaque révision sera déployée lors d'une exécution
sur tout le pipeline (déploiement en continu).
• Une seule révision peut être exécutée dans une étape à la fois, par conséquent AWS CodePipeline
traitera les révisions ayant complété l'étape précédente par lot jusqu'à ce que la prochaine étape soit
disponible. Si une révision plus récente est exécutée dans l'étape, la révision par lot sera remplacée
par la version la plus récente.
• Une action d'approbation évite qu'un pipeline ne passe à l'action suivante tant qu'une permission
n'est pas accordée (par exemple, via l'approbation manuelle d'un utilisateur IAM autorisé). Vous
pouvez utiliser une action d'approbation lorsque vous souhaitez que le pipeline poursuive son
exécution seulement après une vérification du code approuvée, par exemple, ou si vous souhaitez
contrôler quand le pipeline passe à l'étape finale de production. Dans ce cas, vous pouvez ajouter
une action d'approbation manuelle à une étape juste avant la phase Production et l'approuver vousmême lorsque vous êtes prêt à publier des modifications publiques.
Version 09/07/2015
7
AWS CodePipeline Guide de l'utilisateur
Exécution d'un pipeline
• Un échec est une action d'une étape qui n'a pas abouti. Si une action échoue dans une étape,
la révision ne passe pas à l'action suivante de l'étape ou à la prochaine étape du pipeline. En
cas d'échec, aucune transition ne se produit dans le pipeline concernant cette révision. AWS
CodePipeline interrompt le pipeline tant que vous ne relancez pas manuellement l'étape qui contient
les actions ayant échoué ou que vous ne démarrez pas le pipeline pour cette révision, ou encore
tant qu'une nouvelle révision n'est pas apportée à une action d'étape source.
• Un pipeline s'exécute automatiquement lorsqu'une modification est apportée à l'emplacement
source, tel que défini dans une action source du pipeline, ou lorsque vous lancez manuellement le
pipeline à partir de l'AWS CLI. Une fois qu'un pipeline est lancé, la révision s'exécute dans chaque
étape et action du pipeline. Vous pouvez voir les détails de la dernière exécution de chaque action
d'un pipeline sur la page d'affichage de ce dernier.
Le schéma suivant montre les deux étapes d'un modèle de pipeline dans la console AWS
CodePipeline. Celui-ci inclut une action dans chaque étape et la transition est activée entre les deux
étapes.
Exécution d'un pipeline
Un pipeline démarre automatiquement dès qu'il a été créé. Le pipeline peut donner l'impression de
s'interrompre lorsqu'il est en attente d'événements, comme le démarrage de l'action suivante d'une
séquence, mais il est toujours en cours d'exécution. Lorsque le pipeline finalise le traitement de la
révision, il se met en attente de la prochaine révision de l'emplacement source, tel que défini dans le
pipeline. Dès qu'un changement est détecté dans cet emplacement source, le pipeline commence à
l'exécuter à travers ses étapes et ses actions.
Vous ne pouvez pas interrompre manuellement un pipeline après sa création, mais vous pouvez
désactiver les transitions entre les étapes pour éviter l'exécution dans certaines étapes et actions,
Version 09/07/2015
8
AWS CodePipeline Guide de l'utilisateur
Exécution d'un pipeline
ou ajouter une action d'approbation au pipeline pour interrompre l'exécution jusqu'à ce que
l'action soit approuvée manuellement. Afin de vous assurer qu'un pipeline ne s'exécute pas, vous
pouvez également le supprimer ou modifier les actions d'une étape source pour les diriger vers un
emplacement source où aucune modification n'a été introduite. Si vous supprimez un pipeline pour
cette raison, assurez-vous de créer une copie de sa structure JSON au préalable. Ainsi, vous pourrez
facilement restaurer ce pipeline si vous souhaitez le recréer. Pour plus d'informations, consultez
Création d'un pipeline (Interface de ligne de commande) (p. 66).
Vous pouvez exécuter à nouveau manuellement la dernière mise à jour dans le pipeline. Pour
plus d'informations, consultez Nouvelle exécution manuelle d'un pipeline (p. 120). Vous pouvez
également retenter des actions individuelles qui n'ont pas abouti. Pour plus d'informations, consultez
Nouvelle tentative des actions ayant échoué (p. 90).
Version 09/07/2015
9
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions source
Intégrations de produits et services
avec AWS CodePipeline
Par défaut, AWS CodePipeline est intégré à plusieurs services AWS ainsi qu'à des produits et services
partenaires. Les informations suivantes sont classées par type d'action AWS CodePipeline et peuvent
vous aider à configurer AWS CodePipeline en vue d'une intégration avec les produits et services que
vous utilisez.
Rubriques
• Intégrations d'actions source (p. 10)
• Intégrations d'actions de génération (p. 12)
• Intégrations d'actions de test (p. 14)
• Intégrations d'actions de déploiement (p. 14)
• Intégrations d'actions d'approbation (p. 17)
• Intégrations d'actions d'appel (p. 17)
• Intégrations générales avec AWS CodePipeline (p. 17)
• Exemples d'intégration issus de la communauté (p. 18)
Intégrations d'actions source
Amazon Simple
Storage Service
(Amazon S3)
Amazon S3 est une solution de stockage pour Internet. Vous pouvez
utiliser Amazon S3 pour stocker et récupérer n'importe quel volume de
données, à tout moment et depuis n'importe quel accès Internet. Vous pouvez
configurer AWS CodePipeline afin d'utiliser un compartiment Amazon S3
versionné comme étape source pour votre code. Vous devez d'abord créer le
compartiment, puis activer la gestion des versions avant de créer un pipeline
utilisant ce compartiment comme partie d'une action source d'une étape.
En savoir plus :
• Créer un compartiment Amazon S3 (p. 26)
• Création d'un pipeline (Interface de ligne de commande) (p. 66)
AWS CodeCommit
AWS CodeCommit est un service de contrôle des versions hébergé par AWS,
que vous pouvez utiliser pour stocker et gérer des ressources de manière
privée (par exemple, des documents, un code source et des fichiers binaires)
Version 09/07/2015
10
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions source
dans le cloud. Vous pouvez configurer AWS CodePipeline pour utiliser une
branche d'un référentiel AWS CodeCommit en tant qu'étape source de votre
code. Vous devez d'abord créer le référentiel et l'associer à un répertoire actif
de votre ordinateur local avant de créer un pipeline utilisant la branche comme
partie d'une action source d'une étape. Vous pouvez vous connecter au
référentiel AWS CodeCommit en créant un nouveau pipeline ou en modifiant
un pipeline existant.
La prise en charge AWS CodePipeline pour AWS CodeCommit est
actuellement disponible dans les régions suivantes uniquement :
• Région USA Est (Virginie du Nord) (us-east-1)
• Région USA Est (Ohio) (us-east-2)
• Région USA Ouest (Oregon) (us-west-2)
• Région UE (Irlande) (eu-west-1)
En savoir plus :
• Procédure pas à pas avec pipeline simple (référentiel AWS
CodeCommit) (p. 41)
• Guide de mise en route d'AWS pour les modèles DevOps Découvrez
comment utiliser AWS CodePipeline pour livrer et déployer en permanence
le code source figurant dans les référentiels AWS CodeCommit aux
déploiements cibles dans AWS CodeDeploy, Elastic Beanstalk, et AWS
OpsWorks.
Version 09/07/2015
11
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions de génération
GitHub
Vous pouvez configurer AWS CodePipeline pour utiliser un référentiel GitHub
en tant qu'étape source pour votre code. Vous devez avoir créé au préalable
un compte GitHub et au moins un référentiel GitHub. Vous pouvez vous
connecter au référentiel GitHub en créant un nouveau pipeline ou en modifiant
un pipeline existant.
Note
L'intégration d'AWS CodePipeline à GitHub Enterprise n'est pas prise
en charge.
La première fois que vous ajoutez un référentiel GitHub à un pipeline, vous
devez autoriser l'accès d'AWS CodePipeline à vos référentiels. Pour s'intégrer
à GitHub, AWS CodePipeline utilise des jetons OAuth et requiert deux portées
GitHub : admin:repo_hook, qui est utilisé pour détecter le moment où
vous avez engagé et lancé les modifications dans le référentiel, et repo, qui
est utilisé pour lire et extraire les artéfacts des référentiels publics et privés
d'un pipeline. Pour plus d'informations sur les portées GitHub, consultez la
Référence de l'API du développeur GitHub.
Tip
Le nombre de jetons OAuth que vous pouvez utiliser dans GitHub est
limité pour une application spécifique, telle qu'AWS CodePipeline.
Si vous envisagez de créer plusieurs pipelines ou les actions source
de My GitHub, vous pouvez configurer un jeton d'accès personnel,
et ensuite utiliser ce jeton OAuth pour toutes vos actions GitHub.
Pour plus d'informations, consultez Pour configurer un pipeline afin
d'utiliser un jeton d'accès personnel à partir de GitHub (p. 153).
L'accès d'AWS CodePipeline est configuré pour l'ensemble des référentiels
auxquels le compte GitHub a accès et ne peut actuellement pas être configuré
pour des référentiels individuels. Vous pouvez révoquer cet accès à partir
de GitHub en sélectionnant Settings, Applications, puis, sous Authorized
applications, recherchez AWS CodePipeline dans la liste des applications
autorisées et choisissez Revoke. En révoquant l'accès, vous empêcherez
immédiatement AWS CodePipeline d'accéder à tous les référentiels GitHub
précédemment configurés pour accéder à ce compte GitHub.
Si vous souhaitez limiter l'accès d'AWS CodePipeline à des ensembles de
référentiels spécifiques, créez un compte GitHub, permettez à ce compte
d'accéder uniquement aux référentiels que vous souhaitez intégrer à
AWS CodePipeline puis utilisez ce compte lorsque vous configurez AWS
CodePipeline, afin d'utiliser les référentiels GitHub pour les étapes source des
pipelines.
En savoir plus :
• Didacticiel avec pipeline à quatre étapes (p. 53)
Intégrations d'actions de génération
AWS CodeBuild
AWS CodeBuild est un service de génération entièrement géré dans le cloud.
AWS CodeBuild compile votre code source, exécute des tests unitaires
et produit des artefacts prêts à être déployés. Vous pouvez ajouter AWS
Version 09/07/2015
12
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions de génération
CodeBuild en tant qu'action de génération à l'étape de génération d'un
pipeline. Vous pouvez utiliser un projet de génération existant ou en créer
un dans la console AWS CodePipeline. Les données de sortie du projet de
génération peuvent ensuite être déployées dans le cadre d'un pipeline.
En savoir plus :
• En quoi consiste AWS CodeBuild ?
• Utilisation d'AWS CodePipeline avec AWS CodeBuild pour exécuter des
générations
• Utilisation des projets de génération dans AWS CodeBuild
• AWS CodeBuild – Service de génération entièrement géré
CloudBees
Vous pouvez configurer AWS CodePipeline de sorte à utiliser CloudBees
afin de générer ou de tester votre code dans une ou plusieurs actions d'un
pipeline.
En savoir plus :
• Documentation CloudBees pour l'intégration de la plateforme CloudBees
Jenkins à AWS CodePipeline en vue de l'exécution de vos tâches de
génération et de test
Jenkins
Vous pouvez configurer AWS CodePipeline pour utiliser Jenkins CI afin de
générer ou tester votre code dans une ou plusieurs actions d'un pipeline.
Vous devez créer au préalable un projet Jenkins et avoir installé et configuré
le plugin Plug-in AWS CodePipeline pour Jenkins pour ce projet. Vous pouvez
vous connecter au projet Jenkins en créant un nouveau pipeline ou en
modifiant un pipeline existant.
L'accès Jenkins est configuré individuellement, pour chaque projet. Vous
devez installer le plugin Plug-in AWS CodePipeline pour Jenkins sur chaque
instance Jenkins que vous souhaitez utiliser avec AWS CodePipeline. En
outre, vous devez configurer l'accès à AWS CodePipeline au projet Jenkins.
Vous devez sécuriser votre projet Jenkins en le configurant de sorte à ce que
seules les connexions HTTPS/SSL soient acceptées. Si votre projet Jenkins
est installé sur une instance Amazon EC2, il peut être souhaitable de fournir
vos informations d'identification AWS en installant l'AWS CLI sur chaque
instance et en configurant un profil AWS sur ces mêmes instances avec le
profil utilisateur IAM et les identifiants AWS que vous souhaitez utiliser pour
les connexions entre AWS CodePipeline et Jenkins, au lieu de les ajouter ou
de les stocker via l'interface web Jenkins.
En savoir plus :
• Accès à Jenkins
• Didacticiel avec pipeline à quatre étapes (p. 53)
Solano CI
Vous pouvez configurer AWS CodePipeline de sorte à utiliser Solano Labs
afin de générer et de tester votre code dans une ou plusieurs actions d'un
pipeline.
En savoir plus :
• Documentation Solano Labs pour utiliser Solano CI avec AWS
CodePipeline
Version 09/07/2015
13
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions de test
TeamCity
Vous pouvez configurer AWS CodePipeline afin d'utiliser TeamCity pour
générer et tester votre code dans une ou plusieurs actions d'un pipeline.
En savoir plus :
• Plug-in TeamCity pour AWS CodePipeline
• Génération de pipelines de diffusion continue et de déploiement de bout en
bout dans AWS et TeamCity
Intégrations d'actions de test
Apica
Vous pouvez configurer AWS CodePipeline pour utiliser Apica afin de tester
votre code dans une ou plusieurs actions du pipeline.
En savoir plus :
• Documentation Apica pour la configuration avec AWS CodePipeline
BlazeMeter
Vous pouvez configurer AWS CodePipeline pour utiliser BlazeMeter afin de
tester votre code dans une ou plusieurs actions du pipeline.
En savoir plus :
• Documentation BlazeMeter pour les tests avec AWS CodePipeline
Ghost Inspector
Vous pouvez configurer AWS CodePipeline pour utiliser Ghost Inspector pour
tester votre code dans une ou plusieurs actions d'un pipeline.
En savoir plus :
• Documentation Ghost Inspector pour l'intégration des services avec AWS
CodePipeline
HPE StormRunner
Load
Vous pouvez configurer AWS CodePipeline pour utiliser HPE StormRunner
Load dans une ou plusieurs actions d'un pipeline.
En savoir plus :
• Documentation HPE StormRunner Load pour l'intégration avec AWS
CodePipeline
Runscope
Vous pouvez configurer AWS CodePipeline pour utiliser Runscope afin de
tester votre code dans une ou plusieurs actions du pipeline.
En savoir plus :
• Documentation Runscope pour l'intégration avec AWS CodePipeline
Intégrations d'actions de déploiement
AWS
CloudFormation
AWS CloudFormation offre aux développeurs et aux administrateurs système
un moyen simple de créer et de gérer un ensemble de ressources AWS
connexes, en utilisant des modèles pour mettre en service et mettre à
jour ces ressources. Vous pouvez utiliser des exemples de modèles AWS
CloudFormation ou créer vos propres modèles pour décrire les ressources
Version 09/07/2015
14
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions de déploiement
AWS, ainsi que les dépendances ou paramètres d'exécution associés
nécessaires à l'exécution de votre application.
Le modèle d'application sans serveur AWS (AWS SAM) étend AWS
CloudFormation afin de fournir un moyen simple pour définir et déployer des
applications sans serveur. AWS SAM prend en charge les API Amazon API
Gateway, les fonctions Lambda AWS et les tables Amazon DynamoDB. Vous
pouvez utiliser AWS CodePipeline avec AWS CloudFormation et le modèle
d'application sans serveur AWS pour diffuser en continu vos applications sans
serveur.
Vous pouvez ajouter une action à un pipeline qui utilise AWS CloudFormation
comme fournisseur de déploiement. Le rôle unique d'AWS CloudFormation
comme fournisseur de déploiement vous permet d'intervenir sur les
piles et les jeux de modifications AWS CloudFormation dans le cadre
de l'exécution d'un pipeline. AWS CloudFormation peut créer, mettre à
jour, remplacer et supprimer des piles et des jeux de modifications lors
de l'exécution d'un pipeline. Par conséquent, les ressources AWS et
personnalisées peuvent être créées, mises en service, mises à jour ou mises
hors service automatiquement pendant l'exécution d'un pipeline, selon les
spécifications que vous indiquez aux modèles et définitions de paramètres
AWS CloudFormation.
En savoir plus :
• Diffusion continue avec AWS CodePipeline — Apprenez à utiliser AWS
CodePipeline pour générer un flux de travail de diffusion continue pour
AWS CloudFormation.
• Automatisation du déploiement d'applications basées sur Lambda –
Apprenez à utiliser le modèle d'application sans serveur AWS et AWS
CloudFormation pour créer un flux de livraison continue pour votre
application basée sur Lambda.
AWS CodeDeploy
AWS CodeDeploycoordonne les déploiements d'applications sur les instances
Amazon EC2, les instances sur site ou les deux. Vous pouvez configurer AWS
CodePipeline pour utiliser AWS CodeDeploy afin de déployer votre code.
Vous pouvez créer l'application, le déploiement et le groupe de déploiement
AWS CodeDeploy à utiliser dans une action de déploiement d'une étape avant
la création du pipeline ou lorsque vous utilisez l'assistant Create Pipeline.
En savoir plus :
• Création de ressources AWS CodeDeploy (p. 27)
• Découvrir la livraison continue dans AWS avec le kit de démarrage du
pipeline
Version 09/07/2015
15
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions de déploiement
AWS Elastic
Beanstalk
Elastic Beanstalk est un service simple à utiliser pour déployer et
dimensionner des applications et des services web développés avec
Java, .NET, PHP, Node.js, Python, Ruby, Go et Docker sur des serveurs
courants, tels qu'Apache, Nginx, Passenger et IIS. Vous pouvez configurer
AWS CodePipeline pour utiliser Elastic Beanstalk afin de déployer votre code.
Vous pouvez créer l'application Elastic Beanstalk et l'environnement à utiliser
dans une action de déploiement d'une étape avant la création du pipeline ou
lorsque vous utilisez l'assistant Create Pipeline.
En savoir plus :
• Procédure Elastic Beanstalk
• Création d'un pipeline (p. 62)
AWS OpsWorks
AWS OpsWorks est un service de gestion de configuration qui vous permet de
configurer et d'exploiter des applications de toutes tailles et formes avec Chef.
Vous pouvez définir l'architecture de l'application ainsi que les spécifications
de chaque composant, y compris les packages à installer, la configuration
logicielle et les ressources telles que le stockage. Vous pouvez configurer
AWS CodePipeline pour utiliser AWS OpsWorks afin de déployer votre
code conjointement avec les livres de recettes Chef personnalisées et les
applications dans AWS OpsWorks.
• Livres de recettes Chef personnalisés – AWS OpsWorks utilise les livres
de recettes Chef pour gérer des tâches telles que l'installation et la
configuration des modules et le déploiement d'applications.
• Applications – Une application AWS OpsWorks se compose de codes que
vous souhaitez exécuter sur un serveur d'applications. Le code d'application
est stocké dans un référentiel, comme un compartiment Amazon S3.
Vous créez la pile et la couche AWS OpsWorks que vous souhaitez utiliser
avant de créer le pipeline. Vous pouvez créer l'application AWS OpsWorks
à utiliser dans une action de déploiement d'une étape avant la création du
pipeline ou lorsque vous utilisez l'assistant Create Pipeline.
La prise en charge d'AWS CodePipeline pour AWS OpsWorks est
actuellement disponible dans la région USA Est (Virginie du Nord) (us-east-1)
uniquement.
En savoir plus :
• Utilisation d'AWS CodePipeline avec AWS OpsWorks
• Livres de recettes et recettes
• Applications AWS OpsWorks
XebiaLabs
Vous pouvez configurer AWS CodePipeline pour utiliser XebiaLabs afin de
déployer votre code dans une ou plusieurs actions du pipeline.
En savoir plus :
• Documentation XebiaLabs pour l'utilisation de XL Deploy avec AWS
CodePipeline
Version 09/07/2015
16
AWS CodePipeline Guide de l'utilisateur
Intégrations d'actions d'approbation
Intégrations d'actions d'approbation
Amazon Simple
Notification Service
Amazon SNS est un service de notification push rapide, flexible et entièrement
géré qui vous permet d'envoyer des messages individuels ou de diffuser
des messages à un grand nombre de destinataires. Amazon SNS permet
d'envoyer des notifications push de manière simple et rentable à des
utilisateurs d'appareils mobiles, des destinataires d'e-mail ou même d'envoyer
des messages à d'autres services distribués.
Lorsque vous créez une demande d'approbation manuelle dans AWS
CodePipeline, vous avez la possibilité d'effectuer une publication dans une
rubrique dans Amazon SNS afin que tous les utilisateurs IAM qui y sont
abonnés soient avertis que l'action d'approbation est prête à être approuvée
ou refusée.
En savoir plus :
• En quoi consiste Amazon SNS ?
• Octroi d'autorisations Amazon SNS à un rôle de service AWS
CodePipeline (p. 80)
Intégrations d'actions d'appel
AWS Lambda
Lambda vous permet d'exécuter un code sans devoir mettre en service
ou gérer des serveurs. Vous pouvez configurer AWS CodePipeline pour
utiliser les fonctions Lambda afin de rendre vos pipelines plus flexibles et
fonctionnelles. Vous pouvez créer la fonction Lambda pour ajouter une
action dans une étape avant de créer le pipeline ou bien lorsque vous utilisez
l'assistant Create Pipeline.
En savoir plus :
• Intégration des fonctions Lambda dans les pipelines (p. 131)
Intégrations générales avec AWS CodePipeline
AWS CloudTrail
CloudTrail capture les appels de l'API AWS et les événements associés,
réalisés par ou au nom d'un compte AWS, et envoie les fichiers journaux à
un compartiment Amazon S3 que vous spécifiez. Vous pouvez configurer
CloudTrail pour capturer les appels de l'API provenant de la console AWS
CodePipeline et les commandes AWS CodePipeline provenant de l'AWS CLI
et de l'API AWS CodePipeline.
En savoir plus :
• Journalisation des appels de l'API avec CloudTrail (p. 99)
AWS Key
Management
Service
AWS KMS est un service géré qui facilite la création et le contrôle des clés de
chiffrement utilisées pour crypter vos données. Par défaut, AWS CodePipeline
utilise AWS KMS pour chiffrer les artéfacts des pipelines stockés dans les
compartiments Amazon S3.
En savoir plus :
Version 09/07/2015
17
AWS CodePipeline Guide de l'utilisateur
Exemples d'intégration issus de la communauté
• Chiffrement (p. 184)
Exemples d'intégration issus de la communauté
Les sections suivantes fournissent des liens vers des billets de blogs, des articles et des exemples
fournis par la communauté.
Note
Ces liens sont fournis à titre informatif uniquement et ne doivent pas être considérés comme
une liste complète ni comme une approbation du contenu des exemples. AWS n'est pas
responsable de ce contenu ni de l'exactitude du contenu externe.
Billets de blogs
• Création d'un pipeline pour AWS Elastic Beanstalk dans AWS CodePipeline à l'aide de
CloudFormation et de CodeCommit
Découvrez comment mettre en place une livraison continue dans un pipeline AWS CodePipeline
pour une application dans AWS Elastic Beanstalk. Toutes les ressources AWS sont provisionnées
automatiquement à l'aide d'un modèle AWS CloudFormation. Cette procédure intègre également
AWS CodeCommit et AWS Identity and Access Management (IAM).
Publié en mai 2016
• Automatisation d'AWS CodeCommit et d'AWS CodePipeline dans AWS CloudFormation
Utilisez AWS CloudFormation pour automatiser le provisionnement des ressources AWS en vue
d'une livraison continue dans le pipeline qui utilise AWS CodeCommit, AWS CodePipeline, AWS
CodeDeploy, et AWS Identity and Access Management.
Publié en avril 2016
• Création d'un pipeline pour plusieurs comptes dans AWS CodePipeline
Découvrez comment automatiser le provisionnement de l'accès entre comptes aux pipelines dans
AWS CodePipeline en utilisant AWS Identity and Access Management. Inclut des exemples dans un
modèle AWS CloudFormation.
Publié en mars 2016
• Découvrir ASP.NET Core Deuxième partie : Livraison continue
Découvrez comment créer un système complet de livraison continue pour une application ASP.NET
Core à l'aide d'AWS CodeDeploy et d'AWS CodePipeline.
Publié en mars 2016
• Création d'un pipeline à l'aide de la console AWS CodePipeline
Version 09/07/2015
18
AWS CodePipeline Guide de l'utilisateur
Billets de blogs
Découvrez comment utiliser la console AWS CodePipeline pour créer un pipeline en deux étapes
grâce à une procédure s'appuyant sur AWS CodePipelineDidacticiel avec pipeline à quatre
étapes (p. 53).
Publié en mars 2016
• Simulation de pipelines AWS CodePipeline avec AWS Lambda
Découvrez comment invoquer la fonction Lambda qui vous permet de visualiser les actions et les
étapes d'un processus de livraison logiciel AWS CodePipeline pendant sa conception et avant que le
pipeline soit opérationnel. Lorsque vous concevez votre structure de pipeline, vous pouvez utiliser la
fonction Lambda pour tester votre pipeline afin de vérifier qu'il aboutit.
Publié en février 2016
• Exécution des fonctions AWS Lambda dans AWS CodePipeline avec AWS CloudFormation
Découvrez comment créer une pile AWS CloudFormation pour provisionner toutes les ressources
AWS utilisées dans la tâche du guide de l'utilisateur Intégration des fonctions Lambda dans les
pipelines (p. 131).
Publié en février 2016
• Provisionnement d'actions AWS CodePipeline personnalisées dans AWS CloudFormation
Découvrez comment utiliser AWS CloudFormation pour provisionner des actions personnalisées
dans AWS CodePipeline.
Publié en janvier 2016
• Provisionnement d'AWS CodePipeline avec AWS CloudFormation
Découvrez comment provisionner un pipeline basique avec livraison continue dans AWS
CodePipeline en utilisant AWS CloudFormation.
Publié en décembre 2015
• Création de déploiement continue sur AWS avec AWS CodePipeline Jenkins, et Elastic Beanstalk
Découvrez comment utiliser GitHub, AWS CodePipeline, Jenkins et Elastic Beanstalk pour créer un
pipeline de déploiement pour une application web, mis à jour automatiquement chaque fois que vous
modifiez votre code.
Publié en décembre 2015
• Livraison continue pour une application PHP à l'aide d'AWS CodePipeline, d'Elastic Beanstalk, et de
Solano Labs
Découvrez comment utiliser Solano CI avec AWS CodePipeline pour tester une application PHP à
l'aide de PHPUnit, puis déployer l'application à Elastic Beanstalk.
Publié en décembre 2015
Version 09/07/2015
19
AWS CodePipeline Guide de l'utilisateur
Vidéos
• Tests de performance de la livraison continue avec AWS CodePipeline et BlazeMeter
Découvrez comment injecter des tests de chargement automatiques aux bons endroits dans le flux
de livraison d'AWS CodePipeline avec l'intégration native d'AWS CodePipeline dans BlazeMeter.
Publié en septembre 2015
• Déploiement d'AWS CodePipeline vers AWS OpsWorks avec une action personnalisée et AWS
Lambda
Découvrez comment configurer votre pipeline et la fonction AWS Lambda en vue d'un déploiement
sur AWS OpsWorks à l'aide d'AWS CodePipeline.
Date de publication : juillet2015
• Test d'acceptation de livraison automatique Nirvana : alimenté par AWS CodePipeline, CloudWatch,
et BlazeMeter
Découvrez comment utiliser AWS CodePipeline, CloudWatch et BlazeMeter pour créer un flux de
livraison continue permettant de réduire le délai de publication et d'augmenter la couverture de test
pour les développeurs lors de la publication.
Date de publication : juillet2015
Vidéos
• Création d'un pipeline à l'aide de la console AWS CodePipeline
Découvrez comment utiliser la console AWS CodePipeline pour créer un pipeline utilisant AWS
CodeDeploy et Amazon S3.
Création d'un pipeline à l'aide de la console AWS CodePipeline
Publié en mars 2016
Durée : 8 : 53
• Solano CI et AWS CodePipeline
Voir une démonstration de configuration et d'exécution réussie d'AWS CodePipeline à l'aide de
Solano CI.
Solano CI et AWS CodePipeline
Publié en novembre 2015
Version 09/07/2015
20
AWS CodePipeline Guide de l'utilisateur
Vidéos
Durée : 3 : 07
• Guide de configuration Apica et AWS CodePipeline
Découvrez comment configurer Apica LoadTest avec AWS CodePipeline.
Guide de configuration Apica et AWS CodePipeline
Date de publication : juillet2015
Durée : 2 : 59
Version 09/07/2015
21
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Créer un compte AWS
Configuration d'AWS CodePipeline
Avant de pouvoir utiliser AWS CodePipeline, vous devez suivre la procédure ci-dessous.
Rubriques
• Etape 1 : Créer un compte AWS (p. 22)
• Etape 2 : Créer ou utiliser un utilisateur IAM (p. 22)
• Etape 3 : Utiliser une stratégie gérée IAM pour attribuer des autorisations AWS CodePipeline à
l'utilisateur IAM (p. 22)
• Etape 4 : Installation de l'AWS CLI (p. 23)
• Etape 5 : Ouvrir la console pour AWS CodePipeline (p. 24)
• Etapes suivantes (p. 24)
Etape 1 : Créer un compte AWS
Créez un compte AWS, si vous ne l'avez pas déjà fait, en accédant à https://aws.amazon.com/ et en
sélectionnant Sign Up.
Etape 2 : Créer ou utiliser un utilisateur IAM
Créez un utilisateur IAM ou utilisez un utilisateur existant associé à votre compte AWS. Assurez-vous
qu'un ID de clé d'accès AWS et une clé d'accès secrète AWS sont associés à l'utilisateur IAM. Pour
plus d'informations, consultez Création d'un utilisateur IAM dans votre compte AWS.
Etape 3 : Utiliser une stratégie gérée IAM pour
attribuer des autorisations AWS CodePipeline à
l'utilisateur IAM
Vous devez attribuer à l'utilisateur IAM les autorisations nécessaires pour interagir avec
AWS CodePipeline. La méthode la plus rapide consiste à appliquer la stratégie gérée
AWSCodePipelineFullAccess à l'utilisateur IAM.
Version 09/07/2015
22
AWS CodePipeline Guide de l'utilisateur
Etape 4 : Installation de l'AWS CLI
Pour attribuer des autorisations à un utilisateur IAM à l'aide d'AWS Management Console
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Dans la console IAM, sous le volet de navigation, choisissez Policies, puis choisissez la stratégie
gérée AWSCodePipelineFullAccess dans la liste des stratégies.
3.
Sur la page Policy Details cliquez sur l'onglet Attached Entities puis choisissez Attach.
4.
Sur la page Attach Policy cochez la case en regard des utilisateurs ou groupes IAM, puis
choisissez Attach Policy.
Note
La stratégie AWSCodePipelineFullAccess donne accès à toutes les actions et ressources
AWS CodePipeline auxquelles l'utilisateur IAM a accès, ainsi qu'à toutes les actions
possibles lors de la création des étapes dans un pipeline, notamment celles incluant AWS
CodeDeploy, Elastic Beanstalk ou Amazon S3. La bonne pratique consiste à accorder
aux personnes autorisées uniquement les permissions dont elles ont besoin pour réaliser
leur travail. Pour plus d'informations sur la façon de limiter les utilisateurs IAM à un
ensemble limité d'actions et de ressources AWS CodePipeline, consultez Référence des
autorisations d'accès (p. 156).
Etape 4 : Installation de l'AWS CLI
Pour installer et configurer le AWS CLI
1.
Sur votre ordinateur local, téléchargez et installez l'AWS CLI. Cela vous permettra d'interagir
avec AWS CodePipeline à partir de la ligne de commande. Pour plus d'informations, consultez la
section Préparation de l'installation de l'interface de ligne de commande AWS.
Note
AWS CodePipeline fonctionne uniquement avec AWS CLI versions 1.7.38 et version
ultérieure. Pour déterminer quelle version de l'AWS CLI vous avez pu installer, exécutez
la commande aws --version. Pour mettre à niveau une version antérieure de l'AWS
CLI vers la version la plus récente, suivez les instructions contenues dans Désinstallation
de l'AWS CLI, puis dans Installation de l'AWS Command Line Interface.
2.
Configurez l'AWS CLI avec la commande configure, comme suit :
aws configure
Lorsque vous y êtes invité, spécifiez la clé d'accès AWS et la clé d'accès secrète AWS de
l'utilisateur IAM que vous utiliserez avec AWS CodePipeline. Lorsque vous êtes invité à saisir
le nom de la région par défaut, entrez la région où vous allez créer le pipeline, par exemple useast-1. Lorsque vous êtes invité à saisir le format de sortie par défaut, entrez json. Exemples :
AWS Access Key ID [None]: Type your target AWS access key ID here, and
then press Enter
AWS Secret Access Key [None]: Type your target AWS secret access key here,
and then press Enter
Default region name [None]: Type us-east-1 here, and then press Enter
Default output format [None]: Type json here, and then press Enter
Version 09/07/2015
23
AWS CodePipeline Guide de l'utilisateur
Etape 5 : Ouvrir la console pour AWS CodePipeline
Note
Pour plus d'informations sur les clés d'accès et les clés secrètes IAM, consultez Gestion
des clés d'accès pour les utilisateurs IAM et Comment puis-je obtenir des informations
d'identification ?
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
Etape 5 : Ouvrir la console pour AWS
CodePipeline
•
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Etapes suivantes
Vous réunissez toutes les conditions prérequises. Vous pouvez commencer à utiliser AWS
CodePipeline. Pour commencer à utiliser AWS CodePipeline consultez le Mise en route (p. 25).
Version 09/07/2015
24
AWS CodePipeline Guide de l'utilisateur
Mise en route sur AWS
CodePipeline
Une fois que vous avez terminé les étapes énoncées dans Configuration (p. 22), vous pouvez essayer
l'une des procédures détaillées suivantes :
Je souhaite créer un pipeline qui utilise
AWS CodeDeploy pour déployer un modèle
d'application à partir d'un compartiment Amazon
S3 sur des instances Amazon EC2 exécutant
Amazon Linux.
Voir Procédure pas à pas avec pipeline simple
(compartiment Amazon S3) (p. 26).
Je souhaite créer un pipeline qui utilise
AWS CodeDeploy pour déployer un modèle
d'application à partir d'un référentiel AWS
CodeCommit sur une instance Amazon EC2
exécutant Amazon Linux.
Voir Procédure pas à pas avec pipeline simple
(référentiel AWS CodeCommit) (p. 41).
Note
Un Didacticiel avec pipeline à quatre étapes (p. 53) explique comment créer un pipeline qui
obtient un code source à partir d'un référentiel GitHub, utilise Jenkins pour générer et tester le
code source, puis AWS CodeDeploy pour déployer le code source ainsi généré et testé sur les
instances Amazon EC2 exécutant Amazon Linux ou Microsoft Windows Server. Ce didacticiel
s'appuie sur les concepts abordés dans les procédures détaillées, par conséquent nous vous
recommandons de suivre au moins l'une d'entre elles au préalable.
Si vous souhaitez essayer AWS CodePipeline avec AWS CodeDeploy sans configurer toutes
les ressources nécessaires, essayez le Kit de démarrage de pipeline. Ce kit de démarrage
met en place un pipeline complet, qui génère et déploie un modèle d'application en quelques
étapes seulement à l'aide d'un modèle AWS CloudFormation, pour créer le pipeline ainsi que
l'ensemble de ses ressources dans la région USA Est (Virginie du Nord).
Version 09/07/2015
25
AWS CodePipeline Guide de l'utilisateur
Procédure pas à pas avec pipeline
simple (compartiment Amazon S3)
Procédure pas à pas avec pipeline simple
(compartiment Amazon S3)
Le moyen le plus simple pour vous familiariser avec AWS CodePipeline consiste à recourir à l'assistant
Create Pipeline dans la console AWS CodePipeline pour créer un pipeline simple.
Dans cette procédure, vous allez créer un pipeline de deux étapes qui utilise un compartiment Amazon
S3 versionné et AWS CodeDeploy afin de publier un modèle d'application. Une fois ce pipeline simple
créé, vous ajouterez une étape supplémentaire, puis vous désactiverez et activerez la transition entre
les étapes.
Ce n'est pas ce que vous recherchez ? Pour créer un pipeline simple à l'aide d'une branche AWS
CodeCommit comme référentiel de code, consultez Procédure pas à pas avec pipeline simple
(référentiel AWS CodeCommit) (p. 41).
Avant de commencer cette procédure, vous devez satisfaire aux prérequis répertoriés dans
Configuration (p. 22).
Rubriques
• Etape 1 : Créer un compartiment Amazon S3 pour votre application (p. 26)
• Etape 2 : Créer des ressources AWS CodeDeploy pour déployer le modèle d'application (p. 27)
• Etape 3 : Créer votre premier pipeline dans AWS CodePipeline (p. 29)
• Etape 4 : Ajouter une étape supplémentaire à votre pipeline (p. 33)
• Etape 5 : Activer et désactiver les transitions entre les étapes d'AWS CodePipeline (p. 39)
• Etape 6 : Nettoyage des ressources (p. 40)
Etape 1 : Créer un compartiment Amazon S3 pour
votre application
Vous pouvez stocker vos fichiers ou applications source dans n'importe quel emplacement versionné.
Dans le cadre de cette procédure, vous allez créer un compartiment Amazon S3 pour les modèles
d'application (un pour Linux, macOS, or Unix et un pour Windows) et activer la gestion 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. Si vous souhaitez utiliser un compartiment
Amazon S3 existant, consultez Activation de la gestion des versions d'un compartiment, copiez
les modèles d'application sur cet emplacement puis passez à l'étape Création de ressources AWS
CodeDeploy (p. 27). Si vous souhaitez utiliser un référentiel GitHub pour votre source au lieu d'un
compartiment Amazon S3, copiez les modèles d'application sur ce référentiel et passez à Création de
ressources AWS CodeDeploy (p. 27).
Pour créer un compartiment Amazon S3
1.
Connectez-vous à AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://
console.aws.amazon.com/s3/.
2.
Choisissez Create Bucket.
3.
Dans Bucket Name, saisissez un nom pour votre compartiment, comme awscodepipelinedemobucket-example-date.
Note
Compte tenu du fait que tout nom de compartiment dans Amazon S3 doit être unique,
utilisez l'un des vôtres, et non pas le nom indiqué à titre d'exemple. Vous pouvez modifier
Version 09/07/2015
26
AWS CodePipeline Guide de l'utilisateur
Création de ressources AWS CodeDeploy
le nom de l'exemple simplement en y ajoutant la date. Notez ce nom, car vous l'utiliserez
durant ce didacticiel.
Dans le menu déroulant Region, choisissez la région où vous allez créer votre pipeline, par
exemple USA Ouest (Oregon), puis choisissez ensuite Create.
4.
Dans la console de votre compartiment, choisissez Properties, développez Versioning, puis
choisissez Enable Versioning.
Lorsque la gestion des versions est activée, Amazon S3 enregistre chaque version de chaque
objet dans le compartiment.
5.
Téléchargez ensuite un modèle de référentiel GitHub et enregistrez-le dans un dossier ou un
répertoire de votre ordinateur local.
Important
N'utilisez pas les boutons Clone or download ou Download ZIP des référentiels GitHub.
Cela crée une structure de dossiers imbriqués qui ne fonctionne pas avec AWS
CodeDeploy.
1.
Ouvrez le référentiel GitHub qui héberge le modèle.
• Pour Linux, macOS, or Unix : https://github.com/awslabs/aws-codepipeline-s3-awscodedeploy_linux
• Pour Windows : https://github.com/awslabs/AWSCodePipeline-S3AWSCodeDeploy_Windows
2.
Choisissez le dossier dist.
3.
Choisissez le nom de fichier.
• Pour Linux, macOS, or Unix : aws-codepipeline-s3-aws-codedeploy_linux.zip
• Pour Windows : AWSCodePipeline-S3-AWSCodeDeploy_Windows.zip
4.
6.
Choisissez View Raw, puis enregistrez le modèle de fichier sur votre ordinateur local.
Dans la console Amazon S3 de votre compartiment, choisissez Upload et suivez les instructions
permettant de charger vos fichiers .zip dans le compartiment.
Etape 2 : Créer des ressources AWS CodeDeploy
pour déployer le modèle d'application
Vous pouvez utiliser Elastic Beanstalk ou AWS CodeDeploy pour déployer votre code pour les
étapes intermédiaires ou pour la production. Dans cette procédure, vous utiliserez l'assistant Create
Deployment Walkthrough dans AWS CodeDeploy pour créer vos ressources de déploiement.
Pour créer un déploiement automatique AWS CodeDeploy
1.
Ouvrez la console AWS CodeDeploy à partir de l'adresse https://console.aws.amazon.com/
codedeploy dans la région où vous avez l'intention de créer votre pipeline. Par exemple, si vous
avez l'intention de créer votre pipeline dans USA Est (Virginie du Nord), choisissez cette région
dans le sélecteur de région.
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
Si la page Applications s'affiche au lieu de la page de Welcome dans la section Additional
Information, choisissez Create Deployment Walkthrough.
Version 09/07/2015
27
AWS CodePipeline Guide de l'utilisateur
Création de ressources AWS CodeDeploy
2.
Sur la page Welcome, choisissez Sample Deployment, puis Next Step.
3.
Dans la page Instance Settings, procédez comme suit :
1. Choisissez le système d'exploitation et la paire de clés d'instance Amazon EC2 que vous
souhaitez utiliser. Le système d'exploitation que vous choisirez détermine le modèle
d'application que vous allez spécifier lorsque vous créerez votre pipeline.
Important
Si vous choisissez Linux, macOS, or Unix, vous utiliserez aws-codepipeline-s3aws-codedeploy_linux.zip.
Si vous choisissez Windows, vous utiliserez AWSCodePipeline-S3AWSCodeDeploy_Windows.zip.
2. Dans la liste déroulante Key Pair Name, choisissez le nom de la paire de clés d'instance
Amazon EC2 que vous utiliserez pour vous connecter aux instances Amazon EC2 une fois
celles-ci lancées.
3. Dans Tag Key and Value, laissez le nom Key inchangé. Dans Value, saisissez
CodePipelineDemo.
4. Sélectionnez Launch Instances.
Pour plus d'informations sur chacun de ces choix, consultez Paramètres de l'instance.
4.
Une fois vos instances créées, choisissez Next Step.
5.
Sur la page Application Name, dans Application Name, saisissez
CodePipelineDemoApplication, puis Next Step.
6.
Dans la page Revision choisissez Next Step.
7.
Sur la page Deployment Group, dans Deployment Group Name, saisissez
CodePipelineDemoFleet, puis choisissez Next Step.
8.
Sur la page Service Role, dans le menu déroulant Service Role choisissez Use an existing service
role. Dans la liste Role Name, choisissez le rôle de service que vous souhaitez utiliser, puis
choisissez Next Step.
Version 09/07/2015
28
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Note
Si aucun rôle de service n'apparaît dans Role Name, ou si vous n'avez pas de rôle de
service à utiliser, choisissez Create a new service role ou suivez les étapes énoncées
dans Create a Service Role.
Le rôle de service que vous créez ou utilisez pour AWS CodeDeploy diffère du rôle de
service que vous allez créer pour AWS CodePipeline.
9.
Dans la page Deployment Configuration choisissez Next Step.
10. Sur la page Review choisissez Deploy Now. Le modèle d'application pour AWS CodeDeploy est
déployé à chacune des instances Amazon EC2.
11. Une fois le modèle d'application déployé, vérifiez le déploiement dans votre navigateur web en
accédant à http://PublicDNS pour chacune des instances Amazon EC2 du déploiement.
Pour obtenir la valeur de DNS public d'une instance Amazon EC2, dans la console Amazon EC2
sélectionnez l'instance et recherchez la valeur Public DNS dans l'onglet Description.
La page web affichera des liens vers la documentation AWS CodeDeploy.
Note
Il ne s'agit pas de la page web que vous allez déployer et publier avec le pipeline que
vous allez créer dans la section suivante.
Pour plus d'informations sur AWS CodeDeploy, consultez Mise en route avec AWS CodeDeploy.
Etape 3 : Créer votre premier pipeline dans AWS
CodePipeline
Dans cette partie de la procédure, vous allez créer le pipeline. Le modèle s'exécutera
automatiquement par le biais du pipeline.
Pour créer un processus de publication automatique AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Sur la page de présentation, choisissez Get started.
Si la page Welcome s'affiche, choisissez Create pipeline.
3.
Dans Step 1: Name, Pipeline name, saisissez MyFirstPipeline, puis Next step.
Note
Si vous choisissez un autre nom pour votre pipeline, veillez à utiliser ce nom au lieu de
MyFirstPipeline pendant le reste de cette procédure. Une fois le pipeline créé, vous
ne pouvez plus modifier son nom. Les noms de pipeline sont soumis à des limites. Pour
plus d'informations, consultez Restrictions (p. 186).
4.
Dans Step 2: Source, Source provider, choisissez Amazon S3. Dans Amazon S3 location,
saisissez le nom du compartiment Amazon S3 que vous avez créé dans Créer un compartiment
Amazon S3 (p. 26) et le modèle de fichier que vous avez copié dans ce compartiment.
Si vous choisissez Linux, macOS, or Unix, utilisez aws-codepipeline-s3-awscodedeploy_linux.zip. Si vous avez choisi Windows, utilisez AWSCodePipeline-S3AWSCodeDeploy_Windows.zip. Choisissez Next step.
Version 09/07/2015
29
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Par exemple, si vous avez nommé votre compartiment awscodepipeline-demobucketexample-date et que vous avez choisi Amazon Linux pour vos instances Amazon EC2 dans
AWS CodeDeploy, saisissez :
s3://awscodepipeline-demobucket-example-date/aws-codepipeline-s3-awscodedeploy_linux.zip
Si vous avez nommé votre compartiment awscodepipeline-demobucket-example-date
et que vous avez choisi Windows pour vos instances Amazon EC2 dans AWS CodeDeploy,
saisissez :
s3://awscodepipeline-demobucket-example-date/AWSCodePipeline-S3AWSCodeDeploy_Windows.zip
Note
Si vous avez choisi de copier le modèle d'application dans un référentiel GitHub au lieu
d'un compartiment Amazon S3, choisissez GitHub dans la liste des fournisseurs source,
puis suivez les instructions. Pour plus d'informations, consultez Création d'un pipeline
(Console) (p. 62).
5.
Dans Step 3: Build, choisissez No Build, puis Next step.
Note
La configuration d'une génération requiert un serveur ou un système de génération. Vous
pouvez suivre cette procédure pour configurer des ressources de génération et créer un
pipeline qui utilisera ces ressources dans le didacticiel suivant, Didacticiel avec pipeline à
quatre étapes (p. 53).
6.
Dans Step 4: Beta, Deployment Provider, choisissez AWS CodeDeploy. Dans Application name,
saisissez CodePipelineDemoApplication, ou cliquez sur le bouton Refresh et choisissez le
nom de l'application dans la liste. Dans Deployment group, saisissez CodePipelineDemoFleet,
ou choisissez-le dans la liste puis choisissez Next step.
Version 09/07/2015
30
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Note
Le nom « Bêta » est le nom donné par défaut à cette étape du pipeline, tout comme
« Source » est le nom donné à la première étape du pipeline.
7.
Dans Step 5: Service Role, choisissez Create role.
Sur la page de la console IAM qui décrit le rôle AWS-CodePipeline-Service qui sera créé pour
vous, choisissez Allow.
Sur la page Step 5: Service Role où apparaît AWS-CodePipeline-Service dans Role name,
choisissez Next step.
Note
La création d'un rôle de service n'est requise que la première fois où vous créez un
pipeline dans AWS CodePipeline. Si un rôle de service a déjà été créé, vous pourrez le
choisir dans le menu déroulant des rôles. Etant donné que la liste déroulante affiche tous
les rôles de service IAM associés à votre compte, si vous choisissez un nom différent de
celui par défaut, assurez-vous qu'il soit reconnaissable en tant que rôle de service pour
AWS CodePipeline.
8.
Dans Step 6: Review, vérifiez les informations puis choisissez Create pipeline.
9.
Le pipeline commence à s'exécuter automatiquement. Vous pouvez voir l'état d'avancement ainsi
que les messages de réussite et d'échec tandis que le modèle AWS CodePipeline déploie une
page web pour chaque instance Amazon EC2 dans le déploiement AWS CodeDeploy.
Version 09/07/2015
31
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Félicitations ! Vous venez de créer un pipeline simple dans AWS CodePipeline. Le pipeline est
composé de deux étapes : une étape source nommée Source, qui détecte automatiquement les
modifications apportées dans le modèle d'application versionné stocké dans le compartiment Amazon
S3 et extrait ces modifications dans le pipeline, et une étape Beta qui déploie ces modifications sur les
instances Amazon EC2 avec AWS 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 No executions yet à In
Progress, puis affiche soit Succeeded soit Failed. Le pipeline doit terminer la première exécution
en quelques minutes.
2.
Lorsque l'état de l'action affiche Succeeded dans la zone d'état de l'étape Beta, choisissez Details.
3.
Dans la section Deployment Details, sous Instance ID, choisissez l'identifiant d'instance de l'une
des instances déployées avec succès.
4.
Dans l'onglet Description, sous Public DNS, copiez l'adresse, puis collez-la dans la barre
d'adresses de votre navigateur web.
La page suivante affiche le modèle d'application que vous avez chargé dans votre compartiment
Amazon S3.
Version 09/07/2015
32
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez
Concepts (p. 4).
Etape 4 : Ajouter une étape supplémentaire à votre
pipeline
Ajoutez maintenant une autre étape dans le pipeline, pour un déploiement depuis des serveurs bêta
aux serveurs de production à l'aide d'AWS CodeDeploy. Tout d'abord, vous allez créer un autre
groupe de déploiement dans CodePipelineDemoApplication dans AWS CodeDeploy. Ensuite, vous
allez ajouter une étape qui inclura une action utilisant ce groupe de déploiement. Pour ajouter une
étape, vous allez utiliser la console AWS CodePipeline ou l'AWS CLI afin récupérer et de modifier
manuellement la structure du pipeline dans un fichier JSON, puis exécuter la commande updatepipeline pour mettre à jour le pipeline et ainsi appliquer vos modifications.
Rubriques
• Création d'un second groupe de déploiement dans AWS CodeDeploy (p. 33)
• Ajout du groupe de déploiement en tant qu'étape supplémentaire dans votre pipeline (p. 34)
Création d'un second groupe de déploiement dans AWS
CodeDeploy
Note
Dans cette partie de la procédure, vous allez créer un second groupe de déploiement, mais
vous allez le déployer aux mêmes instances Amazon EC2 qu'auparavant. Cette étape est
uniquement abordée à des fins pédagogiques. Elle est conçue pour échouer, afin de vous
montrer comment les erreurs s'affichent dans AWS CodePipeline.
Pour créer un second groupe de déploiement dans AWS CodeDeploy
1.
Ouvrez la console AWS CodeDeploy à partir de l'adresse https://console.aws.amazon.com/
codedeploy.
2.
Choisissez Applications, puis dans la liste des applications, choisissez
CodePipelineDemoApplication.
Version 09/07/2015
33
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
3.
Sous Deployment Groups, choisissez Create New Deployment Group.
4.
Sur la page Create New Deployment Group, sous Deployment Group Name, saisissez un nom
pour le deuxième groupe de déploiement, tel que CodePipelineProductionFleet. Dans Key,
laissez le réglage Name inchangé, mais dans Value, choisissez CodePipelineDemo dans la liste.
Laissez la configuration par défaut pour Deployment Configuration. Dans Service Role, choisissez
le même rôle de service que vous avez utilisé pour le déploiement initial, puis Create Deployment
Group.
Ajout du groupe de déploiement en tant qu'étape
supplémentaire dans votre pipeline
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 Amazon
EC2 que vous avez utilisées précédemment. Vous pouvez utiliser la console AWS CodePipeline ou
AWS CLI pour ajouter cette étape.
Rubriques
• Création d'une troisième étape (Console) (p. 34)
• Création d'une troisième étape (interface de ligne de commande) (p. 37)
Création d'une troisième étape (Console)
Vous pouvez utiliser la console AWS CodePipeline pour ajouter une étape en utilisant le nouveau
groupe de déploiement. Ce groupe de déploiement se déploie dans les instances Amazon EC2 que
vous avez déjà utilisées, par conséquent l'action de déploiement échouera lors de cette étape.
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Dans Name, choisissez le nom du pipeline que vous avez créé, MyFirstPipeline.
3.
Sur la page des détails du pipeline, choisissez Edit.
4.
Sur la page Edit, choisissez + Stage pour ajouter une étape immédiatement après l'étape Bêta.
Version 09/07/2015
34
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
5.
Dans le champ du nom de la nouvelle étape, saisissez Production, puis choisissez + Action
(
6.
).
Dans le menu déroulant Action category, choisissez Deploy. Dans Action name, saisissez
Deploy-Second-Deployment. Dans Deployment provider, choisissez AWS CodeDeploy
dans la liste déroulante. Dans la section AWS CodeDeploy sous Application Name, choisissez
CodePipelineDemoApplication dans la liste déroulante, comme vous l'avez fait lors de la
création du pipeline. Dans Deployment Group, choisissez le groupe de déploiement vous venez
de créer, CodePipelineProductionFleet. Dans la section Input artifacts saisissez MyApp
dans Name, puis Add action.
Tip
Le nom de l'artéfact d'entrée, MyApp, a été créé automatiquement à votre attention dans
l'assistant Create Pipeline en tant qu'artéfact de sortie de l'action source. Chaque action
est dotée d'un artéfact d'entrée (l'artéfact sur lequel fonctionne l'action), d'un artéfact
de sortie (le produit ou le résultat de l'action), ou des deux, selon le type d'action. Dans
cet exemple, l'action de déploiement saisit le résultat de l'action source dans l'étape
source, MyAppet il déploie. L'action configurée pour l'étape précédente (Bêta) a déjà
déployé l'application sur les mêmes instances Amazon EC2, par conséquent cette action
échouera. Pour plus d'informations sur les artéfacts d'entrée et de sortie et sur la structure
des pipelines, consultez Référence sur la structure du pipeline (p. 177).
7.
Sur la page Edit choisissez Save pipeline changes. Dans la boîte de dialogue Save pipeline
changes, choisissez Save and continue.
8.
Bien que la nouvelle étape a été ajoutée à votre pipeline, l'état affiche No executions yet, car
aucune modification n'a déclenché une autre exécution du pipeline. Vous devrez relancer
manuellement la dernière révision pour voir comment le pipeline s'exécute suite aux modifications.
Sur la page des détails du pipeline, choisissez Changement de version. Cette opération exécutera
Version 09/07/2015
35
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
la révision la plus récente disponible dans chaque emplacement source spécifié d'une action
source à travers le pipeline.
Pour utiliser l'AWS CLI afin d'exécuter à nouveau le pipeline à partir d'un terminal (Linux, macOS,
or Unix) ou d'une invite de commande (Windows), vous pouvez également exécuter la commande
start-pipeline-execution en spécifiant le nom du pipeline. Cette action exécutera 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 artéfact pipelineExecutionId.
9.
Revenez à la console AWS CodePipeline et choisissez MyFirstPipeline dans la liste des
pipelines pour ouvrir la page d'affichage de ce pipeline.
Le pipeline affiche trois étapes et l'état de l'artéfact 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 lors
de l'étape Production, l'action Deploy-Second-Deployment échoue.
10. Dans l'action Deploy-Second-Deployment, choisissez Details. Vous serez redirigé vers la page
des détails du déploiement AWS CodeDeploy. Dans ce cas, l'échec résulte du fait que, le premier
groupe d'instance ayant été déployé sur toutes les instances Amazon 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.
Version 09/07/2015
36
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
Création d'une troisième étape (interface de ligne de commande)
Même s'il est plus complexe d'utiliser l'AWS CLI pour ajouter une étape à votre pipeline que d'utiliser la
console, vous bénéficierez d'une plus grande visibilité concernant la structure du pipeline.
Pour créer une troisième étape pour votre pipeline
1.
Ouvrez une session de terminal (Linux, macOS, or Unix) ou une invite de commande (Windows)
et exécutez la commande get-pipeline 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-CodePipelineService",
"stages": [
...
}
2.
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.
Tip
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
3.
Copiez la section de l'étape Beta et collez-la après les deux premières étapes. Il s'agit d'une étape
de déploiement, tout comme l'étape Beta, par conséquent vous l'utiliserez comme modèle pour la
troisième étape.
4.
Modifiez le nom de l'étape et les détails du groupe de déploiement, puis enregistrez le fichier.
L'exemple suivant montre le JSON que vous devez ajouter au fichier pipeline.json après l'étape
Beta. 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 Beta et Production.
,
{
"name": "Production",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "Deploy-Second-Deployment",
"actionTypeId": {
"category": "Deploy",
Version 09/07/2015
37
AWS CodePipeline Guide de l'utilisateur
Ajout d'une étape supplémentaire
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName": "CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineProductionFleet"
},
"runOrder": 1
}
]
}
5.
Exécutez la commande update-pipeline, en spécifiant le nom du pipeline et le fichier JSON du
pipeline, d'une manière similaire à l'exemple suivant :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
Cette commande renvoie toute la structure du pipeline mise à jour.
6.
Exécutez la commande start-pipeline-execution, en spécifiant le nom du pipeline. Cette action
exécutera 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 artéfact pipelineExecutionId.
7.
Ouvrez la console AWS CodePipeline et choisissez MyFirstPipeline dans la liste des
pipelines.
Le pipeline affiche trois étapes et l'état de l'artéfact 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é.
Version 09/07/2015
38
AWS CodePipeline Guide de l'utilisateur
Activation et désactivation des transitions entre les étapes
8.
Dans l'action Deploy-Second-Deployment, choisissez Details pour voir les détails de l'échec.
Vous serez redirigé vers la page des détails du déploiement AWS CodeDeploy. Dans ce cas,
l'échec résulte du fait que, le premier groupe d'instance ayant été déployé sur toutes les instances
Amazon 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.
Etape 5 : Activer et désactiver les transitions entre
les étapes d'AWS CodePipeline
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 activer et désactiver les transitions entre les étapes dans un pipeline AWS CodePipeline
1.
Ouvrez la console AWS CodePipeline et choisissez MyFirstPipeline dans la liste des
pipelines.
2.
Sur la page des détails du pipeline, choisissez la flèche qui indique la transition entre la deuxième
étape, Beta, et la troisième étape que vous avez ajoutée dans la section précédente, Production.
Version 09/07/2015
39
AWS CodePipeline Guide de l'utilisateur
Nettoyage des ressources
3.
Dans la boîte de dialogue Disable Transition, saisissez une raison pour désactiver la transition
entre les étapes et choisissez Disable.
La flèche entre les étapes affiche une icône, et le changement de couleur indique que la transition
a été désactivée.
4.
Téléchargez à nouveau votre modèle dans le compartiment Amazon S3. Le compartiment
étant versionné, ce changement lancera automatiquement le pipeline. Pour plus d'informations,
consultez Upload the sample application (p. 27).
5.
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 doit se produire au niveau de la troisième étape. Ce processus peut prendre
quelques minutes.
6.
Activez la transition en sélectionnant la flèche qui indique que la transition a été désactivée entre
les deux étapes. Dans la boîte de dialogue Enable Transition, choisissez Enable. L'étape va lancer
l'exécution en quelques minutes et essayer de traiter l'artéfact 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 déploiement
CodePipelineProductionFleet avant d'activer la transition et spécifiez un autre ensemble
d'instances Amazon EC2 où vous allez déployer l'application. Pour plus d'informations sur
cette étape, consultez Modification des paramètres de groupe de déploiement. La création
d'instances Amazon EC2 supplémentaires peut entraîner des frais.
Etape 6 : Nettoyage des ressources
Vous pouvez utiliser certaines des ressources que vous avez créées en suivant la procédure du
didacticiel Didacticiel avec pipeline à quatre étapes (p. 53). Par exemple, vous pouvez réutiliser
l'application et le déploiement AWS CodeDeploy. Toutefois, une fois ce didacticiel terminé, ou d'autres,
vous devrez supprimer le pipeline, ainsi que les ressources qu'il utilise, afin de ne pas être facturé pour
l'utilisation de ces ressources. Tout d'abord, supprimez le pipeline, puis l'application AWS CodeDeploy
et ses instances Amazon EC2 associées et enfin, le compartiment Amazon S3.
Pour nettoyer les ressources utilisées dans ce didacticiel
1.
Pour nettoyer vos ressources AWS CodePipeline, suivez les instructions contenues dans
Suppression d'un pipeline dans AWS CodePipeline (p. 96).
2.
Pour nettoyer vos ressources AWS CodeDeploy, suivez les instructions contenues dans
Procédure de déploiement du nettoyage.
Version 09/07/2015
40
AWS CodePipeline Guide de l'utilisateur
Procédure pas à pas avec pipeline
simple (référentiel AWS CodeCommit)
3.
Pour supprimer le compartiment Amazon S3, suivez les instructions contenues dans Suppression
ou vidage d'un compartiment Amazon S3. Si vous ne souhaitez pas créer davantage de pipelines,
supprimez le compartiment Amazon S3 créé pour le stockage des artéfacts de votre pipeline. Pour
plus d'informations sur ce compartiment, consultez Concepts (p. 4).
Procédure pas à pas avec pipeline simple
(référentiel AWS CodeCommit)
Le moyen le plus simple pour vous familiariser avec AWS CodePipeline consiste à recourir à l'assistant
Create Pipeline dans la console AWS CodePipeline pour créer un pipeline simple.
Dans cette procédure, vous allez utiliser AWS CodePipeline pour déployer le code présent dans un
référentiel AWS CodeCommit sur une seule instance Amazon EC2. Vous utiliserez AWS CodeDeploy
en tant que service de déploiement.
Ce n'est pas ce que vous recherchez ? Pour créer un pipeline simple à l'aide d'un compartiment
versionné Amazon S3 en tant que référentiel de code, consultez Procédure pas à pas avec pipeline
simple (compartiment Amazon S3) (p. 26).
Une fois que vous avez terminé cette procédure, vous devez être suffisamment familiarisé avec les
concepts AWS CodeCommit pour l'utiliser comme un référentiel dans vos pipelines.
Avant de commencer, assurez-vous que vous avez terminé les tâches suivantes :
• Configuration d'un utilisateur IAM
• Installation et configuration de l'AWS CLI
En outre, prenez soin de réaliser ces tâches spécifiques aux services :
• AWS CodeCommit : Installation de Git et configuration des informations d'identification
• AWS CodeDeploy: Création d'un profil d'instance IAM et d'un rôle de service AWS CodeDeploy
• AWS CodePipeline : Attribution des autorisations AWS CodePipeline pour le rôle d'utilisateur IAM
Note
Si vous avez déjà terminé le didacticiel Procédure pas à pas avec pipeline simple
(compartiment Amazon S3) (p. 26), mais que vous n'avez pas encore nettoyé ses
ressources, vous devrez créer des noms différents pour la plupart des ressources utilisées
dans ce didacticiel. Par exemple, au lieu de MyFirstPipeline, vous pouvez nommer votre
pipeline MySecondPipeline.
Rubriques
• Etape 1 : Créer un référentiel AWS CodeCommit et local (p. 42)
• Etape 2 : Ajouter un modèle de code à votre référentiel AWS CodeCommit (p. 42)
• Etape 3 : Créer une instance Amazon EC2 et installer l'agent AWS CodeDeploy (p. 43)
• Etape 4 : Créer une application dans AWS CodeDeploy (p. 45)
• Etape 5 : Créer votre premier pipeline dans AWS CodePipeline (p. 46)
• Etape 6 : Modifier un code dans votre référentiel AWS CodeCommit (p. 51)
• Etape 7 : Tâches facultatives de gestion de l'étape (p. 53)
• Etape 8 : Nettoyage des ressources (p. 53)
Version 09/07/2015
41
AWS CodePipeline Guide de l'utilisateur
Création d'un référentiel AWS CodeCommit
Etape 1 : Créer un référentiel AWS CodeCommit et
local
Pour commencer cette procédure, vous allez créer un référentiel dans AWS CodeCommit. Votre
pipeline obtiendra un code source à partir de ce référentiel lorsqu'il s'exécute. Vous allez également
créer un référentiel local où vous conserverez et mettrez à jour le code avant de le publier dans le
référentiel AWS CodeCommit.
Important
AWS CodeCommit est actuellement pris en charge uniquement dans les régions suivantes :
• Région USA Est (Virginie du Nord) (us-east-1)
• Région USA Est (Ohio) (us-east-2)
• Région USA Ouest (Oregon) (us-west-2)
• Région UE (Irlande) (eu-west-1)
Veillez à exécuter toutes les étapes de ce didacticiel avec l'une de ces régions AWS
sélectionnée.
Suivez les deux premières procédures dans Git avec le didacticiel AWS CodeCommit du Guide de
l'utilisateur AWS CodeCommit :
• Etape 1 : Créer un référentiel AWS CodeCommit
• Etape 2 : Créer un référentiel local
Tip
Pour plus d'informations sur la connexion à un référentiel local que vous créez, consultez
Connexion à un référentiel AWS CodeCommit.
Une fois que vous avez terminé ces deux procédures, revenez à cette page et passez à l'étape
suivante. Ne passez pas à la troisième étape du didacticiel AWS CodeCommit. Vous allez, au lieu de
cela, effectuer d'autres étapes dans ce didacticiel.
Etape 2 : Ajouter un modèle de code à votre
référentiel AWS CodeCommit
Dans cette étape, vous allez télécharger un code pour un modèle d'application qui a été créé pour
un modèle de procédure détaillée AWS CodeDeploy, et vous allez l'ajouter à votre référentiel AWS
CodeCommit.
1.
Téléchargez le fichier suivant :
• SampleApp_Linux.zip.
2.
Décompressez les fichiers à partir de SampleApp_Linux.zip dans le répertoire local que vous avez
créé lors de la procédure précédente (par exemple, /tmp/my-demo-repo ou c:\temp\mydemo-repo).
Veillez à placer les fichiers directement dans votre répertoire local. N'incluez pas un dossier
SampleApp_Linux. Dans Linux, macOS, or Unix, par exemple, votre répertoire et votre hiérarchie
de fichiers devraient ressembler à ceci :
Version 09/07/2015
42
AWS CodePipeline Guide de l'utilisateur
Création d'une instance Amazon EC2 et
installation de l'agent AWS CodeDeploy
/tmp
|my-demo-repo
|-- appspec.yml
|-- index.html
|-- LICENSE.txt
`-- scripts
|-- install_dependencies
|-- start_server
`-- stop_server
3.
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
4.
Exécutez la commande suivante pour organiser tous vos fichiers à la fois :
git add -A
5.
Exécutez la commande suivante pour valider les fichiers avec un message de validation :
git commit -m "Added sample application files"
6.
Exécutez la commande suivante pour publier les fichiers depuis votre référentiel local vers votre
référentiel AWS CodeCommit :
git push
7.
Les fichiers que vous avez téléchargés et ajoutés à votre référentiel local ont maintenant été
ajoutés à la branche master dans votre référentiel AWS CodeCommit MyDemoRepo et sont prêts
à être inclus dans un pipeline.
Etape 3 : Créer une instance Amazon EC2 et
installer l'agent AWS CodeDeploy
Dans cette étape, vous allez créer l'instance Amazon EC2 sur laquelle vous allez déployer un modèle
d'application. Dans le cadre de ce processus, vous allez installer l'agent AWS CodeDeploy sur
l'instance. L'agent AWS CodeDeploy est un package logiciel qui permet d'utiliser une instance dans les
déploiements AWS CodeDeploy.
Pour lancer une instance
1.
Ouvrez la console Amazon EC2 à l'adresse https://console.aws.amazon.com/ec2/.
2.
Sur le tableau de bord de la console, sélectionnez Launch Instance.
3.
Sur la page Etape 1 : Sélection d'une Amazon Machine Image (AMI), trouvez la rangée
correspondant à l'édition HVM de l'AMI Amazon Linux et cliquez sur Sélectionner. (Cette AMI est
intitulée « Offre gratuite éligible » et est disponible en haut de la liste.)
Note
Ces configurations de base, appelées Amazon Machine Images (AMI), servent de
modèles pour votre instance. Cette procédure peut être effectuée avec une offre gratuite
Version 09/07/2015
43
AWS CodePipeline Guide de l'utilisateur
Création d'une instance Amazon EC2 et
installation de l'agent AWS CodeDeploy
d'AMI éligible. Pour rendre les choses plus simples, nous utiliserons l'édition HVM de
l'AMI Amazon Linux.
4.
Sur la page Etape 2 : Choisir un type d'instance choisissez l'offre gratuite éligible t2.micro,
saisissez la configuration matérielle de votre instance, puis choisissez Suivant : Configurer les
détails de l'instance.
5.
Dans la page Etape 3 : Configurer les détails de l'instance, procédez de la façon suivante :
• Dans Nombre d'instances, saisissez 1.
• Pour Auto-assign Public IP, sélectionnez Enable.
• Dans Rôle IAM, choisissez un rôle IAM configuré pour être utilisé comme un profil d'instance
IAM en vue d'une utilisation avec AWS CodeDeploy. Si vous n'avez pas de profil d'instance
IAM, choisissez Créer un nouveau rôle IAM et suivez les instructions dans Création d'un profil
d'instance IAM pour vos instances Amazon EC2.
Note
Dans le cadre de cette procédure, vous pouvez utiliser la stratégie suivante sans
restriction dans votre profil d'instance IAM pour AWS CodeDeploy. Concernant les
pipelines que vous utilisez dans vos workflows de développement, vous pouvez créer
une stratégie de compartiment plus restrictive.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
6.
Sur la page Etape 3 : Configurer les détails de l'instance, développez Détails avancés et dans le
champ Données utilisateur, saisissez ce qui suit :
#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region useast-1
chmod +x ./install
./install auto
Ce code installera l'agent AWS CodeDeploy sur votre instance une fois qu'il est créé. Si vous
préférez, vous pouvez vous connecter à votre instance Linux à l'aide de SSH et installer l'agent
AWS CodeDeploy manuellement une fois que l'instance est créée.
7.
Laissez les autres éléments de la page Etape 3 : Configurer les détails de l'instance inchangés.
Choisissez Suivant : Ajouter le stockage, laisser la page Etape 4 : Ajouter le stockage telle quelle,
puis choisissez Suivant : Instance de balise.
Version 09/07/2015
44
AWS CodePipeline Guide de l'utilisateur
Création d'une application dans AWS CodeDeploy
8.
Sur la page Instance de balise, Nom figure dans la zone Clé, saisissez alors
MyCodePipelineDemo dans le champ Valeur, puis choisissez Suivant : Configurer le groupe de
sécurité.
Important
9.
Les champs Clé et Valeur sont sensibles à la casse.
Dans la page Etape 6 : Configurer le groupe de sécurité, procédez de la façon suivante :
• A côté de Attribuer un groupe de sécurité, choisissez Create a new security group.
• Dans la rangée SSH, sous Source, choisissez Mon IP.
• Choisissez Ajouter une règle, puis HTTP et, sous Source, choisissez Mon IP.
10. Choisissez Review and Launch.
11. Sur la page Examiner le lancement de l'instance, choisissez Lancement, puis procédez de l'une
des manières suivantes lorsque vous êtes invité à saisir une paire de clés :
• Si vous avez déjà une paire de clés à utiliser avec les instances Amazon EC2, sélectionnez
Choisir une paire de clés existante, puis sélectionnez votre paire de clés.
• Si vous n'avez pas encore créé une paire de clés, sélectionnez Créer une nouvelle paire de
clés, entrez un nom pour la paire de clés et choisissez Télécharger une paire de clés. C'est
votre seule occasion d'enregistrer le fichier de clé privée. Veillez à le télécharger. Enregistrez
le fichier de clé privée en lieu sûr. Vous devez fournir le nom de votre paire de clés quand vous
lancez une instance et vous devrez fournir la clé privée correspondante chaque fois que vous
vous connecterez à l'instance. Pour plus d'informations, consultez Paires de clés Amazon EC2.
Caution
Ne sélectionnez pas l'option Proceed without a key pair. Si vous lancez votre instance
sans paire de clés, vous ne pourrez pas vous y connecter si vous avez besoin de
résoudre des problèmes avec l'agent AWS CodeDeploy.
Lorsque vous êtes prêt, cochez la case de confirmation, puis sélectionnez Launch Instances.
12. Sélectionnez View Instances pour fermer la page de confirmation et revenir à la console.
13. 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.)
14. Vous devrez peut-être patienter quelques minutes avant de pouvoir vous connecter à l'instance.
Vérifiez que votre instance a réussi ses contrôles de statut ; vous pouvez voir cette information
dans la colonne Contrôles des statuts.
Si vous souhaitez vérifier que l'agent AWS CodeDeploy est configuré correctement, vous pouvez vous
connecter à votre instance Linux à l'aide de SSH, puis vérifier que l'agent AWS CodeDeploy est en
cours d'exécution.
Etape 4 : Créer une application dans AWS
CodeDeploy
Dans AWS CodeDeploy, une application est un identifiant, sous la forme d'un nom, du code que vous
souhaitez déployer. AWS CodeDeploy utilise ce nom afin de garantir que la combinaison adéquate
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électionnerez le nom de l'application AWS CodeDeploy que vous créez dans cette
étape lorsque vous créerez votre pipeline ultérieurement dans cette procédure détaillée.
Version 09/07/2015
45
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Pour créer une application dans AWS CodeDeploy
1.
Ouvrez la console AWS CodeDeploy à partir de l'adresse https://console.aws.amazon.com/
codedeploy.
2.
Si la page Applications n'apparaît pas, dans le menu d'AWS CodeDeploy, choisissez Applications.
3.
Choisissez Create New Application.
4.
Dans la zone Application Name, tapez MyDemoApplication.
5.
Dans la zone Deployment Group Name, tapez MyDemoDeploymentGroup.
6.
Dans la liste Search by Tags, sélectionnez le type de balise Amazon EC2, puis choisissez Name
dans la case Key et dans la case Value, tapez MyCodePipelineDemo.
Important
Le champ Name de la clé doit être identique à la valeur que vous avez attribuée à votre
instance Amazon EC2 lorsque vous l'avez créée. Si vous avez marqué votre instance
avec une valeur autre que MyCodePipelineDemo, veillez à l'utiliser ici.
7.
Dans la liste Deployment Config, choisissez CodeDeployDefault.OneAtaTime.
8.
Dans la zone Service Role ARN, choisissez un Amazon Resource Name (ARN) pour un rôle de
service faisant confiance à AWS CodeDeploy avec, au minimum, le niveau de confiance et les
autorisations décrites dans Création d'un rôle de service pour AWS CodeDeploy. Pour connaître le
rôle de service ARN, consultez Obtention de l'ARN du rôle de service (Console).
9.
Choisissez Create Application.
Etape 5 : Créer votre premier pipeline dans AWS
CodePipeline
Vous êtes maintenant prêt à créer et à exécuter votre premier pipeline.
Pour créer un processus de publication automatique AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Sur la page de présentation, choisissez Get started.
Si la page All pipelines s'affiche, choisissez Create pipeline.
3.
Dans Step 1: Name, Pipeline name, saisissez MyFirstPipeline, puis Next step.
Note
Si vous choisissez un autre nom pour votre pipeline, veillez à utiliser ce nom au lieu de
MyFirstPipeline pendant le reste de cette procédure. Une fois le pipeline créé, vous
ne pouvez plus modifier son nom. Les noms de pipeline sont soumis à des limites. Pour
plus d'informations, consultez Restrictions (p. 186).
4.
Dans Step 2: Source, Source provider, choisissez AWS CodeCommit. Dans Repository name,
choisissez le nom du référentiel AWS CodeCommit que vous avez créé dans Création d'un
référentiel AWS CodeCommit (p. 42). Dans Branch name, 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 master sera disponible. Choisissez Next step.
Version 09/07/2015
46
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
5.
Dans Step 3: Build, choisissez No Build, puis Next step.
Note
Dans cette procédure, vous déployez un code qui ne requiert aucun service de
génération.
6.
Dans Step 4: Beta, Deployment provider, choisissez AWS CodeDeploy. Dans Application name,
saisissez MyDemoApplication, ou cliquez sur le bouton Refresh et choisissez le nom de
l'application dans la liste. Dans Deployment group, saisissez MyDemoDeploymentGroup, ou
choisissez-le dans la liste, puis choisissez Next step.
Version 09/07/2015
47
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Note
Le nom « Bêta » est le nom donné par défaut à cette étape du pipeline, tout comme
« Source » est le nom donné à la première étape du pipeline.
7.
Dans Step 5: Service Role, vous allez choisir le rôle IAM pour permettre à AWS CodePipeline
d'utiliser les ressources de votre compte. La création d'un rôle de service n'est requise que la
première fois où vous créez un pipeline dans AWS CodePipeline.
Si vous n'avez pas déjà créé un rôle de service pour AWS CodePipeline :
1. Sélectionnez Create role.
2. Sur la page de la console IAM qui décrit le rôle AWS-CodePipeline-Service qui sera créé pour
vous, choisissez Allow. Une fois que vous créez le rôle, AWS-CodePipeline-Service apparaîtra
sur la page Role name dans Step 5: Service Role.
3. Choisissez Next step.
Si vous disposez déjà d'un rôle de service pour AWS CodePipeline, vous devez vous assurer que
celui-ci est doté des autorisations nécessaires pour travailler avec AWS CodeCommit. Si votre
rôle de service a été créé après le 18 avril 2016, il est doté des autorisations nécessaires. S'il a
été créé avant le 18 avril 2016, vous devrez peut-être suivre les étapes suivantes :
1. Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2. Dans le volet de navigation de la console IAM, choisissez Rôles, puis choisissez votre rôle
AWS-CodePipeline-Service dans la liste des rôles.
3. Dans l'onglet Permissions dans Inline Policies, sur la rangée de votre stratégie de rôle de
service, choisissez Edit Policy.
Version 09/07/2015
48
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Tip
Votre rôle de service possède un nom dans un format similaire à oneClick_AWSCodePipeline-1111222233334.
4. Dans la case Policy Document, ajoutez les éléments suivants à votre déclaration de stratégie :
{
"Action": [
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:UploadArchive",
"codecommit:GetUploadArchiveStatus",
"codecommit:CancelUploadArchive"
],
"Resource": "*",
"Effect": "Allow"
},
Les autorisations peuvent apparaître dans votre document de stratégie de la sorte une fois que
vous les aurez ajoutées :
5. Choisissez Validate Policy afin de vérifier que la stratégie ne contient aucune erreur. Si la
stratégie ne contient pas d'erreur, choisissez Apply Policy.
6. Sur la page Step 5: Service Role, dans Role name, choisissez le nom de votre rôle de service
pour AWS CodePipeline.
Etant donné que la liste déroulante affiche tous les rôles de service IAM associés à votre
compte, si vous choisissez un nom différent de celui par défaut, assurez-vous qu'il soit
reconnaissable en tant que rôle de service pour AWS CodePipeline.
7. Choisissez Next step.
8.
Dans Step 6: Review, vérifiez les informations puis choisissez Create pipeline.
9.
Le pipeline commence à s'exécuter automatiquement. Vous pouvez voir l'état d'avancement ainsi
que les messages de réussite et d'échec tandis que le modèle AWS CodePipeline déploie une
page web pour chaque instance Amazon EC2 du déploiement AWS CodeDeploy.
Version 09/07/2015
49
AWS CodePipeline Guide de l'utilisateur
Création de votre premier pipeline
Félicitations ! Vous venez de créer un pipeline simple dans AWS CodePipeline. Le pipeline est
composé de deux étapes : une étape source nommée Source, qui détecte les modifications apportées
dans le modèle d'application stocké dans le référentiel AWS CodeCommit et extrait ces modifications
dans le pipeline, et une étape Beta qui déploie ces modifications sur l'instance Amazon EC2 avec AWS
CodeDeploy. Vous vérifierez 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 No executions yet à In
Progress, puis affiche soit Succeeded soit Failed. Le pipeline doit terminer la première exécution
en quelques minutes.
2.
Une fois que l'état du pipeline affiche Succeeded, dans la zone d'état de l'étape Beta, choisissez
Details.
3.
Dans la console AWS CodeDeploy, dans Deployment Details, Instance ID, choisissez l'identifiant
de l'instance déployée avec succès.
4.
Dans l'onglet Description, sous Public DNS, copiez l'adresse, puis collez-la dans la barre
d'adresses de votre navigateur web.
Voici le modèle d'application vous avez téléchargé et publié sur votre référentiel AWS
CodeCommit.
Version 09/07/2015
50
AWS CodePipeline Guide de l'utilisateur
Mise à jour du code de votre référentiel AWS CodeCommit
Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez
Concepts (p. 4).
Etape 6 : Modifier un code dans votre référentiel
AWS CodeCommit
Dans cette étape, vous allez modifier le fichier HTML qui fait partie du modèle d'application AWS
CodeDeploy que vous avez déployé sur votre instance Amazon EC2. Lorsque votre pipeline
s'exécutera à nouveau dans le cadre de cette procédure, les modifications que vous avez apportées
seront visibles dans les URL http://PublicDNS.
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
2.
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
3.
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 AWS
CodePipeline, AWS CodeCommit, and AWS CodeDeploy.</h2></div>
<div align="center">
<p>Learn more:</p>
Version 09/07/2015
51
AWS CodePipeline Guide de l'utilisateur
Mise à jour du code de votre référentiel AWS CodeCommit
<p><a href="http://docs.aws.amazon.com/codepipeline/latest/
userguide/">AWS CodePipeline User Guide</a></p>
<p><a href="http://docs.aws.amazon.com/codecommit/latest/
userguide/">AWS CodeCommit User Guide</a></p>
<p><a href="http://docs.aws.amazon.com/codedeploy/latest/
userguide/">AWS CodeDeploy User Guide</a></p>
</div>
</body>
</html>
4.
Validez et de publiez vos modifications sur votre référentiel AWS CodeCommit en exécutant les
commandes suivantes, une à la fois :
git commit -am "Updated sample application files"
git push
Votre pipeline est configuré de sorte à s'exécuter chaque fois que votre code est modifié sur votre
référentiel AWS CodeCommit.
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 No executions yet à In
Progress, puis affiche soit Succeeded soit Failed. Le pipeline doit s'exécuter en quelques minutes.
2.
Une fois que l'état de l'action affiche Succeeded, dans la zone d'état de l'étape Beta, choisissez
Details.
3.
Dans la section Deployment Details, sous Instance ID, choisissez l'identifiant de l'instance.
4.
Dans l'onglet Description, sous Public DNS, copiez l'adresse, puis collez-la dans la barre
d'adresses de votre navigateur web.
La page web mise à jour s'affiche :
Pour plus d'informations sur les étapes, les actions et le fonctionnement des pipelines, consultez
Concepts (p. 4).
Version 09/07/2015
52
AWS CodePipeline Guide de l'utilisateur
Tâches facultatives de gestion de l'étape
Etape 7 : Tâches facultatives de gestion de l'étape
Si vous souhaitez acquérir davantage d'expérience concernant les étapes avant la fin de cette
procédure, vous pouvez suivre deux procédures supplémentaires dans Procédure pas à pas avec
pipeline simple (compartiment Amazon S3) (p. 26).
• Ajout d'une étape supplémentaire (p. 33)
• Activation et désactivation des transitions entre les étapes dans AWS CodePipeline (p. 39)
Note
A l'étape 4 de la deuxième procédure, au lieu de charger à nouveau votre modèle dans un
compartiment Amazon S3, comme cela a été décrit, modifiez le modèle d'application de
votre référentiel local et publiez-le sur votre référentiel AWS CodeCommit.
Etape 8 : Nettoyage des ressources
Vous pouvez utiliser certaines des ressources que vous avez créées dans cette procédure pour le
prochain didacticiel, Didacticiel avec pipeline à quatre étapes (p. 53). Par exemple, vous pouvez
réutiliser l'application et le déploiement AWS CodeDeploy. Toutefois, une fois ce didacticiel terminé,
ou d'autres, vous devrez supprimer le pipeline, ainsi que les ressources qu'il utilise, afin de ne pas être
facturé pour l'utilisation de ces ressources. Tout d'abord, supprimez le pipeline, puis l'application AWS
CodeDeploy et son instance Amazon EC2 associée et enfin, le référentiel AWS CodeCommit.
Pour nettoyer les ressources utilisées dans ce didacticiel
1.
Pour nettoyer vos ressources AWS CodePipeline, suivez les instructions contenues dans
Suppression d'un pipeline dans AWS CodePipeline (p. 96).
2.
Pour nettoyer vos ressources AWS CodeDeploy, suivez les instructions contenues dans
Procédure de déploiement du nettoyage.
3.
Pour supprimer le référentiel AWS CodeCommit, suivez les instructions dans Suppression d'un
référentiel AWS CodeCommit.
Mise en route pour la création d'un pipeline à
quatre étapes
Maintenant que vous avez créé votre premier pipeline dans Procédure pas à pas avec pipeline simple
(compartiment Amazon S3) (p. 26) ou Procédure pas à pas avec pipeline simple (référentiel
AWS CodeCommit) (p. 41), vous pouvez commencer à créer des pipelines plus complexes. Ce
didacticiel vous aidera à créer un pipeline à quatre étapes qui utilise un référentiel GitHub pour la
source, un serveur de génération Jenkins pour générer le projet et une application AWS CodeDeploy
pour déployer le code généré vers un serveur intermédiaire. 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 référentiel GitHub pour votre code source, vous devez créer ce référentiel
avant de pouvoir l'ajouter à un pipeline. Dans le cadre de la configuration, ce didacticiel vous guide à
travers la configuration de Jenkins sur une instance Amazon EC2, à des fins de démonstration.
Avant de commencer ce didacticiel, assurez-vous de réunir les prérequis (p. 22).
Version 09/07/2015
53
AWS CodePipeline Guide de l'utilisateur
Définition des prérequis
Rubriques
• Etape 1 : Définition des prérequis (p. 54)
• Etape 2 : Créer un pipeline dans AWS CodePipeline (p. 56)
• Etape 3 : Ajouter une autre étape à votre pipeline (p. 58)
• Etape 4 : Nettoyage des ressources (p. 60)
Etape 1 : Définition des prérequis
En vue de l'intégration à Jenkins, AWS CodePipeline requiert l'installation du plugin Plug-in AWS
CodePipeline pour Jenkins sur n'importe quelle instance de Jenkins que vous souhaitez utiliser avec
AWS CodePipeline. Vous devez également configurer un utilisateur IAM dédié qui sera utilisé pour les
autorisations entre votre projet Jenkins et AWS CodePipeline. La méthode la plus simple pour intégrer
Jenkins et AWS CodePipeline consiste à installer Jenkins sur une instance Amazon EC2 qui utilise
un rôle d'instance IAM 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 Amazon 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.
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 ce modèle de code open
source sur le référentiel GitHub en suivant les étapes décrites dans cette rubrique. Vous aurez
besoin du modèle intégral qui se trouve dans votre référentiel GitHub, et non 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).
Rubriques
• Copie ou clonage du modèle dans un référentiel GitHub (p. 54)
• Création d'un rôle IAM en vue de l'intégration de Jenkins (p. 55)
• Installation et configuration de Jenkins et du plugin Plug-in AWS CodePipeline pour
Jenkins (p. 55)
Copie ou clonage du modèle dans un référentiel GitHub
Clonage du modèle et publication sur un référentiel GitHub
1.
Téléchargez le modèle de code depuis le référentiel GitHub ou clonez les référentiels sur votre
ordinateur local. Il y a deux modèles de modules :
Version 09/07/2015
54
AWS CodePipeline Guide de l'utilisateur
Définition des prérequis
• Si vous comptez déployer votre modèles sur des instances Linux, macOS, or Unix, choisissez
aws-codepipeline-jenkins-aws-codedeploy_linux.zip.
• Si vous comptez déployer votre modèle sur Windows, choisissez AWSCodePipeline-JenkinsAWSCodeDeploy_Windows.zip.
2.
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.
Création d'un rôle IAM en vue de l'intégration de Jenkins
A titre de bonne pratique, envisagez de lancer une instance Amazon EC2 pour héberger votre serveur
Jenkins et d'utiliser un rôle IAM pour accorder à cette instance les autorisations requises afin d'interagir
avec AWS CodePipeline.
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Dans la console IAM, dans le volet de navigation, choisissez Rôles, puis Create New Role.
3.
Sur la page Set Role Name, saisissez le nom du rôle que vous allez spécifiquement créer pour
l'intégration de Jenkins (par exemple, JenkinsAccess), puis choisissez Next Step. Sur la page
Select Role Type cliquez sur le bouton Select en regard d'Amazon EC2, puis choisissez Next
Step. Sur la page Attach Policy, sélectionnez AWSCodePipelineCustomActionAccess managed
policy, puis choisissez Next Step. Passez en revue les informations du rôle, puis choisissez
Create Role.
Lorsque vous créez l'instance Amazon EC2 où vous allez installer Jenkins, dans Etape 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 Rôles IAM pour
Amazon EC2, Utilisation des rôles IAM pour accorder des autorisations aux applications s'exécutant
sur les instances Amazon EC2 et Création d'un rôle pour déléguer des autorisations à un service AWS.
Installation et configuration de Jenkins et du plugin Plug-in
AWS CodePipeline pour Jenkins
Pour installer Jenkins et le plugin Plug-in AWS CodePipeline pour Jenkins
1.
Créez une instance Amazon EC2 où vous allez installer Jenkins, et dans Etape 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 des instances Amazon EC2,
consultez Lancement d'une instance Amazon EC2.
Tip
2.
3.
Vous pouvez utiliser des ressources Jenkins que vous possédez déjà, toutefois
vous devez créer un utilisateur IAM spécifique, appliquer la stratégie gérée
AWSCodePipelineCustomActionAccess à 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 plus
d'informations, consultez Dépannage (p. 151).
Installation de Jenkins sur l'instance Amazon EC2. Pour plus d'informations, consultez la
documentation de Jenkins relative à l'installation de Jenkins et à la mise en route et l'accès à
Jenkins, ainsi que details of integration with Jenkins (p. 13) dans Intégrations de produits et
services (p. 10).
Lancez Jenkins et sur la page d'accueil, choisissez Manage Jenkins.
Version 09/07/2015
55
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline
4.
Sur la page Manage Jenkins, choisissez Manage Plugins.
5.
Cliquez sur l'onglet Available et dans le champ de recherche Filter, saisissez AWS
CodePipeline. Choisissez Plug-in AWS CodePipeline pour Jenkins dans la liste et choisissez
Download now and install after restart.
6.
Sur la page Installing Plugins/Upgrades, sélectionnez Restart Jenkins when installation is
complete and no jobs are running.
7.
Choisissez Back to Dashboard.
8.
Sur la page principale, choisissez New Item.
9.
Dans Item Name, nommez le projet Jenkins (par exemple, MyDemoProject). Choisissez
Freestyle project, puis OK.
Note
Assurez-vous que le nom de votre projet répond aux exigences relatives à AWS
CodePipeline. Pour plus d'informations, consultez Restrictions (p. 186).
10. Sur la page de configuration du projet, cochez la case Execute concurrent builds if necessary.
Dans Source Code Management, choisissez AWS CodePipeline. Si vous avez installé Jenkins sur
une instance Amazon EC2 et configuré l'AWS CLI avec le profil de l'utilisateur IAM que vous avez
créé pour l'intégration entre AWS CodePipeline et Jenkins, laissez tous les autres champs vides.
11. Choisissez Advanced et dans Provider, saisissez le nom du fournisseur de l'action telle qu'il
apparaît dans AWS 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 AWS CodePipeline. Pour plus d'informations, consultez Restrictions (p. 186).
12. 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 :
* * * * *
Cette configuration interroge AWS CodePipeline toutes les minutes.
13. Dans Build, choisissez Add build step. Choisissez Execute shell (Linux, macOS, or Unix) ou
Execute batch command (Windows), puis saisissez 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.
14. Choisissez Add post-build action, puis 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.
15. Choisissez Save pour enregistrer votre projet Jenkins.
Etape 2 : Créer un pipeline dans AWS CodePipeline
Dans cette partie du didacticiel, vous allez créer le pipeline à l'aide de l'assistant Create Pipeline.
Version 09/07/2015
56
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline
Pour créer un processus de publication automatique AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Si nécessaire, utilisez le sélecteur de région pour définir la même région que celle où se trouvent
les ressources de votre pipeline. Par exemple, si vous avez créé des ressources lors du didacticiel
précédent dans us-east-1, assurez-vous que le sélecteur de région est défini sur USA Est (Virginie
du Nord).
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
3.
Sur la page de présentation, choisissez Get started.
Si la page Welcome s'affiche, choisissez Create pipeline.
4.
Dans Step 1: Name, Pipeline name, saisissez MySecondPipeline, puis choisissez Next step.
Note
Si vous choisissez un autre nom pour votre pipeline, veillez à utiliser ce nom au lieu de
MySecondPipeline 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 plus
d'informations, consultez Limites (p. 186).
5.
Dans Step 2: Source, Source provider, choisissez GitHub, puis Connect to GitHub. Une nouvelle
fenêtre de navigateur s'ouvre alors, pour vous connecter à GitHub. Si vous y êtes invité, saisissez
vos informations d'identification GitHub.
Important
Ne fournissez pas vos informations d'identification AWS sur le site web de GitHub.
Après vous être connecté à GitHub, choisissez le référentiel et la branche où vous avez publié
le modèle que vous souhaitez utiliser pour ce didacticiel (aws-codepipeline-jenkins-awscodedeploy_linux.zip ou AWSCodePipeline-Jenkins-AWSCodeDeploy_Windows.zip), puis
choisissez Next Step.
Tip
Le nombre de jetons OAuth que vous pouvez utiliser dans GitHub est limité pour une
application spécifique, telle qu'AWS CodePipeline. Si vous envisagez de créer plusieurs
pipelines ou les actions source de My GitHub, vous pouvez configurer un jeton d'accès
personnel, et ensuite utiliser ce jeton OAuth pour toutes vos actions GitHub. Pour plus
d'informations, consultez Pour configurer un pipeline afin d'utiliser un jeton d'accès
personnel à partir de GitHub (p. 153).
6.
Dans Step 3: Build, choisissez Add Jenkins. Dans Provider name, saisissez le nom de l'action
que vous avez saisie dans le plugin Plug-in AWS CodePipeline pour Jenkins (par exemple
MyJenkinsProviderName). Ce nom doit correspondre exactement au nom du plugin Plug-in
AWS CodePipeline pour Jenkins. Dans Server URL, saisissez l'URL de l'instance Amazon EC2
où Jenkins est installé. Dans Project name, saisissez le nom du projet que vous avez créé dans
Jenkins, par exemple MyDemoProject, puis choisissez Next step.
7.
Dans Step 4: Beta, réutilisez l'application et le groupe de déploiement AWS CodeDeploy que vous
avez créés dans Procédure pas à pas avec pipeline simple (compartiment Amazon S3) (p. 26).
Dans Deployment provider, choisissez AWS CodeDeploy. Dans Application name, saisissez
CodePipelineDemoApplication, ou cliquez sur le bouton d'actualisation et choisissez le nom
de l'application dans la liste. Dans Deployment group, saisissez CodePipelineDemoFleet, ou
choisissez-le dans la liste puis choisissez Next step.
Version 09/07/2015
57
AWS CodePipeline Guide de l'utilisateur
Ajout d'étapes supplémentaires
Tip
8.
Vous pouvez utiliser vos propres ressources AWS CodeDeploy ou en créer de nouvelles,
toutefois cela peut entraîner des frais supplémentaires.
Dans Step 5: Service Role, sur Role name, choisissez le rôle de service que vous avez créé pour
AWS CodePipeline (par exemple, AWS-CodePipeline-Service), puis Next step.
Note
La création d'un rôle de service n'est requise que la première fois où vous créez un
pipeline dans AWS CodePipeline. Si vous avez suivi les étapes de l'une des procédures
de création d'un pipeline simple, vous avez déjà créé ce rôle de service et pourrez le
choisir dans la liste déroulante. La liste déroulante affiche tous les rôles de service IAM
associés à votre compte, par conséquent si vous choisissez un nom autre que la valeur
par défaut, choisissez ce nom à la place. Si vous n'avez pas encore créé un rôle de
service, choisissez Create role.
9.
Si vous utilisez un référentiel AWS CodeCommit au lieu d'un référentiel GitHub et
que vous utilisez un rôle de service créé avant le 18 avril 2016, assurez-vous que
celui-ci inclut les autorisations requises pour accéder à AWS CodeCommit. Pour plus
d'informations, consultez Ajout d'autorisations aux autres services AWS (p. 163).
Dans Step 6: Review, vérifiez les informations puis choisissez Create pipeline.
10. Le pipeline démarre automatiquement et exécute le modèle à travers le pipeline. Vous pouvez
afficher la progression et les messages de succès et d'échec, tandis que le pipeline convertit le
modèle Haml en HTML et le déploie comme page web dans chacune des instances Amazon EC2
du déploiement AWS CodeDeploy.
Etape 3 : Ajouter une autre étape à votre pipeline
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.
Tip
Si vous ne souhaitez pas ajouter une autre étape à votre pipeline, vous pouvez ajouter une
action de test à l'étape Bêta de celui-ci, avant ou après l'action de déploiement.
Ajout d'une étape de test à votre pipeline
Rubriques
• Recherche de l'adresse IP d'une instance (p. 58)
• Création d'un projet Jenkins pour tester le déploiement (p. 59)
• Création d'une quatrième étape (p. 60)
Recherche de l'adresse IP d'une instance
Pour vérifier l'adresse IP d'une instance où vous avez déployé votre code
1.
2.
Lorsque l'état du pipeline affiche Succeeded dans la zone d'état de l'étape Bêta, choisissez
Details.
Dans la section Deployment Details, sous Instance ID, choisissez l'identifiant d'instance de l'une
des instances déployées avec succès.
Version 09/07/2015
58
AWS CodePipeline Guide de l'utilisateur
Ajout d'étapes supplémentaires
3.
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
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.
2.
Dans Item Name, nommez le projet Jenkins (par exemple, MyTestProject). Choisissez
Freestyle project, puis OK.
Note
Assurez-vous que le nom de votre projet répond aux exigences relatives à AWS
CodePipeline. Pour plus d'informations, consultez Restrictions (p. 186).
3.
Sur la page de configuration du projet, cochez la case Execute concurrent builds if necessary.
Dans Source Code Management, choisissez AWS CodePipeline. Si vous avez installé Jenkins sur
une instance Amazon EC2 et configuré l'AWS CLI avec le profil de l'utilisateur IAM que vous avez
créé pour l'intégration entre AWS CodePipeline et Jenkins, laissez tous les autres champs vides.
Important
Si vous configurez un projet Jenkins qui n'est pas installé sur une instance Amazon
EC2 ou si celui-ci est installé sur une instance Amazon EC2 qui exécute un système
d'exploitation Windows, renseignez les champs requis par l'hôte proxy et par les
paramètres de votre port et fournissez les informations d'identification de l'utilisateur IAM
que vous avez configuré pour l'intégration entre Jenkins et AWS CodePipeline.
4.
Choisissez Advanced et dans Category, choisissez Test.
5.
Dans Provider, saisissez le même nom que vous avez utilisé pour le projet de génération (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 respecter les exigences d'attribution de noms pour les actions dans AWS
CodePipeline. Pour plus d'informations, consultez Restrictions (p. 186).
6.
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 :
* * * * *
Cette configuration interroge AWS CodePipeline toutes les minutes.
7.
Dans Build, choisissez Add build step. Si vous effectuez un déploiement sur Linux, macOS, or
Unix, choisissez Execute shell puis saisissez ce qui suit, l'adresse IP étant l'adresse de l'instance
Amazon 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 Windows, choisissez Execute batch command puis
saisissez ce qui suit, l'adresse IP étant l'adresse de l'instance Amazon EC2 que vous avez copiée
précédemment :
Version 09/07/2015
59
AWS CodePipeline Guide de l'utilisateur
Nettoyage des ressources
set TEST_IP_ADDRESS=192.168.0.4 rake test
Tip
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
8.
Choisissez Add post-build action, puis AWS CodePipeline Publisher. Ne choisissez pas Add.
9.
Choisissez Save pour enregistrer votre projet Jenkins.
Création d'une quatrième étape
Pour ajouter une étape à votre pipeline qui inclut l'action de test Jenkins
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Dans Name, choisissez le nom du pipeline que vous avez créé, MySecondPipeline.
3.
Sur la page des détails du pipeline, choisissez Edit.
4.
Sur la page Edit, choisissez + Stage pour ajouter une étape immédiatement après l'étape Bêta.
5.
Dans le champ du nom de la nouvelle étape, tapez un nom (par exemple, Test), puis + Action.
6.
Dans le menu déroulant Action category, choisissez Test. Dans Action name, saisissez
MyJenkinsTest-Action. Dans Test provider, choisissez le nom du fournisseur spécifié dans
Jenkins (par exemple, MyJenkinsProviderName). Dans Project name, saisissez le nom du
projet que vous avez créé dans Jenkins (par exemple, MyTestProject). Dans Input artifacts,
choisissez l'artéfact de génération de Jenkins, dont le nom par défaut est MyBuiltApp, puis Add
action.
Pour plus d'informations sur les artéfacts d'entrée et de sortie et sur la structure des pipelines,
consultez Référence sur la structure du pipeline (p. 177).
7.
Sur la page Edit choisissez Save pipeline changes. Dans la boîte de dialogue Save pipeline
changes, choisissez Save and continue.
8.
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 exécuter
le modèle à travers le pipeline révisé, choisissez Changement de version sur la page des détails
du pipeline.
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.
Etape 4 : Nettoyage des ressources
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 ne souhaitez pas continuer d'utiliser AWS
CodePipeline, supprimez le pipeline, puis l'application AWS CodeDeploy et ses instances Amazon
EC2 associées et enfin, le compartiment Amazon S3 utilisé pour stocker les artéfacts. Vous devez
également envisager de supprimer d'autres ressources, comme le référentiel GitHub, si vous ne
comptez pas les utiliser.
Version 09/07/2015
60
AWS CodePipeline Guide de l'utilisateur
Nettoyage des ressources
Pour nettoyer les ressources utilisées dans ce didacticiel
1.
Ouvrez une session de terminal (Linux, macOS, or Unix) ou une invite de commande (Windows)
et exécutez la commande delete-pipeline pour supprimer le pipeline que vous avez créé. Pour
MySecondPipeline, saisissez la commande suivante :
aws codepipeline delete-pipeline --name "MySecondPipeline"
Cette commande ne donne aucun résultat.
2.
Pour nettoyer vos ressources AWS CodeDeploy, suivez les instructions contenues dans
Nettoyage.
3.
Pour nettoyer les ressources de votre instance, supprimez l'instance Amazon EC2 où vous avez
installé Jenkins. Pour plus d'informations, consultez Nettoyage de votre instance et du volume.
4.
Si vous ne souhaitez pas créer davantage de pipelines ou réutiliser AWS CodePipeline, supprimez
le compartiment Amazon S3 utilisé pour stocker les artéfacts de votre pipeline. Pour supprimer le
compartiment, suivez les instructions contenues dans Suppression d'un compartiment. Pour plus
d'informations sur ce compartiment, consultez Concepts (p. 5).
5.
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
référentiel GitHub, suivez les instructions contenues dans Suppression d'un référentiel sur le site
web de GitHub.
Version 09/07/2015
61
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline (Console)
Création d'un pipeline dans AWS
CodePipeline
Pour définir un processus de lancement automatique, vous créez un pipeline. Il s'agit d'une structure
de workflow qui décrit la progression des modifications logicielles d'un processus de publication, et qui
est constituée d'une combinaison d'étapes et d'actions que vous configurez.
Note
Lorsque vous ajoutez des étapes pour générer, déployer, tester ou appeler, en plus des
options par défaut fournies avec AWS CodePipeline, vous pouvez choisir des actions
personnalisées que vous avez déjà créées en vue d'une utilisation avec vos pipelines. Les
actions personnalisées peuvent être utilisées pour des tâches telles que l'exécution d'un
processus de génération développé en interne ou d'une suite de tests. Des identificateurs de
version sont inclus pour vous aider à faire la distinction entre les différentes versions d'une
action personnalisée dans les listes de fournisseurs. Pour plus d'informations, consultez
Création d'une action personnalisée pour un pipeline (p. 108).
Avant de créer un pipeline, vous devez d'abord suivre les étapes décrites dans Configuration (p. 22).
Pour plus d'informations sur les pipelines, consultez les pages Concepts (p. 4), Mise en
route (p. 25), et, si vous voulez créer un pipeline en utilisant l'AWS CLI, Référence sur la structure du
pipeline (p. 177). Pour afficher la liste des pipelines, consultez Affichage d'un pipeline (p. 101).
Rubriques
• Création d'un pipeline (Console) (p. 62)
• Création d'un pipeline (Interface de ligne de commande) (p. 66)
Création d'un pipeline (Console)
Pour créer un pipeline dans la console, vous devez fournir l'emplacement des fichiers source et des
informations sur les fournisseurs que vous utiliserez pour vos actions.
Les pipelines doivent contenir au moins deux étapes. Lorsque vous utilisez la console pour créer un
pipeline, en plus d'une étape source, vous devez inclure une étape de génération et une étape Bêta
(déploiement), ou les deux. Vous pouvez ensuite modifier le pipeline pour ajouter d'autres étapes.
Version 09/07/2015
62
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline (Console)
Pour créer un pipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Sur la page Welcome, choisissez Create pipeline.
Si vous utilisez AWS CodePipeline pour la première fois, une page d'introduction s'affiche au lieu
de la page Welcome. Sélectionnez Pour commencer.
3.
Sur la page Step 1: Name, dans la case Pipeline name, saisissez le nom de votre pipeline et
choisissez Next step.
Au sein d'un seul compte AWS, chaque pipeline que vous créez dans une région doit avoir un
nom unique. Des noms peuvent être réutilisés pour des pipelines de régions différentes.
Note
Une fois le pipeline créé, vous ne pouvez plus modifier son nom. Pour plus d'informations
sur les autres limitations, consultez Restrictions (p. 186).
4.
Sur la page Step 2: Source de la liste déroulante Source provider, sélectionnez le type de
référentiel dans lequel votre code source sera stocké et spécifiez ses options requises :
• GitHub : choisissez Connect to GitHub. Si vous y êtes invité, saisissez vos informations
d'identification GitHub.
Important
N'entrez pas vos informations d'identification AWS.
Si vous vous connectez à GitHub pour la première fois à partir d'AWS CodePipeline vous serez
invité à autoriser l'accès des applications à votre compte. Vérifiez les autorisations requises
pour l'intégration puis, si vous souhaitez continuer, choisissez Authorize application. Pour
plus d'informations sur l'intégration d'AWS CodePipeline avec GitHub, consultez Intégrations
d'actions source (p. 10).
Tip
Le nombre de jetons OAuth que vous pouvez utiliser dans GitHub est limité pour une
application spécifique, telle qu'AWS CodePipeline. Si vous envisagez de créer plusieurs
pipelines ou les actions source de My GitHub, vous pouvez configurer un jeton d'accès
personnel, et ensuite utiliser ce jeton OAuth pour toutes vos actions GitHub. Pour plus
d'informations, consultez Pour configurer un pipeline afin d'utiliser un jeton d'accès
personnel à partir de GitHub (p. 153).
Sur la page Source de l'assistant Create Pipeline, dans la liste déroulante Repository,
choisissez le référentiel GitHub que vous souhaitez utiliser comme emplacement source pour
votre pipeline. Dans Branch, dans la liste déroulante, choisissez la branche que vous souhaitez
utiliser, puis Next step.
• Amazon S3 : dans Amazon S3 location, saisissez le nom du compartiment Amazon S3 et
le chemin d'accès à l'objet d'un compartiment où la gestion des versions est activée, puis
choisissez Next step. Le format du nom et du chemin du compartiment ressembleront à
l'exemple suivant :
s3://bucketName/folderName/objectName
Version 09/07/2015
63
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline (Console)
• AWS CodeCommit : dans Repository name, choisissez le nom du référentiel AWS CodeCommit
que vous souhaitez utiliser en tant qu'emplacement source pour votre pipeline. Dans Branch
name, dans la liste déroulante, choisissez la branche que vous souhaitez utiliser, puis Next
step.
Note
L'objet et le type de fichier doivent être compatibles avec le système de déploiement que
vous avez l'intention d'utiliser, par exemple Elastic Beanstalk ou AWS CodeDeploy. Voici
quelques types de fichier pris en charge : .zip, .tar et .tgz. Pour plus d'informations sur les
types de conteneur pris en charge pour Elastic Beanstalk consultez Personnalisation et
configuration des environnements Elastic Beanstalk et Plateformes prises en charge. Pour
plus d'informations sur le déploiement des révisions avec AWS CodeDeploy consultez
Chargement de votre révision d'application et Préparer une révision.
5.
Sur la page Step 3: Build, effectuez l'une des opérations suivantes et choisissez Next step :
• Choisissez No Build pour ignorer la configuration d'une étape de génération.
• Choisissez un fournisseur d'action personnalisée de services de génération que vous souhaitez
utiliser et indiquez les détails de configuration pour ce fournisseur.
Tip
La procédure d'ajout d'un fournisseur de génération varie selon le fournisseur. Pour
obtenir un exemple sur la manière d'ajouter Jenkins comme fournisseur de génération,
consultez Didacticiel avec pipeline à quatre étapes (p. 53).
• Sélectionnez AWS CodeBuild, puis Select an existing build project ou Create a new build
project.
• Pour un projet de génération existant, dans Project name, choisissez le nom du projet de
génération, puis choisissez Save build project.
• Pour un nouveau projet de génération, assurez-vous d'avoir réalisé les étapes de Plan a
Build, puis suivez les instructions de Création d'un pipeline qui utilise AWS CodeBuild dans le
AWS CodeBuild Guide de l'utilisateur.
Tip
Assurez-vous que le rôle de service pour AWS CodePipeline dispose des autorisations
appropriées pour AWS CodeBuild. Pour plus d'informations, consultez Ajout
d'autorisations aux autres services AWS (p. 163).
6.
Sur la page Step 4: Beta, effectuez l'une des opérations suivantes et choisissez Next step :
• Choisissez No Deployment pour ignorer la configuration d'une étape de déploiement.
Note
Vous pouvez ignorer l'ajout d'un fournisseur de déploiement maintenant, uniquement si
vous avez choisi un fournisseur de génération à l'étape précédente.
Version que
09/07/2015
• Choisissez une action personnalisée
vous avez créée pour un fournisseur de déploiement.
64
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline (Console)
• Choisissez l'un des fournisseurs par défaut suivants dans la liste déroulante Deployment
provider :
• AWS CodeDeploy : saisissez ou choisissez le nom d'une application AWS CodeDeploy
existante dans Application name et le nom d'un groupe de déploiement pour cette application
dans Deployment group, puis choisissez Next step. Vous pouvez également créer une
application, un groupe de déploiement, ou les deux, en choisissant les liens suivants dans
AWS CodeDeploy.
• AWS Elastic Beanstalk : saisissez ou choisissez le nom d'une application Elastic Beanstalk
existante dans Application name ainsi qu'un environnement pour cette application dans
Environment name, puis choisissez Next step. Vous pouvez également créer une application,
un environnement, ou les deux, en choisissant les liens suivants dans Elastic Beanstalk.
• AWS OpsWorks : saisissez ou choisissez le nom de la pile que vous souhaitez utiliser
dans Stack et la couche associée à vos instances cibles dans Layer. Dans App, choisissez
l'application que vous souhaitez mettre à jour et déployer. Si vous avez besoin de créer une
application, choisissez create a new one in AWS OpsWorks.
Pour plus d'informations sur l'ajout d'une application à une pile et à une couche dans AWS
OpsWorks, consultez Ajout d'applications dans le AWS OpsWorks User Guide.
Pour obtenir un exemple d'utilisation de bout en bout d'un pipeline simple dans AWS
CodePipeline comme source de code exécuté sur les layers AWS OpsWorks, consultez
Utilisation d'AWS CodePipeline avec AWS OpsWorks.
• AWS CloudFormation : Effectuez l'une des opérations suivantes :
• Dans Action mode, choisissez Create or update a stack, entrez le nom d'une pile et le nom
du fichier modèle et choisissez le nom d'un rôle qui sera assumé par AWS CloudFormation.
Vous pouvez également entrer le nom d'un fichier de configuration et sélectionner une
option de capacité IAM.
• Dans Action mode, choisissez Create or replace a change set, entrez le nom d'une pile
et le nom d'un jeu de modifications, puis choisissez le nom d'un rôle qui sera assumé par
AWS CloudFormation. Vous pouvez également entrer le nom d'un fichier de configuration
et sélectionner une option de capacité IAM.
Pour obtenir des informations détaillées sur l'intégration des capacités AWS CloudFormation
dans un pipeline dans AWS CodePipeline, consultez Livraison continue avec AWS
CodePipeline dans le AWS CloudFormation Guide de l'utilisateur.
Version 09/07/2015
65
AWS CodePipeline Guide de l'utilisateur
Création d'un pipeline (Interface de ligne de commande)
Tip
7.
Une fois qu'un pipeline a été créé avec succès, vous pouvez le modifier pour ajouter
d'autres étapes de déploiement ou d'autres actions à une étape de déploiement.
Sur la page Step 5: Service Role, effectuez l'une des opérations suivantes et choisissez Next
step :
• Dans la liste déroulante Service Role, choisissez un rôle de service IAM que vous avez
configuré pour AWS CodePipeline.
• Si vous ne disposez pas d'un rôle de service, choisissez Create role, puis sur la page de
console IAM décrivant le rôle qui sera créé pour vous, choisissez Allow. Sur la page Step 5:
Service Role, AWS-CodePipeline-Service s'affiche dans le menu déroulant.
Note
En fonction de la date de création de votre rôle de service, vous devrez peut-être
mettre à jour ses autorisations pour qu'il prenne en charge des services AWS
supplémentaires. Pour plus d'informations, consultez Ajout d'autorisations aux autres
services AWS (p. 163).
Pour plus d'informations sur le rôle de service et sa déclaration de stratégie, consultez
Modification d'une stratégie pour un rôle de service IAM (p. 161).
8.
Sur la page Step 6: Review, passez en revue la configuration de votre pipeline, puis choisissez
Create pipeline pour créer le pipeline ou Previous pour revenir en arrière et modifier votre choix.
Pour quitter l'assistant sans créer de pipeline, choisissez Cancel.
Maintenant que vous avez créé votre pipeline, vous pouvez le voir dans la console. Le pipeline
s'exécutera automatiquement après sa création. Pour plus d'informations, consultez Affichage
d'un pipeline (p. 101). Vous pouvez également apporter des modifications au pipeline. Pour plus
d'informations, consultez Modification d'un pipeline (p. 70).
Création d'un pipeline (Interface de ligne de
commande)
Pour utiliser l'AWS CLI afin de créer un pipeline, vous devez créer un fichier JSON afin de définir la
structure du pipeline, puis exécuter la commande create-pipeline avec le paramètre --cli-inputjson.
La méthode la plus simple pour créer le fichier JSON consiste à commencer avec un pipeline existant.
Vous pouvez utiliser la commande get-pipeline pour obtenir une copie de la structure JSON de ce
pipeline, puis modifier cette structure dans un éditeur de texte brut. Pour plus d'informations sur la
structure du pipeline, consultez Référence sur la structure du pipeline (p. 177) et create-pipeline dans
la Références de l'API AWS CodePipeline.
Tip
Si vous ne disposez pas déjà d'un pipeline, vous pouvez utiliser l'assistant de la console AWS
CodePipeline pour en créer un et utiliser par la suite cette structure JSON comme base pour
votre pipeline.
Version 09/07/2015
66
AWS CodePipeline Guide de l'utilisateur
Créer le fichier JSON
Vous aurez besoin de l'ARN du rôle de service que vous avez créé pour AWS CodePipeline dans
Configuration (p. 22) et du nom d'un compartiment Amazon S3 dans lequel les artéfacts du pipeline
seront stockés. Ce compartiment doit être situé dans la même région que votre pipeline. Vous
utiliserez ces deux éléments lorsque vous exécuterez la commande create-pipeline. Contrairement à
la console, la commande create-pipeline de l'AWS CLI ne peut pas créer un compartiment Amazon S3
pour le stockage des artéfacts. Le compartiment doit déjà exister.
Important
Vous ne pouvez pas utiliser l'AWS CLI pour créer un pipeline qui inclut les actions partenaires.
Pour créer un pipeline qui inclut les actions partenaires, utilisez la console AWS CodePipeline.
Rubriques
• Créer le fichier JSON (p. 67)
• Exécutez la commande create-pipeline (p. 69)
Créer le fichier JSON
Pour créer un fichier JSON, utilisez la commande get-pipeline pour copier la structure d'un pipeline
existant dans un fichier, modifiez-le, puis utilisez-le lorsque vous exécutez la commande createpipeline.
Pour créer le fichier JSON
1.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez
la commande get-pipeline sur un pipeline et copiez le résultat de la commande dans un fichier
JSON. Par exemple, pour un pipeline nommé MyFirstPipeline, vous devez saisir quelque chose de
semblable à ce qui suit :
aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
Le résultat de la commande est envoyé au fichier pipeline.json.
2.
Ouvrez le fichier dans un éditeur de texte brut et modifiez les valeurs pour refléter la structure que
vous souhaitez créer. Vous devez au moins modifier le nom du pipeline. Vous devez également
décider si vous souhaitez modifier le compartiment Amazon S3 où sont stockés les artéfacts de
ce pipeline, l'emplacement source de votre code, le prestataire de services pour le déploiement, la
méthode de déploiement de votre code et d'autres informations.
La structure du modèle de pipeline en deux étapes suivant met en évidence les valeurs que vous
devez penser à modifier pour votre pipeline. Votre pipeline contiendra probablement plus de deux
étapes :
{
"pipeline": {
"roleArn": "arn:aws:iam::80398EXAMPLE::role/AWS-CodePipelineService",
"stages": [
{
"name": "Source",
"actions": [
{
"inputArtifacts": [],
"name": "Source",
"actionTypeId": {
Version 09/07/2015
67
AWS CodePipeline Guide de l'utilisateur
Créer le fichier JSON
"category": "Source",
"owner": "AWS",
"version": "1",
"provider": "S3"
},
"outputArtifacts": [
{
"name": "MyApp"
}
],
"configuration": {
"S3Bucket": "awscodepipeline-demobucketexample-date",
"S3ObjectKey":
"ExampleCodePipelineSampleBundle.zip"
},
"runOrder": 1
}
]
},
{
"name": "Beta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "Deploy-CodeDeploy-Application",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName":
"CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineDemoFleet"
},
"runOrder": 1
}
]
}
],
"artifactStore": {
"type": "S3",
"location": "codepipeline-us-east-1-1234567890"
},
"name": "MyPipelineName",
"version": 1
}
}
3.
Une fois que vous serez satisfait de sa structure, enregistrez votre fichier en lui attribuant un nom
tel que pipeline.json.
Version 09/07/2015
68
AWS CodePipeline Guide de l'utilisateur
Exécutez la commande create-pipeline
Exécutez la commande create-pipeline
Une fois que vous disposerez d'un fichier JSON contenant la structure de votre pipeline, utilisez ce
fichier lorsque vous exécutez la commande create-pipeline.
Pour créer un pipeline
1.
Exécutez la commande create-pipeline et utilisez le paramètre --cli-input-json pour spécifier
le fichier JSON que vous venez de créer.
Pour créer un pipeline nommé MySecondPipeline avec un fichier JSON intitulé pipeline.json qui
inclut le nom « MySecondPipeline » comme valeur de name dans le JSON, votre commande
devrait ressembler à ce qui suit :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline create-pipeline --cli-input-json file://pipeline.json
Cette commande renvoie la structure de l'ensemble du pipeline que vous avez créé.
2.
Pour afficher le pipeline que vous venez de créer, ouvrez la console AWS CodePipeline et faites
votre choix dans la liste des pipelines ou utilisez la commande get-pipeline-state. Pour plus
d'informations, consultez Affichage d'un pipeline (p. 101).
Version 09/07/2015
69
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (Console)
Modification d'un pipeline dans AWS
CodePipeline
Un pipeline décrit le processus de publication que vous souhaitez qu'AWS CodePipeline suive, y
compris concernant les étapes et les actions à réaliser. Vous pouvez modifier un pipeline pour ajouter
ou supprimer ces éléments. Cependant, contrairement à la création d'un pipeline, la modification d'un
pipeline ne déclenche pas une nouvelle exécution de la plus récente révision dans le pipeline. Si vous
souhaitez exécuter la plus récente révision dans un pipeline que vous venez de modifier, vous devez la
relancer manuellement. Dans le cas contraire, le pipeline à jour s'exécutera la prochaine fois que vous
apporterez une modification à un emplacement source configuré dans l'étape source du pipeline. Pour
plus d'informations, consultez Nouvelle exécution manuelle d'un pipeline (p. 120).
Rubriques
• Modification d'un pipeline (Console) (p. 70)
• Modification d'un pipeline (AWS CLI) (p. 72)
Modification d'un pipeline (Console)
Vous pouvez utiliser la console AWS CodePipeline pour ajouter, modifier ou supprimer les étapes d'un
pipeline, ainsi que pour ajouter, modifier ou supprimer des actions d'une étape.
Modification d'un pipeline dans la console AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
2.
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.
3.
Sur la page des détails du pipeline, choisissez Edit. La page d'édition du pipeline s'ouvre alors.
4.
Dans la page Edit, procédez de l'une des manières suivantes :
Version 09/07/2015
70
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (Console)
•
Pour modifier une étape, choisissez l'icône de modification (
) de cette étape. L'étape
se développe et affiche des icônes d'ajout d'action (
) en série et en parallèle
des actions existantes. Vous pouvez également modifier des actions dans cette vue, en
sélectionnant l'icône de modification de ces actions. Pour supprimer une action, choisissez
l'icône de suppression (
) de cette action.
Tip
Pour ajouter une action de génération à une étape, consultez Ajout d'une action de
génération AWS CodeBuild à un pipeline dans le AWS CodeBuild Guide de l'utilisateur.
• Pour modifier une action, choisissez l'icône de modification de cette action, puis changez
les valeurs qui vous intéressent dans le panneau Edit action. Les éléments marqués d'un
astérisque (*) sont obligatoires.
• Pour ajouter une étape, choisissez + Stage à l'emplacement du pipeline où vous souhaitez
ajouter une étape. Donnez un nom à l'étape, puis ajoutez-y au moins une action. Les éléments
marqués d'un astérisque (*) sont obligatoires.
• Pour supprimer une étape, choisissez l'icône de suppression de cette étape. L'étape ainsi que la
totalité de ses actions seront supprimées.
Par exemple, si vous souhaitez ajouter une action à une étape existante dans un pipeline :
1.
Dans l'étape où vous souhaitez ajouter votre action, choisissez l'icône de modification (
puis ajoutez votre action en choisissant + Action.
),
Tip
Pour ajouter une action qui s'exécutera en parallèle d'une autre action, choisissez
l'icône d'ajout d'une action en regard de cette dernière. Pour exécuter votre action
avant une autre action, choisissez l'icône d'ajout d'une action au-dessus de cette
dernière. Pour exécuter votre action après une autre action dans cette étape,
choisissez l'icône d'ajout d'une action sous cette dernière.
2. Le panneau Add action s'ouvre. Dans Action category, choisissez la catégorie de votre action,
par exemple génération ou déploiement. Dans le menu déroulant du système, choisissez
le système et fournissez ensuite tous les détails nécessaires à la configuration de l'action,
comme le nom de l'action, un fournisseur et l'artéfact d'entrée ou de sortie, en fonction du type
d'action. Les éléments marqués d'un astérisque (*) sont obligatoires. Pour plus d'informations
sur les exigences relatives aux actions dans AWS CodePipeline, notamment sur les noms des
artéfacts d'entrée et de sortie et leur utilisation, consultez Exigences de structure des actions
dans AWS CodePipeline (p. 178).
Tip
Certains fournisseurs d'action, comme GitHub, requièrent que vous vous connectiez
au site web du fournisseur pour pouvoir finaliser la configuration de l'action. Lorsque
vous accédez au site web d'un fournisseur, assurez-vous d'utiliser les informations
d'identification appropriées à ce site. N'utilisez pas vos informations d'identification
AWS.
3. Lorsque vous avez terminé de configurer votre action, choisissez Add action.
Version 09/07/2015
71
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (AWS CLI)
Note
Vous ne pouvez pas renommer une action ou une étape dans la vue de la console.
Vous pouvez ajouter une nouvelle étape ou une action en leur donnant un nouveau nom
et supprimer l'ancien. Assurez-vous que vous avez ajouté toutes les actions que vous
souhaitez inclure dans cette étape avant de supprimer l'ancienne.
5.
Lorsque vous avez terminé de modifier votre pipeline, cliquez sur Save pipeline changes pour
revenir à la page récapitulative.
Important
Une fois que vous avez enregistré vos modifications, vous ne pouvez plus les annuler.
Vous devrez alors modifier à nouveau le pipeline. En outre, si une révision est en cours
d'exécution dans votre pipeline lorsque vous enregistrez vos modifications, ce dernier ne
finalisera pas l'exécution. Si vous souhaitez exécuter une validation ou une modification
spécifique dans le pipeline révisé, vous devez relancer manuellement la modification
à travers le pipeline après avoir enregistré vos modifications. Dans le cas contraire, la
prochaine validation ou modification s'exécutera automatiquement dans le pipeline.
6.
Pour tester votre action, choisissez Changement de version afin de traiter cette validation dans
le pipeline, validez une modification de la source spécifiée dans l'étape source du pipeline, ou
bien suivez les étapes de Nouvelle exécution manuelle d'un pipeline (p. 120) pour publier
manuellement une modification via l'AWS CLI.
Modification d'un pipeline (AWS CLI)
Vous pouvez utiliser la commande update-pipeline pour modifier un pipeline.
Important
Vous pouvez modifier les pipelines qui incluent les actions partenaires à l'aide de l'AWS CLI,
toutefois vous ne devez pas modifier manuellement le JSON d'une action partenaire. Si vous
le faites, l'action partenaire échouera probablement une fois le pipeline mis à jour.
Modification d'un pipeline dans l'AWS CLI
1.
Ouvrez une session de terminal (Linux, macOS, or Unix) ou une invite de commande (Windows)
et exécutez la commande get-pipeline pour copier la structure du pipeline dans un fichier JSON.
Par exemple, pour un pipeline nommé MyFirstPipeline, saisissez la commande suivante :
aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
Cette commande ne renvoie rien, mais le fichier que vous avez créé doit apparaître dans le
répertoire où vous avez exécuté la commande.
2.
Ouvrez le fichier JSON dans un éditeur de texte brut et modifiez la structure du fichier pour refléter
les modifications que vous souhaitez apporter au pipeline. Par exemple, vous pouvez ajouter ou
supprimer des étapes, ou ajouter une autre action à une étape existante.
Note
Certaines modifications, par exemple la migration d'une action d'une étape à une autre,
suppriment l'historique du dernier état connu de l'action. En outre, si un pipeline contient
un ou plusieurs paramètres secrets, tel qu'un jeton OAuth pour une action, ce dernier sera
masqué par une série d'astérisque (****). Ces paramètres secrets resteront inchangés,
Version 09/07/2015
72
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (AWS CLI)
sauf si vous modifiez cette partie du pipeline (par exemple, le nom de l'action qui inclut
le jeton OAuth ou le nom de l'étape qui contient une action utilisant un jeton OAuth).
Si vous apportez une modification qui affecte une action incluant un jeton OAuth, vous
devez inclure la valeur du jeton dans le JSON modifié. Pour plus d'informations, consultez
Référence sur la structure du pipeline (p. 177).
L'exemple suivant montre comment ajouter une autre étape de déploiement dans le fichier
pipeline.json. Cette étape s'exécutera après la première étape de déploiement nommée Beta.
Note
Il s'agit juste d'une partie du fichier, et non pas de la structure entière. Pour plus
d'informations, consultez Référence sur la structure du pipeline (p. 177).
,
{
"name": "Beta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "Deploy-CodeDeploy-Application",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName":
"CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineDemoFleet"
},
"runOrder": 1
}
]
},
{
"name": "Production",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "Deploy-Second-Deployment",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
Version 09/07/2015
73
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (AWS CLI)
"outputArtifacts": [],
"configuration": {
"ApplicationName": "CodePipelineDemoApplication",
"DeploymentGroupName":
"CodePipelineProductionFleet"
},
"runOrder": 1
}
]
}
]
}
L'exemple suivant montre comment ajouter une étape source qui utilise un référentiel GitHub
comme action source. Pour plus d'informations sur l'intégration d'AWS CodePipeline avec GitHub,
consultez Intégrations d'actions source (p. 10).
Note
Il s'agit juste d'une partie du fichier, et non pas de la structure entière. Pour plus
d'informations, consultez Référence sur la structure du pipeline (p. 177).
{
"name": "Source",
"actions": [
{
"inputArtifacts": [],
"name": "Source",
"actionTypeId": {
"category": "Source",
"owner": "ThirdParty",
"version": "1",
"provider": "GitHub"
},
"outputArtifacts": [
{
"name": "MyApp"
}
],
"configuration": {
"Owner": "MyGitHubAccountName",
"Repo": "MyGitHubRepositoryName",
"Branch": "master",
"OAuthToken": "****"
},
"runOrder": 1
}
]
},
Vous devez fournir une valeur pour OAuthToken afin d'accéder au référentiel GitHub. Vous
pouvez utiliser un jeton d'accès personnel pour cette valeur. Pour créer un jeton d'accès personnel
dans GitHub, accédez à Settings, choisissez Personal access tokens, puis cliquez sur le lien de
génération d'un jeton d'accès personnel. Sur la page New personal access token, fournissez une
description dans Token description. Cochez les cases admin:repo_hook et repo et décochez les
autres, puis choisissez Generate token. Copiez le jeton d'accès personnel et stockez-le dans un
Version 09/07/2015
74
AWS CodePipeline Guide de l'utilisateur
Modification d'un pipeline (AWS CLI)
emplacement sûr car il s'agit du seul moment où vous serez en mesure d'y accéder. Collez ce
jeton en tant que valeur pour OAuthToken.
Tip
Pour plus d'informations sur l'ajout d'une action d'approbation à un pipeline à l'aide
de l'interface de ligne de commande, consultez Ajout d'une action d'approbation
manuelle (p. 81).
3.
Pour appliquer les modifications, exécutez la commande update-pipeline, en spécifiant le nom du
pipeline et le fichier JSON du pipeline, d'une manière similaire à l'exemple suivant :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
Cette commande affiche toute la structure du pipeline mise à jour.
Note
4.
5.
La commande update-pipeline interrompt le pipeline. Si une révision est exécutée dans
le pipeline lorsque vous exécutez la commande update-pipeline celle-ci est interrompue.
Vous devez lancer manuellement le pipeline pour exécuter cette révision dans le pipeline
mis à jour.
Ouvrez la console AWS CodePipeline et choisissez le pipeline que vous venez de modifier dans la
liste.
Le pipeline affiche vos modifications. La prochaine fois que vous apporterez une modification à
l'emplacement source, le pipeline exécutera cette modification via sa structure révisée.
Pour exécuter manuellement la dernière mise à jour dans la structure révisée du pipeline,
exécutez la commande start-pipeline-execution. Pour plus d'informations, consultez Nouvelle
exécution manuelle d'un pipeline (p. 120).
Pour plus d'informations sur la structure d'un pipeline et les valeurs attendues, consultez Référence sur
la structure du pipeline (p. 177) et Référence d'API AWS CodePipeline.
Version 09/07/2015
75
AWS CodePipeline Guide de l'utilisateur
Options de configuration pour les
actions d'approbation manuelle
Gestion des actions d'approbation
dans AWS CodePipeline
Dans AWS CodePipeline, vous pouvez ajouter une action d'approbation à une étape du pipeline à
l'endroit où vous souhaitez que l'exécution du pipeline s'interrompe, de sorte à ce qu'une personne
dotée des autorisations AWS Identity and Access Management requises puisse approuver ou rejeter
l'action.
Si l'action est approuvée, l'exécution du pipeline reprend. Si l'action est rejetée, ou si personne
n'approuve ou ne rejette l'action sous sept jours après que le pipeline a atteint l'action et est
interrompu, le résultat sera le même que si l'action était en échec, et l'exécution du pipeline sera
interrompue.
Vous pouvez utiliser des approbations manuelles à diverses fins :
• Vous souhaitez que quelqu'un vérifie le code ou une modification avant qu'une telle révision ne soit
autorisée à passer à l'étape suivante d'un pipeline.
• Vous souhaitez que quelqu'un procède à un test manuel d'assurance qualité sur la dernière version
d'une application, ou bien qu'il vérifie l'intégrité d'un artéfact de génération avant de le publier.
• Vous souhaitez que quelqu'un passe en revue un texte, nouveau ou mis à jour, avant sa publication
sur un site web professionnel.
Options de configuration pour les actions
d'approbation manuelle dans AWS CodePipeline
AWS CodePipeline offre trois options de configuration, que vous pouvez utiliser pour informer les
approbateurs de l'action d'approbation.
Publication de notifications de validation Vous pouvez configurer une action d'approbation pour publier
un message sur une rubrique Amazon Simple Notification Service lorsque le pipeline s'interrompt
au niveau de l'action. Amazon SNS remet le message à chaque point de terminaison inscrit dans la
rubrique. Vous devez utiliser une rubrique créée dans la même région AWS que le pipeline contenant
l'action d'approbation. Lorsque vous créez une rubrique, nous vous recommandons de lui donner un
nom qui explicite son objectif, dans des formats tels que MyFirstPipeline-us-east-1-approval.
Lorsque vous publiez des notifications d'approbation sur des rubriques Amazon SNS, vous pouvez
faire votre choix parmi différents formats, par exemple les destinataires d'un e-mail ou d'un SMS, les
Version 09/07/2015
76
AWS CodePipeline Guide de l'utilisateur
Conditions préalables et processus
pour les actions d'approbation
files d'attente SQS, les points de terminaisons HTTP/HTTPS ou les fonctions AWS Lambda invoquées
lorsque vous utilisez Amazon SNS. Pour plus d'informations sur les notifications de rubrique Amazon
SNS, consultez les rubriques suivantes :
• Présentation d'Amazon Simple Notification Service
• Création d'une rubrique dans Amazon SNS
• Envoi de messages d'Amazon SNS aux files d'attente Amazon SQS
• Abonnement d'une file d'attente à une rubrique Amazon SNS
• Envoi de messages SNS Amazon à des points de terminaison HTTP/HTTPS
• Invocation des fonctions lambda en utilisant des notifications Amazon SNS
Pour découvrir la structure des données JSON générées pour une notification d'action d'approbation,
consultez Format de données JSON pour les notifications d'approbation manuelle dans AWS
CodePipeline (p. 88).
Spécification d'une URL pour la révision Dans le cadre de la configuration de l'action d'approbation,
vous pouvez spécifier une adresse URL à réviser. L'URL peut être un lien dirigeant vers une
application web que vous souhaitez que les approbateurs testent, ou une page contenant davantage
d'informations sur votre demande d'approbation. L'URL est incluse dans la notification publiée dans
la rubrique Amazon SNS. Les approbateurs peuvent utiliser la console ou l'interface de ligne de
commande AWS pour la visualiser.
Saisie de commentaires pour les approbateurs Lorsque vous créez une action d'approbation, vous
pouvez également ajouter des commentaires qui s'afficheront à l'attention des utilisateurs recevant les
notifications ou visualisant l'action dans la réponse de console ou de l'interface de ligne de commande.
Aucune option de configuration Vous pouvez également décider de ne configurer aucune de ces trois
options. Celles-ci peuvent ne pas être nécessaires si par exemple vous allez informer directement un
utilisateur qu'il doit passer en revue une action ou si vous souhaitez simplement interrompre le pipeline
tant que vous n'avez pas décidé d'approuver l'action vous-même.
Configuration et présentation des workflows des
actions d'approbation dans AWS CodePipeline
Voici une vue d'ensemble de la mise en place et de l'utilisation des approbations manuelles.
1. Vous accordez les autorisations IAM nécessaires à un ou plusieurs utilisateurs IAM de votre
organisation en vue de l'approbation ou du rejet des actions d'approbation.
2. (Facultatif) Si vous utilisez des notifications Amazon SNS, assurez-vous que le rôle de service que
vous utilisez lors de vos opérations AWS CodePipeline est doté des autorisations nécessaires pour
accéder aux ressources Amazon SNS.
3. (Facultatif) Si vous utilisez des notifications Amazon SNS, vous créez une rubrique Amazon SNS et
vous y ajoutez un ou plusieurs abonnés ou points de terminaison.
4. Lorsque vous utilisez l'interface de ligne de commande AWS pour créer le pipeline, ou après avoir
utilisé l'interface de ligne de commande ou la console pour créer le pipeline, vous ajoutez une action
d'approbation à une étape du pipeline.
Version 09/07/2015
77
AWS CodePipeline Guide de l'utilisateur
Accorder des autorisations d'approbation à
un utilisateur IAM dans AWS CodePipeline
Si vous utilisez des notifications, vous incluez l'Amazon Resource Name (ARN) de la rubrique
Amazon SNS dans la configuration de l'action. (Un ARN est un identifiant unique pour une
ressource d'Amazon. Les ARN des rubriques Amazon SNS sont organisés comme suit
arn:aws:sns:us-east-1:80398EXAMPLE:MyApprovalTopic. Pour plus d'informations,
consultez Amazon Resource Name (ARN) et Espaces de noms de service AWS dans Référence
générale d'Amazon Web Services.)
5. Le pipeline s'interrompt lorsqu'il atteint l'action d'approbation. Si un ARN de rubrique Amazon SNS
a été inclus dans la configuration de l'action, une notification est publiée dans la rubrique Amazon
SNS, et un message est envoyé à tous les abonnés ou les points de terminaison de la rubrique,
avec un lien permettant de passer en revue l'action d'approbation dans la console.
6. Un approbateur examine l'URL cible et passe en revue les commentaires, le cas échéant.
7. L'approbateur utilise la console, l'interface de ligne de commande ou le kit de développement
logiciel pour fournir un commentaire récapitulatif et envoyer une réponse:
• Approbation : reprise de l'exécution du pipeline.
• Rejet : le statut de l'étape devient « Échec » et l'exécution du pipeline est interrompue.
Si aucune réponse n'est envoyée dans les sept jours, l'action est marquée en tant que « Échec ».
Rubriques
• Accorder des autorisations d'approbation à un utilisateur IAM dans AWS CodePipeline (p. 78)
• Attribution d'autorisations Amazon SNS à un rôle de service (p. 80)
• Ajout d'une action d'approbation manuelle (p. 81)
• Approbation ou rejet d'une action d'approbation (p. 85)
• Format de données JSON pour les notifications d'approbation manuelle (p. 88)
Accorder des autorisations d'approbation à un
utilisateur IAM dans AWS CodePipeline
Afin de pouvoir approuver ou rejeter des approbations, les utilisateurs IAM de votre organisation
doivent être autorisé à accéder aux pipelines et à mettre à jour l'état des actions d'approbation. Vous
pouvez accorder des autorisations d'accès à tous les pipelines et à toutes les actions d'approbation de
votre compte en associant la AWSCodePipelineApproverAccess stratégie gérée à un utilisateur,
rôle ou groupe IAM. Ou bien, vous pouvez accorder des autorisations limitées en précisant les
ressources accessibles à un utilisateur, rôle ou groupe IAM.
Note
Les autorisations décrites dans cette rubrique offrent un accès très limité. Si vous souhaitez
qu'un utilisateur, un rôle ou un groupe puisse faire plus que de simplement approuver ou
rejeter des actions d'approbation, vous pouvez joindre d'autres stratégies gérées. Pour plus
d'informations sur les stratégies gérées disponibles pour AWS CodePipeline, consultez
Référence des autorisations d'accès (p. 156).
Version 09/07/2015
78
AWS CodePipeline Guide de l'utilisateur
Octroi de droits d'approbation pour tous
les pipelines et les actions d'approbation
Octroi de droits d'approbation pour tous les pipelines
et les actions d'approbation
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Dans le volet de navigation, choisissez Groups, Roles, ou Users.
3.
Choisissez le groupe, rôle ou utilisateur IAM à qui vous souhaitez accorder des autorisations.
4.
Choisissez l'onglet Autorisations.
5.
Choisissez Add permissions, puis Attach existing policies directly.
6.
Sélectionnez la case à cocher en regard de la stratégie gérée
AWSCodePipelineApproverAccess, puis choisissez Next: Review.
7.
Choisissez Add permissions.
Spécifiez l'autorisation d'approbation pour les
pipelines et les actions d'approbation spécifiques
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
Important
Assurez-vous d'être connecté à AWS Management Console avec les mêmes informations
de compte que vous avez utilisées dans la rubrique Configuration (p. 22).
2.
Dans le volet de navigation, choisissez Groups ou Users, selon ce qui vous convient.
3.
Recherchez et choisissez le groupe ou l'utilisateur que vous souhaitez modifier.
4.
Sur la page récapitulative, cliquez sur l'onglet Permissions et développez la section Inline Policies.
5.
Effectuez l'une des actions suivantes :
• Si vous avez choisi Groups, choisissez désormais Create Group Policy. Si vous avez choisi
Users, choisissez désormais Create User Policy.
• Si aucune stratégie en ligne n'a été créée, choisissez click here.
6.
Choisissez Custom Policy, puis Select.
7.
Dans le champ Policy Name, nommez la stratégie.
8.
Spécifiez les ressources individuelles auquel un utilisateur IAM peut accéder. Par exemple, la
stratégie suivante autorise les utilisateurs à approuver ou rejeter uniquement l'action nommée
MyApprovalAction dans le pipeline MyFirstPipeline de la région Région USA Est (Virginie
du N.) (us-east-1) :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codepipeline:ListPipelines"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
Version 09/07/2015
79
AWS CodePipeline Guide de l'utilisateur
Attribution d'autorisations
Amazon SNS à un rôle de service
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineState",
"codepipeline:GetPipelineExecution"
],
"Effect": "Allow",
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline"
},
{
"Action": [
"codepipeline:PutApprovalResult"
],
"Effect": "Allow",
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline/MyApprovalStage/MyApprovalAction"
}
]
}
Note
L'autorisation codepipeline:ListPipelines est requise uniquement si les utilisateurs
IAM ont besoin d'accéder au tableau de bord AWS CodePipeline pour afficher cette
liste de pipelines. Si l'accès à la console n'est pas obligatoire, vous pouvez ignorer
codepipeline:ListPipelines.
9.
Choisissez Validate Policy. Corrigez toutes les erreurs mises en évidence dans un encadré rouge
en haut de la page.
10. Lorsque vous êtes satisfait de la stratégie, choisissez Apply Policy.
Octroi d'autorisations Amazon SNS à un rôle de
service AWS CodePipeline
Si vous avez l'intention d'utiliser Amazon SNS pour publier des notifications dans les rubriques lorsque
des actions d'approbation doivent être passées en revue, le rôle de service que vous utilisez lors de
vos opérations AWS CodePipeline doit avoir la permission d'accéder aux ressources Amazon SNS.
Vous pouvez utiliser la console IAM pour ajouter cette autorisation à votre rôle de service.
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
Important
Assurez-vous d'être connecté à AWS Management Console avec les mêmes informations
de compte que vous avez utilisées dans la rubrique Configuration (p. 22).
2.
3.
4.
Dans la console IAM, dans le volet de navigation, choisissez Roles.
Choisissez le nom du rôle de service que vous utilisez dans vos opérations AWS CodePipeline.
Dans l'onglet Autorisations, dans la zone Inline Policies, choisissez Create Role Policy.
–ou–
Si le bouton Create Role Policy n'est pas disponible, développez la zone Inline Policies, puis
choisissez click here.
Version 09/07/2015
80
AWS CodePipeline Guide de l'utilisateur
Ajout d'une action d'approbation manuelle
5.
Sur la page Set Permissions, choisissez Custom Policy puis Sélectionner.
6.
Sur la page Review Policy, dans le champ Nom de la stratégie, tapez un nom pour identifier cette
stratégie, comme SNSPublish.
7.
Collez la stratégie suivante dans le champ Document de stratégie :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "*"
}
]
}
8.
Choisissez Apply Policy.
Ajout d'une action d'approbation manuelle à un
pipeline dans AWS CodePipeline
Vous pouvez ajouter une action d'approbation à une étape d'un pipeline AWS CodePipeline à l'endroit
où vous souhaitez que ce dernier s'interrompe de sorte à permettre à un utilisateur d'approuver ou de
rejeter manuellement l'action.
Note
Les actions d'approbation ne peuvent pas être ajoutées aux étapes Source. Les étapes
Source peuvent uniquement contenir des actions source.
Si vous souhaitez utiliser Amazon SNS pour envoyer des notifications quand une action d'approbation
est en attente de vérification, vous devez tout d'abord satisfaire aux conditions suivantes :
• Permettre à votre rôle de service AWS CodePipeline d'accéder aux ressources Amazon SNS.
Pour plus d'informations, consultez Octroi d'autorisations Amazon SNS à un rôle de service AWS
CodePipeline (p. 80).
• Accorder à un ou plusieurs utilisateurs IAM de votre organisation l'autorisation de mettre à jour
l'état d'une action d'approbation. Pour plus d'informations, consultez Accorder des autorisations
d'approbation à un utilisateur IAM dans AWS CodePipeline (p. 78).
Ajouter une action d'approbation manuelle à un
pipeline AWS CodePipeline (Console)
Vous pouvez utiliser la console AWS CodePipeline pour ajouter une action d'approbation à un pipeline
AWS CodePipeline existant. Vous devez utiliser l'interface de ligne de commande AWS si vous
souhaitez ajouter des actions d'approbation lorsque vous créez un nouveau pipeline.
1.
Ouvrez la console AWS CodePipeline à l'adresse https://console.aws.amazon.com/codepipeline/.
2.
Dans Name, choisissez le pipeline.
3.
Sur la page des détails du pipeline, choisissez Edit.
Version 09/07/2015
81
AWS CodePipeline Guide de l'utilisateur
Ajouter une action d'approbation manuelle
à un pipeline AWS CodePipeline (Console)
4.
Si vous souhaitez ajouter une action d'approbation à une nouvelle étape, choisissez + Stage à
l'endroit du pipeline où vous voulez ajouter une demande d'approbation et nommez l'étape.
Si vous souhaitez ajouter une action d'approbation à une étape existante, choisissez l'icône de
modification (
) de cette étape.
5.
Choisissez l'icône d'action (
6.
).
Sur la page Add action, procédez comme suit :
1. Dans Action category, choisissez Approval.
2. Dans Action name, saisissez un nom pour identifier l'action.
3. Dans Approval type, choisissez Manual approval.
4. (Facultatif) Dans SNS topic ARN, choisissez le nom de la rubrique que vous allez utiliser pour
envoyer des notifications pour l'action d'approbation.
5. (Facultatif) Dans URL for review, saisissez l'URL de la page ou de l'application que vous
souhaitez que l'approbateur examine. Les approbateurs peuvent accéder à cette URL via un
lien inclus dans la vue de la console du pipeline.
6. (Facultatif) Dans Comments, saisissez toute information supplémentaire que vous souhaitez
partager avec le vérificateur.
Une fois la page terminée, celle-ci peut se présenter comme suit :
Version 09/07/2015
82
AWS CodePipeline Guide de l'utilisateur
Ajout d'une action d'approbation manuelle à un pipeline
AWS CodePipeline (interface de ligne de commande)
7. Choisissez Add action.
Ajout d'une action d'approbation manuelle à un
pipeline AWS CodePipeline (interface de ligne de
commande)
Vous pouvez utiliser l'interface de ligne de commande pour ajouter une action d'approbation à
un pipeline existant, ou lorsque vous en créez un. Pour ce faire, vous devez inclure une action
d'approbation avec le type Approbation manuelle à une étape que vous êtes en train de créer ou de
modifier.
Pour plus d'informations sur la création et la modification des pipelines, consultez Création d'un
pipeline (p. 62) et Modification d'un pipeline (p. 70).
Pour ajouter une étape à un pipeline qui inclut uniquement une action d'approbation, vous devez
inclure un élément similaire à l'exemple suivant, lors de la création ou de la mise à jour du pipeline.
Version 09/07/2015
83
AWS CodePipeline Guide de l'utilisateur
Ajout d'une action d'approbation manuelle à un pipeline
AWS CodePipeline (interface de ligne de commande)
Note
La section configuration est facultative. Il s'agit juste d'une partie, et non pas de toute
la structure, du fichier. Pour plus d'informations, consultez Référence sur la structure du
pipeline (p. 177).
{
"name": "MyApprovalStage",
"actions": [
{
"name": "MyApprovalAction",
"actionTypeId": {
"category": "Approval",
"owner": "AWS",
"version": "1",
"provider": "Manual"
},
"inputArtifacts": [],
"outputArtifacts": [],
"configuration": {
"NotificationArn": "arn:aws:sns:useast-1:80398EXAMPLE:MyApprovalTopic",
"ExternalEntityLink": "http://example.com",
"CustomData": "The latest changes include feedback from
Bob."},
"runOrder": 1
}
]
}
Si l'action d'approbation se trouve dans une étape qui comporte d'autres actions, la section de votre
fichier JSON contenant l'étape peut être similaire à l'exemple suivant.
Note
La section configuration est facultative. Il s'agit juste d'une partie, et non pas de toute
la structure, du fichier. Pour plus d'informations, consultez Référence sur la structure du
pipeline (p. 177).
,
{
"name": "Production",
"actions": [
{
"inputArtifacts": [],
"name": "MyApprovalStage",
"actionTypeId": {
"category": "Approval",
"owner": "AWS",
"version": "1",
"provider": "Manual"
},
"outputArtifacts": [],
"configuration": {
"NotificationArn": "arn:aws:sns:useast-1:80398EXAMPLE:MyApprovalTopic",
Version 09/07/2015
84
AWS CodePipeline Guide de l'utilisateur
Approbation ou rejet d'une action d'approbation
"ExternalEntityLink": "http://example.com",
"CustomData": "The latest changes include feedback from Bob."
},
"runOrder": 1
},
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "MyDeploymentStage",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName": "MyDemoApplication",
"DeploymentGroupName": "MyProductionFleet"
},
"runOrder": 2
}
]
}
Approbation ou rejet d'une action d'approbation
dans AWS CodePipeline
Lorsqu'un pipeline comprend une action d'approbation, l'exécution du pipeline s'interrompt à l'endroit
où l'action a été ajoutée. Le pipeline ne reprend que lorsqu'une personne approuve manuellement
l'action. Si un approbateur rejette l'action, ou si aucune réponse d'approbation n'est reçue dans les
sept jours suivant l'interruption du pipeline en vue d'une action d'approbation, l'état du pipeline devient
« Échec ».
Si la personne qui a ajouté l'action d'approbation du pipeline a configuré des notifications, il est
possible que vous receviez un e-mail similaire à celui-ci :
Version 09/07/2015
85
AWS CodePipeline Guide de l'utilisateur
Approbation ou rejet d'une action d'approbation (Console)
Approbation ou rejet d'une action d'approbation
(Console)
Si vous recevez une notification incluant un lien direct vers une action d'approbation, sélectionnez le
lien Approve or reject connectez-vous à la console si nécessaire puis passez à l'étape 7 ci-dessous.
Sinon, effectuez toutes les étapes suivantes.
1.
Ouvrez la console AWS CodePipeline à l'adresse https://console.aws.amazon.com/codepipeline/.
2.
Sur la page All Pipelines choisissez le nom du pipeline.
3.
Recherchez l'étape contenant l'action d'approbation.
4.
Passez votre souris sur l'icône d'informations pour afficher les commentaires et l'URL, le cas
échéant. Le message d'information qui s'affiche comprend également l'URL du contenu que vous
devez passer en revue, le cas échéant.
5.
Si une URL est indiquée, cliquez sur le lien Manual approval dans l'action pour ouvrir la page web
cible puis passez en revue le contenu.
6.
Revenez à la vue des détails du pipeline, puis cliquez sur le bouton Review.
7.
Dans la fenêtre Approve or reject the revision saisissez les commentaires relatifs à votre
évaluation, par exemple les raisons pour lesquelles vous approuvez ou refusez l'action, puis
cliquez sur le bouton Approve ou Reject.
Version 09/07/2015
86
AWS CodePipeline Guide de l'utilisateur
Approbation ou rejet d'une demande
d'approbation (interface de ligne de commande)
Approbation ou rejet d'une demande d'approbation
(interface de ligne de commande)
Pour utiliser l'interface de ligne de commande afin de répondre à une action d'approbation, vous devez
d'abord utiliser la commande get-pipeline-state pour récupérer le jeton associé à la dernière exécution
de l'action d'approbation.
1.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la
commande get-pipeline-state du pipeline qui contient l'action d'approbation. Par exemple, pour un
pipeline nommé MyFirstPipeline, saisissez ce qui suit :
aws codepipeline get-pipeline-state --name MyFirstPipeline
2.
Dans la réponse à la commande, recherchez la valeur token, qui apparaît dans
latestExecution dans la section actionStates pour l'action d'approbation. Exemples :
{
"created": 1467929497.204,
"pipelineName": "MyFirstPipeline",
"pipelineVersion": 1,
"stageStates": [
{
"actionStates": [
{
"actionName": "MyApprovalAction",
"currentRevision": {
"created": 1467929497.204,
"revisionChangeId":
"CEM7d6Tp7zfelUSLCPPwo234xEXAMPLE",
"revisionId": "HYGp7zmwbCPPwo23xCMdTeqIlEXAMPLE"
},
"latestExecution": {
"lastUpdatedBy": "arn:aws:iam::123456789012:user/
Bob",
"summary": "The new design needs to be reviewed
before release.",
"token": "1a2b3c4d-573f-4ea7-a67E-XAMPLETOKEN"
}
}
//More content might appear here
}
3.
Dans un éditeur de texte brut, créez un fichier où vous enregistrerez ce qui suit, au format JSON :
• Le nom du pipeline qui contient l'action d'approbation.
• Le nom de l'étape qui contient l'action d'approbation.
• Le nom de l'action d'approbation.
• La valeur du jeton que vous avez recueilli lors de l'étape précédente.
• Votre réponse à l'action, Approuvé ou Rejeté. (La réponse doit être en majuscule.)
• Vos commentaires récapitulatifs.
Pour l'exemple MyFirstPipeline précédent, votre fichier ressemblera à ce qui suit :
{
Version 09/07/2015
87
AWS CodePipeline Guide de l'utilisateur
Format de données JSON pour les
notifications d'approbation manuelle
"pipelineName": "MyFirstPipeline",
"stageName": "MyApprovalStage",
"actionName": "MyApprovalAction",
"token": "1a2b3c4d-573f-4ea7-a67E-XAMPLETOKEN",
"result": {
"status": "Approved",
"summary": "The new design looks good. Ready to release to customers."
}
}
4.
Enregistrez le fichier en lui attribuant un nom tel que approvalstage-approved.json.
5.
Exécutez la commande put-approval-result, en précisant le nom du fichier JSON d'approbation,
comme suit:
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline put-approval-result --cli-input-json
file://approvalstage-approved.json
Format de données JSON pour les notifications
d'approbation manuelle dans AWS CodePipeline
Concernant les actions d'approbation utilisant les notifications Amazon SNS, les données JSON
sur l'action sont créées et publiées sur Amazon SNS lorsque le pipeline s'interrompt. Vous pouvez
utiliser le résultat JSON pour envoyer des messages aux files d'attente Amazon SQS ou invoquer les
fonctions dans AWS Lambda.
Note
Ce guide ne traite pas de la façon de configurer les notifications à l'aide de JSON. Pour
plus d'informations concernant l'utilisation d'Amazon SNS pour envoyer des messages aux
files d'attente d'Amazon SQS, consultez la page Envoi de messages Amazon SNS aux files
d'attente d'Amazon SQS. Pour plus d'informations concernant l'utilisation d'Amazon SNS pour
appeler une fonction Lambda, consultez la rubrique Appel de fonctions Lambda à l'aide de
notifications Amazon SNS.
L'exemple suivant illustre la structure du résultat JSON disponible avec les approbations AWS
CodePipeline.
{
"region": "us-east-1",
"consoleLink": "https://console.aws.amazon.com/codepipeline/home?
region=us-east-1#/view/MyFirstPipeline",
"approval": {
"pipelineName": "MyFirstPipeline",
"stageName": "MyApprovalStage",
"actionName": "MyApprovalAction",
"token": "1a2b3c4d-573f-4ea7-a67E-XAMPLETOKEN",
"expires": "2016-07-07T20:22Z",
Version 09/07/2015
88
AWS CodePipeline Guide de l'utilisateur
Format de données JSON pour les
notifications d'approbation manuelle
"externalEntityLink": "http://example.com",
"approvalReviewLink": "https://console.aws.amazon.com/codepipeline/
home?region=us-east-1#/view/MyFirstPipeline/MyApprovalStage/MyApprovalAction/
approve/1a2b3c4d-573f-4ea7-a67E-XAMPLETOKEN",
"customData": "Review the latest changes and approve or reject within
seven days."
}
}
Version 09/07/2015
89
AWS CodePipeline Guide de l'utilisateur
Nouvelle tentative des actions ayant
échoué dans AWS CodePipeline
Dans AWS CodePipeline, une action est une tâche réalisée sur un artéfact dans une étape. Si une
action ou un ensemble d'actions parallèles n'aboutit pas avec succès, le pipeline s'interrompt.
Vous pouvez retenter les dernières actions ayant échoué dans une étape sans avoir besoin d'exécuter
à nouveau un pipeline dès le début. Si vous utilisez la console pour afficher un pipeline, un bouton
Retry apparaîtra sur l'étape où les actions ayant échoué peuvent être retentées.
Si vous utilisez l'interface de ligne de commande AWS, vous pouvez utiliser la commande get-pipelinestate pour savoir si des actions ont échoué.
Note
Dans les cas suivants, vous ne pouvez pas retenter les actions :
• La structure globale du pipeline a été modifiée après l'échec d'une action.
• Une ou plusieurs actions de l'étape est/sont toujours en cours.
• Une autre tentative est déjà en cours dans l'étape.
Rubriques
• Nouvelle tentative d'actions ayant échoué (Console) (p. 91)
• Nouvelle tentative des actions échouées (interface de ligne de commande) (p. 91)
Version 09/07/2015
90
AWS CodePipeline Guide de l'utilisateur
Nouvelle tentative d'actions ayant échoué (Console)
Nouvelle tentative d'actions ayant échoué
(Console)
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
2.
Dans Name, choisissez le nom du pipeline.
3.
Recherchez l'étape contenant l'action ayant échoué, puis choisissez Retry.
Tip
Pour identifier les actions de l'étape qui peuvent être retentées, passez votre souris sur le
bouton Retry.
Si toutes les actions retentées dans l'étape aboutissent avec succès, le pipeline continue de
s'exécuter.
Nouvelle tentative des actions échouées
(interface de ligne de commande)
Pour utiliser l'AWS CLI afin de retenter des actions ayant échoué, vous devez d'abord créer un fichier
JSON qui identifie le pipeline, l'étape qui contient les actions ayant échoué et la dernière exécution du
pipeline dans cette étape. Vous devez ensuite exécuter la commande retry-stage-execution avec le
paramètre --cli-input-json. Pour récupérer les informations dont vous avez besoin pour le fichier
JSON, le plus simple est d'utiliser la commande get-pipeline-state.
1.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez
la commande get-pipeline-state sur un pipeline. Par exemple, pour un pipeline nommé
MyFirstPipeline, vous devez saisir quelque chose de semblable à ce qui suit :
aws codepipeline get-pipeline-state --name MyFirstPipeline
La réponse à la commande inclut des informations sur l'état du pipeline pour chaque étape. Dans
l'exemple suivant, la réponse indique qu'une ou plusieurs actions a/ont échoué dans la version
Bêta :
{
"updated": 1427245911.525,
"created": 1427245911.525,
"pipelineVersion": 1,
"pipelineName": "MyFirstPipeline",
"stageStates": [
{
"actionStates": [...],
"stageName": "Source",
"latestExecution": {
"pipelineExecutionId": "9811f7cb-7cf7-SUCCESS",
"status": "Succeeded"
Version 09/07/2015
91
AWS CodePipeline Guide de l'utilisateur
Nouvelle tentative des actions échouées
(interface de ligne de commande)
}
},
{
"actionStates": [...],
"stageName": "Beta",
"latestExecution": {
"pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
"status": "Failed"
}
}
]
}
2.
Dans un éditeur de texte brut, créez un fichier où vous enregistrerez ce qui suit, au format JSON :
• Le nom du pipeline qui contient les actions ayant échoué
• Le nom de l'étape qui contient les actions ayant échoué
• L'identifiant de la dernière exécution du pipeline dans l'étape
• Le mode de nouvelle tentative. (Actuellement, la seule valeur prise en charge est
FAILED_ACTIONS)
Pour l'exemple MyFirstPipeline précédent, votre fichier ressemblera à ce qui suit :
{
"pipelineName": "MyFirstPipeline",
"stageName": "Beta",
"pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
"retryMode": "FAILED_ACTIONS"
}
3.
4.
Enregistrez le fichier avec un nom tel que retry-failed-actions.json.
Utilisez le fichier que vous avez créé lorsque vous avez exécuté la commande retry-stageexecution. Exemples :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline retry-stage-execution --cli-input-json file://retryfailed-actions.json
5.
Pour voir les résultats d'une nouvelle tentative, ouvrez la console AWS CodePipeline et choisissez
le pipeline qui contient les actions ayant échoué, ou utilisez à nouveau la commande get-pipelinestate. Pour plus d'informations, consultez Affichage d'un pipeline (p. 101).
Version 09/07/2015
92
AWS CodePipeline Guide de l'utilisateur
Désactivation ou activation des transitions (Console)
Désactivation ou activation des
transitions dans AWS CodePipeline
Les transitions sont des liens entre les étapes d'un pipeline qui peut être activés ou désactivés. Ils sont
activés par défaut. Lorsque vous réactivez une transition désactivée, la dernière révision s'exécutera
dans les étapes restantes du pipeline, sauf si moins de 30 jours se sont écoulés. L'exécution du
pipeline ne reprendra pas pour une transition qui a été désactivée pendant plus de 30 jours, sauf si
une nouvelle modification est détectée ou si vous réexécutez manuellement le pipeline.
Tip
Vous pouvez utiliser une action d'approbation pour interrompre l'exécution d'un pipeline
jusqu'à ce que ce dernier soit approuvé manuellement pour continuer. Pour plus
d'informations, consultez Gestion des actions d'approbation dans les pipelines (p. 76).
Rubriques
• Désactivation ou activation des transitions (Console) (p. 93)
• Désactivation ou activation des transitions (interface de ligne de commande) (p. 95)
Désactivation ou activation des transitions
(Console)
Pour désactiver ou activer les transitions dans un pipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
2.
Dans Name, choisissez le nom du pipeline dans lequel vous souhaitez activer ou désactiver les
transitions. Cette opération ouvre une vue détaillée du pipeline, y compris des transitions entre les
étapes du pipeline.
3.
Trouvez la flèche après la dernière étape que vous souhaitez exécuter, et choisissez-la. Par
exemple, dans le pipeline suivant fourni à titre d'exemple, si vous souhaitez que les actions de
Version 09/07/2015
93
AWS CodePipeline Guide de l'utilisateur
Désactivation ou activation des transitions (Console)
l'étape Source soient exécutées, mais pas les actions de l'étape nommée Beta, vous devez
choisir la flèche entre ces deux étapes :
4.
Dans la boîte de dialogue Disable Transition, renseignez la raison pour laquelle vous désactivez la
transition, et choisissez Disable.
La flèche change pour indiquer que les transitions sont désactivées entre l'étape qui précède la
flèche et celle qui la suit. Toute modification apportée aux étapes subséquentes à la transition
désactivée continuera de s'exécuter à travers ces étapes, mais les nouvelles révisions ne seront
pas exécutées à travers ces étapes une fois la transition désactivée.
5.
Pour autoriser les transitions, choisissez la flèche de la transition désactivée. Dans la boîte de
dialogue Enable Transition, choisissez Enable. Le pipeline activera immédiatement la transition
entre les deux étapes. Si des révisions ont été exécutées dans les étapes précédentes après la
désactivation de la transition, le pipeline commencera au bout de quelques instants à exécuter la
dernière révision à travers les étapes subséquentes à la transition préalablement désactivée. Le
pipeline exécutera la révision à travers toutes les étapes restantes du pipeline.
Note
Une fois la transition activée, les modifications apparaîtront au bout de quelques instants
dans la console AWS CodePipeline.
Version 09/07/2015
94
AWS CodePipeline Guide de l'utilisateur
Désactivation ou activation des transitions
(interface de ligne de commande)
Désactivation ou activation des transitions
(interface de ligne de commande)
Pour désactiver une transition entre des étapes en utilisant l'AWS CLI, exécutez la commande disablestage-transition. Pour permettre une transition désactivée, exécutez la commande enable-stagetransition.
Désactivation d'une transition
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et utilisez
l'AWS CLI pour exécuter la commande disable-stage-transition en spécifiant le nom du pipeline,
le nom de l'étape vers laquelle vous souhaitez désactiver les transitions, le type de transition et la
raison pour laquelle vous souhaitez désactiver les transitions vers cette étape. Contrairement à la
console, vous devez également préciser si vous désactivez les transitions vers l'étape (entrantes)
ou les transitions depuis cette étape une fois que toutes les actions sont terminées (sortantes).
Par exemple, pour désactiver la transition d'une étape nommée Beta dans un pipeline nommé
MyFirstPipeline, saisissez une commande semblable à ce qui suit :
aws codepipeline disable-stage-transition --pipeline-name MyFirstPipeline
--stage-name Beta --transition-type Inbound --reason "My Reason"
2.
La commande n'affiche rien.
Pour vérifier que la transition a été désactivée, affichez le pipeline dans la console AWS
CodePipeline ou exécutez la commande get-pipeline-status. Pour plus d'informations, consultez
Affichage d'un pipeline (Console) (p. 101) et Affichage d'un pipeline (interface de ligne de
commande) (p. 103).
Pour activer une transition
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et utilisez
l'AWS CLI pour exécuter la commande enable-stage-transition, en spécifiant le nom du pipeline, le
nom de l'étape vers laquelle vous souhaitez activer les transitions et le type de transition.
Par exemple, pour activer la transition d'une étape nommée Beta dans un pipeline nommé
MyFirstPipeline, saisissez une commande semblable à ce qui suit :
aws codepipeline enable-stage-transition --pipeline-name MyFirstPipeline
--stage-name Beta --transition-type Inbound
2.
La commande n'affiche rien.
Pour vérifier que la transition a été désactivée, affichez le pipeline dans la console AWS
CodePipeline ou exécutez la commande get-pipeline-status. Pour plus d'informations, consultez
Affichage d'un pipeline (Console) (p. 101) et Affichage d'un pipeline (interface de ligne de
commande) (p. 103).
Version 09/07/2015
95
AWS CodePipeline Guide de l'utilisateur
Suppression d'un pipeline (Console)
Suppression d'un pipeline dans
AWS CodePipeline
Vous pouvez à tout moment modifier un pipeline pour mettre à jour ses fonctionnalités, ou encore le
supprimer. Vous pouvez supprimer un pipeline à l'aide de la console AWS CodePipeline ou de l'AWS
CLI et de la commande delete-pipeline.
Rubriques
• Suppression d'un pipeline (Console) (p. 96)
• Suppression d'un pipeline (interface de ligne de commande) (p. 96)
Suppression d'un pipeline (Console)
Pour supprimer un pipeline dans la console AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Les noms de tous les pipelines associés à votre compte AWS s'affichent, ainsi que leur état.
3.
Dans Name, choisissez le nom du pipeline que vous souhaitez supprimer. Une vue détaillée du
pipeline s'ouvre alors.
4.
Sur la page des détails du pipeline, choisissez Edit. La page d'édition du pipeline s'ouvre alors.
5.
Sur la page Edit, choisissez Delete.
6.
Saisissez le nom du pipeline, puis choisissez Delete.
Important
Cette action ne peut pas être annulée.
Suppression d'un pipeline (interface de ligne de
commande)
Pour supprimer manuellement un pipeline à l'aide de l'AWS CLI, utilisez la commande delete-pipeline.
Version 09/07/2015
96
AWS CodePipeline Guide de l'utilisateur
Suppression d'un pipeline
(interface de ligne de commande)
Important
La suppression d'un pipeline est irréversible. Il n'existe aucune boîte de dialogue de
confirmation. Une fois la commande exécutée, le pipeline est supprimé, mais toutes les
ressources utilisées dans ce dernier sont conservées. Cela permet de créer facilement un
nouveau pipeline en utilisant ces ressources afin d'automatiser la publication de votre logiciel.
Suppression d'un pipeline à l'aide de l'AWS CLI
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et utilisez
l'AWS CLI pour exécuter la commande delete-pipeline, en spécifiant le nom du pipeline que vous
souhaitez supprimer. Par exemple, pour supprimer un pipeline nommé MyFirstPipeline :
aws codepipeline delete-pipeline --name MyFirstPipeline
Cette commande ne donne aucun résultat.
2.
Supprimez toutes les ressources qui ne sont plus nécessaires.
Tip
La suppression d'un pipeline ne supprime pas les ressources utilisées dans celui-ci,
comme l'application AWS CodeDeploy ou Elastic Beanstalk que vous avez utilisée pour
déployer votre code, ou, si vous avez créé votre pipeline à partir de la console AWS
CodePipeline, le compartiment Amazon S3 créé par AWS CodePipeline pour stocker les
artéfacts de vos pipelines. Assurez-vous de supprimer les ressources qui ne sont plus
nécessaires afin de ne pas être facturé pour celles-ci par la suite. Par exemple, si vous
utilisez la console pour créer un pipeline pour la première fois, AWS CodePipeline crée un
compartiment Amazon S3 pour stocker tous les artéfacts de tous vos pipelines. Si vous
avez supprimé tous vos pipelines, suivez les étapes énoncées dansSuppression d'un
compartiment.
Version 09/07/2015
97
AWS CodePipeline Guide de l'utilisateur
Suivi des pipelines avec AWS
CodePipeline
Le suivi est un enjeu important pour assurer la fiabilité, la disponibilité et les performances d'AWS
CodePipeline et de vos solutions AWS. Vous devez recueillir les données de surveillance de toutes les
parties de votre solution AWS de telle sorte que vous puissiez déboguer plus facilement une éventuelle
défaillance à plusieurs points. Avant d'entamer le suivi d'AWS CodePipeline, vous devez créer un plan
de suivi qui répondra aux questions suivantes :
• Quels sont les objectifs de la supervision ?
• Quelles sont les ressources à surveiller ?
• A quelle fréquence les ressources doivent-elles être surveillées ?
• Quels outils de supervision sont à votre disposition ?
• Qui exécute les tâches de supervision ?
• Qui doit être informé en cas de problème ?
Actuellement, vous pouvez effectuer le suivi de vos pipelines AWS CodePipeline et de leurs
composants à l'aide des outils suivants :
• AWS CloudTrail : utilisez CloudTrail pour capturer les appels de l'API effectués par ou pour le
compte d'AWS CodePipeline dans votre compte AWS et pour transmettre les fichiers journaux
dans un compartiment Amazon S3, que vous spécifierez. Vous pouvez configurer CloudWatch pour
publier des notifications Amazon Simple Notification Service lorsque de nouveaux fichiers journaux
sont fournis si vous souhaitez agir rapidement, dès la distribution des fichiers journaux effectuée.
• Console et interface de ligne de commande : vous pouvez utiliser la console AWS CodePipeline et
l'interface de ligne de commande pour afficher les informations sur l'état d'un pipeline ou sur une
exécution du pipeline spécifique.
Rubriques
• Journalisation des appels de l'API avec CloudTrail (p. 99)
• Affichage d'un pipeline (p. 101)
Version 09/07/2015
98
AWS CodePipeline Guide de l'utilisateur
Journalisation des appels de l'API avec CloudTrail
• Affichage des détails de la révision source actuelle d'un pipeline (p. 105)
Journalisation des appels de l'API d'AWS
CodePipeline avec AWS CloudTrail
AWS CodePipeline est intégré à CloudTrail, un service qui capture les appels d'API effectués par
ou pour le compte d'AWS CodePipeline dans votre compte AWS et livre les fichiers journaux dans
un compartiment Amazon S3 que vous spécifiez. CloudTrail capture les appels d'API à partir de la
console AWS CodePipeline, à partir des commandes AWS CodePipeline via l'AWS CLI à partir des
API AWS CodePipeline. Les informations collectées par CloudTrail vous permettent de déterminer
quelle demande a été envoyée à AWS CodePipeline, l'adresse IP source à partir de laquelle la
demande a été effectuée, qui a effectué la demande, quand, etc. Pour en savoir plus sur CloudTrail, y
compris la façon de le configurer et de l'activer, consultez le manuel AWS CloudTrail User Guide.
Informations AWS CodePipeline dans CloudTrail
Lorsque la journalisation CloudTrail est activée dans votre compte AWS, les appels d'API effectués
pour AWS CodePipeline font l'objet d'un suivi dans les fichiers journaux. Les enregistrements AWS
CodePipeline sont écrits avec les autres enregistrements des services AWS dans un fichier journal.
CloudTrail détermine quand créer un fichier et écrire dedans en fonction d'une période et d'une taille
de fichier.
Toutes les actions AWS CodePipeline sont consignées et documentées dans la Référence de l'API
AWS CodePipeline et la Référence de ligne de commande AWS CodePipeline. Par exemple, les
appels pour créer, supprimer et modifier les pipelines et créer des actions personnalisées génèrent des
entrées dans les fichiers journaux CloudTrail.
Chaque entrée du journal contient des informations sur la personne qui a généré la demande. Les
informations d'identité d'utilisateur figurant dans le journal vous aident à déterminer si la demande a
été effectuée à l'aide d'informations d'identification racine ou d'utilisateur IAM, à l'aide d'informations
d'identification de sécurité temporaires pour un rôle ou un utilisateur fédéré, ou par un autre service
AWS. Pour plus d'informations, reportez-vous au champ userIdentity dans le Guide de référence des
événements CloudTrail.
Vous pouvez stocker vos fichiers journaux dans votre compartiment aussi longtemps que vous le
souhaitez, mais vous pouvez également définir des règles de cycle de vie Amazon S3 pour archiver ou
supprimer automatiquement les fichiers journaux. Par défaut, vos fichiers journaux sont chiffrés à l'aide
du chiffrement côté serveur (SSE) d'Amazon S3.
Vous pouvez décider d'utiliser CloudTrail pour publier des notifications Amazon SNS lorsque de
nouveaux fichiers journaux sont fournis, si vous voulez effectuer une action rapide lors de la livraison
des fichiers journaux. Pour plus d'informations, consultez la page Configuration des notifications
Amazon SNS.
Vous pouvez également regrouper les fichiers journaux AWS CodePipeline provenant de plusieurs
régions AWS et de plusieurs comptes AWS dans un compartiment Amazon S3 unique. Pour de
plus amples informations, veuillez consulter Agrégation des fichiers journaux CloudTrail dans un
compartiment Amazon S3 unique.
Présentation des entrées des fichiers journaux AWS
CodePipeline
Les fichiers journaux CloudTrail contiennent une ou plusieurs entrées de journal, et chaque entrée est
composée de plusieurs événements au format JSON. Une entrée de journal représente une demande
Version 09/07/2015
99
AWS CodePipeline Guide de l'utilisateur
Présentation des entrées des
fichiers journaux AWS CodePipeline
individuelle à partir d'une source quelconque et comprend des informations sur l'action demandée,
sur tous les paramètres, sur la date et l'heure de l'action, etc. Les entrées de journal ne suivent aucun
ordre précis ; (il ne s'agit pas d'une série ordonnée retraçant des appels d'API publiques).
L'exemple suivant montre une entrée de journal CloudTrail pour un événement de mise à jour du
pipeline, où un pipeline nommé MyFirstPipeline a été modifié par l'utilisateur nommé JaneDoeCodePipeline avec l'identifiant de compte 80398EXAMPLE. L'utilisateur a changé le nom de
l'étape source d'un pipeline, de Source à MySourceStage. Les éléments requestParameters
et responseElements du journal CloudTrail contiennent toute la structure du pipeline modifié,
par conséquent ils ont été abrégés dans l'exemple suivant. L'accent a été mis sur la portion
requestParameters du pipeline où la modification s'est produite, le numéro de version précédente
du pipeline, et la partie responseElements, qui affiche le numéro de version incrémenté d'un niveau.
Les parties modifiées sont marquées d'ellipses (...) pour mettre en évidence l'endroit où les données
sont le plus nombreuses dans une entrée de journal réel.
{
"eventVersion":"1.03",
"userIdentity": {
"type":"IAMUser",
"principalId":"AKIAI44QH8DHBEXAMPLE",
"arn":"arn:aws:iam::80398EXAMPLE:user/JaneDoe-CodePipeline",
"accountId":"80398EXAMPLE",
"accessKeyId":"AKIAIOSFODNN7EXAMPLE",
"userName":"JaneDoe-CodePipeline",
"sessionContext": {
"attributes":{
"mfaAuthenticated":"false",
"creationDate":"2015-06-17T14:44:03Z"
}
},
"invokedBy":"signin.amazonaws.com"},
"eventTime":"2015-06-17T19:12:20Z",
"eventSource":"codepipeline.amazonaws.com",
"eventName":"UpdatePipeline",
"awsRegion":"us-east-1",
"sourceIPAddress":"192.0.2.64",
"userAgent":"signin.amazonaws.com",
"requestParameters":{
"pipeline":{
"version":1,
"roleArn":"arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service",
"name":"MyFirstPipeline",
"stages":[
{
"actions":[
{
"name":"MySourceStage",
"actionType":{
"owner":"AWS",
"version":"1",
"category":"Source",
"provider":"S3"
},
"inputArtifacts":[],
"outputArtifacts":[
{"name":"MyApp"}
],
"runOrder":1,
"configuration":{
Version 09/07/2015
100
AWS CodePipeline Guide de l'utilisateur
Affichage d'un pipeline
"S3Bucket":"awscodepipeline-demobucket-example-date",
"S3ObjectKey":"sampleapp_linux.zip"
}
}
],
"name":"Source"
},
(...)
},
"responseElements":{
"pipeline":{
"version":2,
(...)
},
"requestID":"2c4af5c9-7ce8-EXAMPLE",
"eventID":""c53dbd42-This-Is-An-Example"",
"eventType":"AwsApiCall",
"recipientAccountId":"80398EXAMPLE"
}
]
}
Affichage des pipelines dans AWS CodePipeline
Vous pouvez utiliser la console AWS CodePipeline ou l'AWS CLI pour afficher des détails sur les
pipelines associés à votre compte AWS.
Rubriques
• Affichage d'un pipeline (Console) (p. 101)
• Affichage d'un pipeline (interface de ligne de commande) (p. 103)
Affichage d'un pipeline (Console)
Vous pouvez utiliser la console AWS CodePipeline pour afficher une liste de tous les pipelines de votre
compte. Vous pouvez également afficher les informations pour chaque pipeline, comme la dernière
fois où des actions ont été exécutées dans le pipeline, si une transition entre les étapes est activée ou
désactivée, si des actions ont échoué, etc.
Note
La vue détaillée d'un pipeline cesse automatiquement de s'actualiser dans votre navigateur au
bout d'une heure. Pour afficher des informations à jour, actualisez la page.
Pour afficher un pipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
2.
Pour voir les détails d'un seul pipeline, choisissez le nom du pipeline dans Name. Une vue
détaillée du pipeline s'ouvre alors, et inclut l'état de chaque action dans chaque étape et l'état des
transitions.
Version 09/07/2015
101
AWS CodePipeline Guide de l'utilisateur
Affichage d'un pipeline (Console)
Note
Quelques instants sont nécessaires pour que les modifications apparaissent dans la
console AWS CodePipeline.
La vue graphique affiche les informations suivantes pour chaque étape :
• Le nom de l'étape.
• Chaque action configurée pour l'étape.
• L'état de transition entre les étapes (activé ou désactivé), indiqué par l'état de la flèche entre les
étapes. Une transition activée est indiquée par une flèche simple ; une transition désactivée est
indiquée par une flèche et une icône grises.
La vue graphique affiche également les informations suivantes sur les actions de chaque étape :
• Le nom de l'action.
• Le fournisseur de l'action, par exemple AWS CodeDeploy.
• La dernière exécution de l'action.
• Si l'action a réussi ou a échoué.
• Les liens vers d'autres détails sur la dernière exécution de l'action, le cas échéant.
• Les informations sur les révisions source qui sont en cours d'exécution par le biais de la
dernière exécution du pipeline dans l'étape ou, concernant les déploiements AWS CodeDeploy,
les dernières révisions source déployées dans les instances cibles.
3.
Pour afficher les détails de configuration d'une action particulière dans une étape d'un pipeline,
choisissez ou passez votre souris sur l'icône d'informations en regard de cette action.
4.
Pour afficher les détails relatifs au fournisseur de l'action, choisissez le nom du fournisseur. La
page de la console AWS pour ce fournisseur s'ouvre alors. Par exemple, dans l'exemple de
pipeline précédent, le fait de sélectionner AWS CodeDeploy dans l'étape Bêta ou Production
ouvrira la page de la console AWS CodeDeploy du groupe de déploiement configuré pour cette
étape.
5.
Pour afficher les détails concernant l'état d'avancement d'une action spécifique dans une étape,
choisissez Details lorsque cette option s'affiche en regard d'une action en cours (indiquée par un
message In Progress). Si l'action est en cours, vous verrez l'avancement en cours et les étapes ou
les actions à mesure qu'elles surviennent.
Version 09/07/2015
102
AWS CodePipeline Guide de l'utilisateur
Affichage d'un pipeline (interface de ligne de commande)
Note
Des informations sont disponibles sur les actions source impliquant les référentiels
GitHub, mais pas sur celles impliquant des compartiments Amazon S3 ou des référentiels
AWS CodeCommit.
6.
Pour approuver ou refuser des actions configurées en vue d'une approbation manuelle, choisissez
Review.
7.
Pour retenter des actions qui ont échoué dans une étape, choisissez Retry.
8.
Pour obtenir plus d'informations sur les erreurs ou les échecs d'une action terminée dans une
étape, choisissez Details. Vous verrez les détails relatifs à la dernière exécution de l'action, y
compris les résultats de cette action, Succeeded ou Failed.
9.
Pour afficher les informations relatives aux artéfacts source (artéfact de sortie créé lors de la
première étape d'un pipeline) utilisés lors de la dernière exécution du pipeline pour une étape,
cliquez dans la zone d'information au bas de l'étape. Vous pouvez afficher les informations sur
les identificateurs, comme les identifiants, les commentaires et l'heure de création ou de mise à
jour de l'artéfact. Pour plus d'informations, consultez Affichage des détails de la révision source
actuelle d'un pipeline (p. 105).
Affichage d'un pipeline (interface de ligne de
commande)
Vous pouvez exécuter la commande list-pipelines pour afficher un récapitulatif de tous les pipelines
associés à votre compte AWS ou la commande get-pipeline pour passer en revue les détails d'un seul
pipeline, respectivement.
Note
Pour plus d'informations sur l'utilisation de l'interface de ligne de commande afin d'afficher les
révisions source utilisées dans la dernière exécution du pipeline pour une étape, consultez
Affichage des détails de la révision source actuelle dans un pipeline (interface de ligne de
commande) (p. 106).
Pour afficher un pipeline
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et utilisez
l'AWS CLI pour exécuter la commande list-pipelines, comme suit :
aws codepipeline list-pipelines
Cette commande affiche une liste de tous les pipelines associés à votre compte AWS.
2.
Pour afficher les détails relatifs à un pipeline, exécutez la commande get-pipeline, en spécifiant
le nom unique du pipeline. Par exemple, pour afficher les détails relatifs à un pipeline nommé
MyFirstPipeline, vous devez saisir ce qui suit :
aws codepipeline get-pipeline --name MyFirstPipeline
Cette commande affiche la structure du pipeline.
3.
Pour afficher les détails relatifs à l'état actuel d'un pipeline, exécutez la commande get-pipelinestate, en spécifiant le nom unique du pipeline. Par exemple, pour afficher des informations sur
l'état actuel d'un pipeline nommé MyFirstPipeline, saisissez ce qui suit :
Version 09/07/2015
103
AWS CodePipeline Guide de l'utilisateur
Affichage d'un pipeline (interface de ligne de commande)
aws codepipeline get-pipeline-state --name MyFirstPipeline
Cette commande affiche l'état actuel de toutes les étapes du pipeline et le statut des actions au
sein de ces étapes.
L'exemple suivant montre les données qui s'affichent pour un pipeline de trois étapes nommé
MyFirstPipeline, dans lequel les deux premières étapes et actions ont réussi, la troisième est
en échec et la transition entre les deuxième et troisième étapes est désactivée :
{
"updated": 1427245911.5250001,
"created": 1427245911.5250001,
"pipelineVersion": 1,
"pipelineName": "MyFirstPipeline",
"stageStates": [
{
"actionStates": [
{
"actionName": "Source",
"entityUrl": "https://console.aws.amazon.com/s3/home?
#",
"latestExecution": {
"status": "Succeeded",
"lastStatusChange": 1427298837.7679999
}
}
],
"stageName": "Source"
},
{
"actionStates": [
{
"actionName": "Deploy-CodeDeploy-Application",
"entityUrl": "https://console.aws.amazon.com/
codedeploy/home?#",
"latestExecution": {
"status": "Succeeded",
"lastStatusChange": 1427298939.4560001,
"externalExecutionUrl": "https://
console.aws.amazon.com/?#",
"externalExecutionId": ""c53dbd42-This-Is-AnExample"",
"summary": "Deployment Succeeded"
}
}
],
"inboundTransitionState": {
"enabled": true
},
"stageName": "Beta"
},
{
"actionStates": [
{
"actionName": "Deploy-Second-Deployment",
Version 09/07/2015
104
AWS CodePipeline Guide de l'utilisateur
Affichage des détails de la révision
source actuelle d'un pipeline
"entityUrl": "https://console.aws.amazon.com/
codedeploy/home?#",
"latestExecution": {
"status": "Failed",
"errorDetails": {
"message": "Deployment Group is already
deploying deployment ...",
"code": "JobFailed"
},
"lastStatusChange": 1427246155.648,
}
}
],
"inboundTransitionState": {
"disabledReason": "Disabled while I investigate the
failure",
"enabled": false,
"lastChangedAt": 1427246517.8469999,
"lastChangedBy": "arn:aws:iam::80398EXAMPLE:user/
CodePipelineUser"
},
"stageName": "Production"
}
]
}
Affichage des détails de la révision source
actuelle d'un pipeline dans AWS CodePipeline
Vous pouvez utiliser la console AWS CodePipeline ou l'AWS CLI pour afficher les informations sur les
artéfacts source (l'artéfact de sortie créé dans la première étape d'un pipeline) qui sont utilisés lors de
l'exécution d'un pipeline. Ces détails incluent les identifiants comme les identifiants de validation, les
commentaires, l'ancienneté des artéfacts et leurs mises à jour et, si vous utilisez l'interface de ligne de
commande, les numéros de version des actions de génération. Pour certains types de révision, vous
pouvez afficher et ouvrir l'URL de la validation de la version de l'artéfact.
Rubriques
• Affichage des détails de la révision source actuelle dans un pipeline (Console) (p. 105)
• Affichage des détails de la révision source actuelle dans un pipeline (interface de ligne de
commande) (p. 106)
Affichage des détails de la révision source actuelle
dans un pipeline (Console)
Vous pouvez utiliser la console AWS CodePipeline pour afficher des informations sur les plus récentes
révisions source qui ont été incluses dans une exécution du pipeline.
Pour afficher les révisions source d'un pipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
Version 09/07/2015
105
AWS CodePipeline Guide de l'utilisateur
Affichage des détails de la révision source actuelle
dans un pipeline (interface de ligne de commande)
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
2.
Choisissez le nom du pipeline pour lequel vous souhaitez afficher les informations de révision
source.
3.
Recherchez une action pour laquelle vous souhaitez afficher les informations de révision source,
puis localisez les informations relatives à la révision au bas de l'étape :
4.
Cliquez dans la zone de détails pour afficher plus d'informations sur l'artéfact, y compris sur la
durée de sa validation. À l'exception des artéfacts stockés dans les compartiments Amazon S3,
les identifiants comme les identifiants de validation qui s'affichent dans cette vue détaillée sont
reliés aux pages d'informations source des artéfacts.
Affichage des détails de la révision source actuelle
dans un pipeline (interface de ligne de commande)
Vous pouvez exécuter la commande get-pipeline-execution afin d'afficher des informations sur les
plus récentes révisions source incluses dans l'exécution du pipeline. Une fois que vous aurez exécuté
la commande get-pipeline-state pour obtenir des détails sur toutes les étapes d'un pipeline, vous
trouverez l'identifiant d'exécution qui s'applique à une étape particulière pour laquelle vous souhaitez
connaître les détails d'une révision source et vous utiliserez ensuite cet identifiant d'exécution dans la
commande get-pipeline-execution. (Les étapes d'un pipeline peuvent avoir été exécutées avec succès
lors d'exécutions précédentes du pipeline et peuvent donc avoir des identifiants d'exécution différents.)
En d'autres termes, si vous souhaitez afficher les informations sur les artéfacts qui sont actuellement
dans l'étape Bêta, exécutez la commande get-pipeline-state, trouvez l'identifiant d'exécution actuel de
la phase Bêta et exécutez la commande get-pipeline-execution à l'aide de cet identifiant d'exécution.
Pour afficher les révisions source d'un pipeline
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et
utilisez l'AWS CLI pour exécuter la commande get-pipeline-state. Pour un pipeline nommé
MyFirstPipeline, saisissez :
aws codepipeline get-pipeline-state --name MyFirstPipeline
Version 09/07/2015
106
AWS CodePipeline Guide de l'utilisateur
Affichage des détails de la révision source actuelle
dans un pipeline (interface de ligne de commande)
Cette commande affiche l'état le plus récent d'un pipeline, y compris l'identifiant d'exécution du
pipeline le plus récent pour chaque étape.
2.
Pour afficher les détails relatifs à une exécution du pipeline, exécutez la commande get-pipelineexécution, spécifiez le nom unique et l'identifiant d'exécution du pipeline de l'exécution pour
laquelle vous souhaitez afficher les informations relatives à l'artéfact. Par exemple, pour afficher
les informations relatives à l'exécution d'un pipeline nommé MyFirstPipeline avec l'identifiant
d'exécution 3137f7cb-7cf7-039j-s83l-d7eu3EXAMPLE, saisissez ce qui suit :
aws codepipeline get-pipeline-execution --pipeline-name MyFirstPipeline -pipeline-execution-id 3137f7cb-7cf7-039j-s83l-d7eu3EXAMPLE
Cette commande affiche des informations sur chaque révision source faisant partie de l'exécution
du pipeline, ainsi que des informations d'identification sur le pipeline. Seules les informations
sur les étapes du pipeline incluses dans cette exécution s'affichent. D'autres étapes du pipeline
peuvent ne pas avoir été incluses dans cette exécution de ce pipeline.
L'exemple suivant montre les données recueillies pour une partie du pipeline nommée
MyFirstPipeline, où un artéfact nommé « MyApp » est stocké dans un référentiel GitHub :
3.
{
"pipelineExecution": {
"artifactRevisions": [
{
"created": 1427298837.7689769,
"name": "MyApp",
"revisionChangeIdentifier": "1427298921.3976923",
"revisionId": "7636d59f3c461cEXAMPLE8417dbc6371",
"revisionSummary": "Updating the application for feature
12-4820",
"revisionUrl": "https://api.github.com/repos/anycompany/
MyApp/git/commits/7636d59f3c461cEXAMPLE8417dbc6371"
}
//More revisions might be listed here
],
"pipelineExecutionId": "3137f7cb-7cf7-039j-s83l-d7eu3EXAMPLE",
"pipelineName": "MyFirstPipeline",
"pipelineVersion": 2,
"status": "Succeeded"
}
}
Version 09/07/2015
107
AWS CodePipeline Guide de l'utilisateur
Création d'une action personnalisée pour un pipeline
Tâches avancées dans AWS
CodePipeline
Une fois que vous serez à l'aise avec les opérations de base, vous pourrez tirer le maximum d'AWS
CodePipeline en réalisant des tâches plus complexes.
Rubriques
• Création d'une action personnalisée pour un pipeline (p. 108)
• Nouvelle exécution manuelle d'un pipeline (p. 120)
• Création d'un pipeline qui utilise des ressources d'un autre compte (p. 121)
• Intégration des fonctions Lambda dans les pipelines (p. 131)
Création et ajout d'une action personnalisée dans
AWS CodePipeline
AWS CodePipeline inclut un certain nombre d'actions qui vous aident à configurer les ressources
de génération, de test et de déploiement de votre processus de publication automatisé. Si votre
processus de publication comprend des activités qui ne sont pas incluses dans les actions par défaut,
par exemple un processus de génération développé en interne ou une suite de tests, vous pouvez
créer une action personnalisée à ces fins et l'inclure dans votre pipeline. Vous pouvez utiliser L'AWS
CLI pour créer des action personnalisées dans les pipelines associés à votre compte AWS.
Des actions personnalisées appartenant aux catégories suivantes :
• Une action de génération qui crée ou transforme les éléments
• Une action de déploiement qui déploie des éléments sur un ou plusieurs serveurs, sites web ou
référentiels
• Une action de test qui configure et exécute les tests automatisés
• Une action d'appel qui exécute des fonctions
Lorsque vous créez une action personnalisée, vous devez également créer un exécutant de tâches qui
interrogera AWS CodePipeline afin de déterminer s'il existe des demandes de tâches pour cette action
personnalisée, exécutera la tâche et renverra le résultat de l'état à AWS CodePipeline. Cet exécutant
de tâches peut se trouver sur n'importe quel ordinateur ou n'importe quelle ressource ayant accès au
point de terminaison public pour AWS CodePipeline. Pour gérer facilement les accès et la sécurité,
envisagez d'héberger cet exécutant de tâches sur une instance Amazon EC2.
Version 09/07/2015
108
AWS CodePipeline Guide de l'utilisateur
Création d'une action personnalisée
(interface de ligne de commande)
Le schéma suivant montre une vue globale d'un pipeline qui inclut une action de génération
personnalisée :
Lorsqu'un pipeline inclut une action personnalisée dans une étape, ce pipeline crée une demande
de tâche. Un exécutant de tâches personnalisé détecte cette demande et exécute la tâche (dans cet
exemple, un processus personnalisé s'appuyant sur un logiciel tiers). Lorsque l'action est terminée,
l'exécutant de tâches affiche un résultat de réussite ou d'échec. Si un résultat de réussite est reçu,
le pipeline transition la révision et son artefacts à l'action suivante. Si un résultat d'échec est reçu, le
pipeline ne transition pas la révision vers l'action suivante dans le pipeline.
Note
Ces instructions supposent que vous avez déjà réalisé les étapes dans Configuration (p. 22).
Rubriques
• Création d'une action personnalisée (interface de ligne de commande) (p. 109)
• Création d'une tâche de travail pour l'action personnalisée (p. 112)
• Ajout d'une action personnalisée à un pipeline (p. 118)
Création d'une action personnalisée (interface de
ligne de commande)
Création d'une action personnalisée avec AWS CLI
1.
Ouvrez un éditeur de texte et créez un fichier JSON pour votre action personnalisée qui inclut
la catégorie de l'action, le fournisseur de l'action et tous les paramètres requis par l'action
personnalisée. Par exemple, pour créer une action de génération personnalisée qui ne nécessite
qu'une seule propriété, votre fichier JSON devrait ressembler à ceci :
{
"category": "Build",
"provider": "My-Build-Provider-Name",
"version": "1",
"settings": {
Version 09/07/2015
109
AWS CodePipeline Guide de l'utilisateur
Création d'une action personnalisée
(interface de ligne de commande)
"entityUrlTemplate": "https://my-build-instance/job/
{Config:ProjectName}/",
"executionUrlTemplate": "https://my-build-instance/job/
{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/"
},
"configurationProperties": [{
"name": "ProjectName",
"required": true,
"key": true,
"secret": false,
"queryable": false,
"description": "The name of the build project must be provided
when this action is added to the pipeline.",
"type": "String"
}],
"inputArtifactDetails": {
"maximumCount": integer,
"minimumCount": integer
},
"outputArtifactDetails": {
"maximumCount": integer,
"minimumCount": integer
}
}
Vous remarquerez que le fichier JSON inclut deux propriétés, entityUrlTemplate et
executionUrlTemplate. Vous pouvez désigner un nom dans les propriétés de configuration de
l'action personnalisée dans les modèles d'URL, en suivant le format de {Config:name}, tant que
la propriété de configuration est à la fois obligatoire et non secrète. Dans le modèle ci-dessus, la
valeur entityUrlTemplate fait référence à la propriété de configuration ProjectName.
• entityUrlTemplate : le lien statique qui fournit des informations sur le fournisseur de
services pour l'action. Dans cet exemple, le système de génération comprend un lien statique
pour chaque projet de génération. Le format du lien varie en fonction de votre fournisseur de
génération (ou, si vous créez un type d'action différent, comme un test, l'autre fournisseur de
services). Vous devez fournir ce format de lien de sorte à ce que lorsque l'action personnalisée
est ajoutée, l'utilisateur puisse choisir ce lien pour ouvrir un navigateur sur une page de votre
site web qui fournit les détails concernant le projet de génération (ou l'environnement de test).
• executionUrlTemplate : le lien dynamique qui sera mis à jour avec des informations
sur l'exécution actuelle ou la plus récente de l'action. Lorsque votre assistant de tâches
personnalisé met à jour l'état d'une tâche (par exemple, réussite, échec, ou en cours), il fournit
également un externalExecutionId qui sera utilisé pour finaliser le lien. Ce lien peut être
utilisé pour fournir les détails relatifs à l'exécution d'une action.
Par exemple, lorsque vous consultez l'action dans le pipeline, vous voyez les deux liens suivants :
Version 09/07/2015
110
AWS CodePipeline Guide de l'utilisateur
Création d'une action personnalisée
(interface de ligne de commande)
Pour plus d'informations sur ces types de lien, ainsi que sur RevisionURLTemplate et
ThirdPartyURL, consultez ActionTypeSettings et CreateCustomActionType dans la Référence
de l'API AWS CodePipeline. Pour plus d'informations sur les exigences en termes de structure
de l'action et sur la manière de créer une action, consultez Référence sur la structure du
pipeline (p. 177).
2.
Enregistrez le fichier JSON et donnez-lui un nom simple à mémoriser (par exemple,
MyCustomAction.json).
3.
Ouvrez une session de terminal (Linux, OS X, Unix) ou une invite de commande (Windows) sur un
ordinateur où vous avez installé l'AWS CLI.
4.
Utiliser l'AWS CLI pour exécuter la commande aws codepipeline create-custom-action-type, en
spécifiant le nom du fichier JSON que vous venez de créer.
Par exemple, pour créer une action personnalisée de génération :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline create-custom-action-type --cli-input-json
file://MyCustomAction.json
5.
Cette commande affiche l'intégralité de la structure de l'action personnalisée que vous avez créée,
ainsi que la JobList propriété de la configuration de l'action, qui est ajoutée automatiquement.
Lorsque vous ajoutez l'action personnalisée à un pipeline, vous pouvez utiliser JobList pour
spécifier les projets du fournisseur, que vous pouvez solliciter pour les tâches. Si vous ne
configurez pas ce réglage, toutes les tâches disponibles s'afficheront lorsque vous rechercherez
des tâches avec l'exécutant de tâches personnalisé.
Par exemple, la commande précédente peut afficher une structure similaire à ce qui suit :
{
"actionType": {
"inputArtifactDetails": {
"maximumCount": 1,
"minimumCount": 1
},
"actionConfigurationProperties": [
{
Version 09/07/2015
111
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
"secret": false,
"required": true,
"name": "ProjectName",
"key": true,
"description": "The name of the build project must be
provided when this action is added to the pipeline."
}
],
"outputArtifactDetails": {
"maximumCount": 0,
"minimumCount": 0
},
"id": {
"category": "Build",
"owner": "Custom",
"version": "1",
"provider": "My-Build-Provider-Name"
},
"settings": {
"entityUrlTemplate": "https://my-build-instance/job/
{Config:ProjectName}/",
"executionUrlTemplate": "https://my-build-instance/job/
mybuildjob/lastSuccessfulBuild/{ExternalExecutionId}/"
}
}
}
Note
Dans la sortie de la commande create-custom-action-type, la section id inclut "owner":
"Custom". AWS CodePipeline attribue automatiquement Custom comme propriétaire des
types d'action personnalisés. Cette valeur ne peut pas être attribuée ou modifiée lorsque
vous utilisez la commande create-custom-action-type ou la commande update-pipeline.
Création d'une tâche de travail pour l'action
personnalisée
Concernant les actions personnalisées, un exécutant de tâches doit rechercher les demandes de
tâches dans AWS CodePipeline pour l'action personnalisée, réaliser la tâche et communiquer le
résultat de l'état à AWS CodePipeline. Cet exécutant de tâches peut se trouver sur n'importe quel
ordinateur ou n'importe quelle ressource ayant accès au point de terminaison public pour AWS
CodePipeline.
Il existe plusieurs façons de concevoir votre exécutant de tâches. Les sections suivantes fournissent
des conseils pratiques sur la conception de votre exécutant de tâches personnalisé dans AWS
CodePipeline.
Rubriques
• Choix et configuration d'une stratégie de gestion des autorisations pour votre exécutant de
tâches (p. 113)
• Conception d'un exécutant de tâches pour votre action personnalisée (p. 114)
• Architecture d'exécutant de tâches personnalisé et exemples (p. 117)
Version 09/07/2015
112
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
Choix et configuration d'une stratégie de gestion des
autorisations pour votre exécutant de tâches
Pour concevoir un exécutant de tâches pour votre action personnalisée dans AWS CodePipeline, vous
devez élaborer une stratégie d'intégration des utilisateurs et de gestion des autorisations.
La stratégie la plus simple consiste à ajouter l'infrastructure dont vous avez besoin pour votre
exécutant de tâches personnalisé en créant des instances Amazon EC2 avec un rôle d'instance IAM,
ce qui vous permettra d'augmenter facilement les ressources nécessaires pour votre intégration. Vous
pouvez utiliser l'intégration embarquée à AWS afin de simplifier l'interaction entre votre exécutant de
tâches et AWS CodePipeline.
Définition des instances Amazon EC2
1.
Apprenez-en davantage sur Amazon EC2 et déterminez si cette solution est appropriée pour votre
intégration. Pour de plus amples informations, veuillez consulter Amazon EC2 - Hébergement de
serveur virtuel.
2.
Mise en route : création de vos instances Amazon EC2. Pour plus d'informations, consultez Mise
en route avec les instances Amazon EC2 Linux.
Une autre stratégie consiste à recourir à la fédération d'identité avec IAM afin d'intégrer votre système
de fournisseur d'identité existant et vos ressources. Cette stratégie est particulièrement utile si vous
disposez déjà d'un fournisseur d'identité d'entreprise ou d'une configuration permettant de prendre
en charge les utilisateurs à l'aide de fournisseurs d'identité web. La fédération d'identité vous permet
d'accorder un accès sécurisé aux ressources AWS, y compris à AWS CodePipeline, sans avoir besoin
de créer et de gérer des utilisateurs IAM. Vous pouvez utiliser ces fonctionnalités et ces stratégies pour
mettre en place des mots de passe à des fins de sécurité et pour créer une rotation des identifiants.
Vous pouvez vous appuyer sur des modèles d'application pour créer votre propre modèle.
Mise en place de la fédération d'identité
1.
En savoir plus sur la fédération d'identité IAM. Pour plus d'informations, consultez Gestion de
fédération.
2.
Passez en revue les exemples fournis dans Scénarios d'attribution d'accès temporaire afin
d'identifier le scénario d'accès temporaire qui correspond le mieux aux besoins de votre action
personnalisée.
3.
Passez en revue les exemples de code de fédération d'identité appropriés à votre infrastructure,
tels que :
• Exemple d'application de fédération d'identité pour un cas d'utilisation d'Active Directory
• Fédération d'identité des applications mobiles avec Amazon Cognito
4.
Commencez à configurer la fédération d'identité. Pour plus d'informations, consultez Fournisseurs
et fédération d'identité dans IAM Guide de l'utilisateur.
Une troisième stratégie consiste à créer un utilisateur IAM, que vous utiliserez dans votre compte AWS
lors de l'exécution de votre action personnalisée et de l'exécutant de tâches.
Pour mettre en place un utilisateur IAM
1.
Apprenez-en davantage sur les meilleures pratiques IAM et les cas d'utilisation dans Meilleures
pratiques et cas d'utilisation d'IAM.
2.
Commencez par créer des utilisateurs IAM en suivant la procédure énoncée dans Création d'un
utilisateur IAM dans votre compte AWS.
Version 09/07/2015
113
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
Voici un exemple de stratégie que vous pouvez créer afin de l'utiliser avec votre exécutant de tâches
personnalisé. Cette stratégie n'est fournie qu'à titre d'exemple, et « telle quelle ».
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:PollForJobs",
"codepipeline:AcknowledgeJob",
"codepipeline:GetJobDetails",
"codepipeline:PutJobSuccessResult",
"codepipeline:PutJobFailureResult"
],
"Resource": [
"arn:aws:codepipeline:us-east-1::actionType:custom/
Build/MyBuildProject/1/"
]
}
]
}
Tip
Pensez à utiliser la stratégie gérée AWSCodePipelineCustomActionAccess pour l'utilisateur
IAM.
Conception d'un exécutant de tâches pour votre action
personnalisée
Une fois que vous aurez choisi votre stratégie de gestion des autorisations, vous devrez songer à
la manière dont votre exécutant de tâches interagira avec AWS CodePipeline. Le schéma suivant
illustre le workflow global d'une action personnalisée et de l'exécutant de tâches pour le processus de
génération.
Version 09/07/2015
114
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
1. Votre exécutant de tâches interroge des tâches dans AWS CodePipeline à l'aide de PollForJobs.
2. Lorsqu'un pipeline est déclenché suite à une modification apportée à son étape source (par
exemple, lorsqu'un développeur valide une modification), le processus de publication automatique
commence. Le processus se poursuit jusqu'à atteindre l'étape où votre action personnalisée est
configurée. AWS CodePipeline met une tâche en file d'attente lorsqu'il atteint votre action dans
cette étape. Cette tâche apparaît si votre exécutant de tâches interroge à nouveau PollForJobs
pour obtenir l'état. Recueillez les détails de la tâche sur PollForJobs et communiquez-les à votre
exécutant de tâches.
3. L'exécutant de tâches demande à AcknowledgeJob d'envoyer à AWS CodePipeline une
confirmation de tâche. AWS CodePipeline renvoie une confirmation qui indique à l'exécutant
de tâches qu'il doit poursuivre la tâche (InProgress). Si plusieurs exécutants de tâches
interrogent les tâches et qu'un autre exécutant a déjà récupéré cette tâche, un message d'erreur
InvalidNonceException s'affichera alors. Après la confirmation InProgress AWS CodePipeline
attends les résultats.
4. L'exécutant de tâches lance votre action personnalisée sur la révision ; votre action est alors
exécutée. Votre action personnalisée renvoie un résultat, en plus de toute autre action, à votre
Version 09/07/2015
115
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
exécutant de tâches. Dans le cas d'une action de génération personnalisée, l'action extrait des
artéfacts du compartiment Amazon S3, les génère et publie à nouveau des artéfacts correctement
générés dans le compartiment Amazon S3.
5. Pendant l'exécution de l'action, l'exécutant de tâches peut solliciter PutJobSuccessResult pour
obtenir un jeton de poursuite (la sérialisation de l'état de la tâche générée par l'exécutant de tâches,
par exemple un identifiant de génération au format JSON ou une clé d'objet Amazon S3) ainsi
que des informations ExternalExecutionId qui seront utilisées pour renseigner le lien dans
executionUrlTemplate. Cette opération mettra à jour la vue de la console du pipeline, qui
contiendra ainsi un lien valide redirigeant vers les détails de l'action en cours. Bien que cela ne soit
pas obligatoire, il s'agit d'une bonne pratique car cela permet aux utilisateurs de voir l'état de votre
action personnalisée pendant son exécution.
Une fois que PutJobSuccessResult est sollicité, la tâche est considérée comme étant terminée.
Une nouvelle tâche est créée dans AWS CodePipeline, laquelle inclut un jeton de poursuite. Cette
tâche apparaît si votre exécutant de tâches sollicite à nouveau PollForJobs. Cette nouvelle tâche
permet notamment de vérifier l'état de l'action. Une fois celle-ci terminée, la tâche affiche un résultat
avec ou sans jeton de poursuite.
Note
Si votre exécutant de tâches effectue toutes les tâches associées à une action
personnalisée, envisagez de diviser le traitement de votre exécutant de tâches en deux
étapes minimum. La première étape consiste à établir la page des détails de votre
action. Une fois que vous aurez créé la page des détails, vous pourrez sérialiser l'état de
l'exécutant de tâches et le renvoyer sous la forme d'un jeton de poursuite en tenant compte
des restrictions de taille (voir Restrictions (p. 186)). Par exemple, vous pouvez écrire l'état
de l'action dans la chaîne que vous utilisez comme jeton de poursuite. La seconde étape
(et les étapes suivantes) du traitement de votre exécutant de tâches réalise la tâche réelle
de l'action. L'étape finale consiste à envoyer un résultat de réussite ou d'échec à AWS
CodePipeline, sans aucun jeton de poursuite à la dernière étape.
Pour plus d'informations sur l'utilisation du jeton de poursuite, consultez les spécifications de
PutJobSuccessResult dans la Référence de l'API AWS CodePipeline.
6. Une fois l'action personnalisée terminée, l'exécutant de tâches affiche le résultat de l'action
personnalisée à AWS CodePipeline en appelant l'une des deux API:
• PutJobSuccessResult sans jeton de poursuite, ce qui indique que l'action personnalisée a été
exécutée avec succès
• PutJobFailureResult, ce qui indique l'échec de l'exécution de l'action personnalisée
Selon le résultat, le pipeline passera à l'action suivante (réussite) ou s'interrompra (échec).
Version 09/07/2015
116
AWS CodePipeline Guide de l'utilisateur
Création d'une tâche de travail pour l'action personnalisée
Architecture d'exécutant de tâches personnalisé et exemples
Une fois que vous avez cartographié votre workflow général, vous pouvez créer votre exécutant
de tâches. Bien que les détails de l'action personnalisée détermineront en dernier lieu ce qui
est nécessaire pour votre exécutant de tâches, la plupart des exécutants de tâches des actions
personnalisées incluent les fonctionnalités suivantes :
• Attente active des tâches d'AWS CodePipeline à l'aide de PollForJobs.
• Confirmation des tâches et renvoi des résultats à AWS CodePipeline à l'aide de AcknowledgeJob,
PutJobSuccessResult et de PutJobFailureResult.
• Récupération et remise des artéfacts dans le compartiment Amazon S3 du pipeline. Pour
télécharger des artéfacts à partir du compartiment Amazon S3, vous devez créer un client Amazon
S3 qui utilise la signature Version 4 Signing (Sig V4). Sig V4 est obligatoire pour les SSE-KMS.
Pour télécharger des artéfacts dans le compartiment Amazon S3, vous devez configurer également
la demande Amazon S3 PutObject afin d'utiliser le chiffrement. Seul SSE-KMS est actuellement
pris en charge pour le chiffrement. Pour savoir s'il convient d'utiliser la clé par défaut ou une clé
gérée par le client afin de télécharger des artéfacts, votre exécutant de tâches personnalisé doit
consulter les données de la tâche et vérifier les propriétés de la clé de chiffrement. Si les propriétés
de la clé de chiffrement sont définies, vous devez utiliser cet identifiant de clé de chiffrement lors de
la configuration SSE-KMS. Si la clé est nulle, vous devez utiliser la clé principale par défaut. AWS
CodePipeline utilise la clé principale par défaut Amazon S3, sauf configuration contraire.
Le modèle suivant indique comment définir les paramètres KMS dans Java :
private static SSEAwsKeyManagementParams
createSSEAwsKeyManagementParams(final EncryptionKey encryptionKey) {
if (encryptionKey != null
&& encryptionKey.getId() != null
&&
EncryptionKeyType.KMS.toString().equals(encryptionKey.getType())) {
// Use a customer-managed encryption key
return new SSEAwsKeyManagementParams(encryptionKey.getId());
}
// Use the default master key
return new SSEAwsKeyManagementParams();
}
Pour consulter plus de modèles, accédez à la page Spécification d'AWS Key Management Service
dans Amazon S3 à l'aide des kits de développement logiciel AWS. Pour plus d'informations sur le
compartiment Amazon S3 pour AWS CodePipeline, consultez Concepts (p. 4).
Un exemple plus complexe d'un exécutant de tâches personnalisé est disponible sur GitHub. Ce
modèle est en open source et est fourni tel quel.
• Modèle d'exécutant de tâches pour AWS CodePipeline : téléchargez l'exemple du référentiel GitHub.
Version 09/07/2015
117
AWS CodePipeline Guide de l'utilisateur
Ajout d'une action personnalisée à un pipeline
Ajout d'une action personnalisée à un pipeline
Une fois que vous disposez d'un exécutant de tâches, vous pouvez ajouter votre action personnalisée
à un nouveau pipeline que vous créerez et sélectionnerez lorsque vous utiliserez l'assistant Create
Pipeline, modifier un pipeline existant et y ajouter l'action personnalisée ou utiliser l'AWS CLI les kits de
développement logiciel ou les API.
Note
Vous pouvez créer un pipeline dans l'assistant Create Pipeline qui inclut une action
personnalisée s'il s'agit d'une action de génération ou de déploiement. Si votre action
personnalisée se trouve dans la catégorie test, vous devez l'ajouter en modifiant un pipeline
existant.
Rubriques
• Ajout d'une action personnalisée à un pipeline (Console) (p. 118)
• Ajout d'une action personnalisée à un pipeline existant (interface de ligne de commande) (p. 118)
Ajout d'une action personnalisée à un pipeline (Console)
Pour créer un pipeline avec votre action personnalisée via la console AWS CodePipeline, suivez les
étapes énoncées dans Création d'un pipeline (p. 62), et choisissez votre action personnalisée dans
toutes les étapes que vous souhaitez tester. Pour ajouter votre action personnalisée à un pipeline
existant en utilisant la console AWS CodePipeline, suivez les étapes énoncées dans Modification d'un
pipeline (p. 70) et ajoutez votre action personnalisée à une ou plusieurs étapes du pipeline.
Ajout d'une action personnalisée à un pipeline existant
(interface de ligne de commande)
Vous pouvez utiliser l'AWS CLI pour ajouter une action personnalisée à un pipeline existant.
1.
Ouvrez une session de terminal (Linux, macOS, or Unix) ou une invite de commande (Windows)
et exécutez la commande get-pipeline pour copier la structure du pipeline que vous souhaitez
modifier dans un fichier JSON. Par exemple, pour un pipeline nommé MyFirstPipeline,
saisissez la commande suivante :
aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
Cette commande ne renvoie rien, mais le fichier que vous avez créé doit apparaître dans le
répertoire où vous avez exécuté la commande.
2.
Ouvrez le fichier JSON dans un éditeur de texte et modifiez la structure du fichier pour ajouter
votre action personnalisée à une étape existante.
Tip
Si vous souhaitez que votre action soit exécutée en parallèle d'une autre action de l'étape,
assurez-vous que vous lui attribuez la même valeur runOrder que cette action.
Par exemple, pour modifier la structure d'un pipeline afin d'ajouter une étape nommée Génération
et ajouter ensuite une action personnalisée de génération à cette même étape, vous pouvez
modifier le JSON pour ajouter l'étape Génération avant une étape de déploiement, en procédant
comme suit :
Version 09/07/2015
118
AWS CodePipeline Guide de l'utilisateur
Ajout d'une action personnalisée à un pipeline
,
{
"name": "MyBuildStage",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "MyBuildCustomAction",
"actionTypeId": {
"category": "Build",
"owner": "Custom",
"version": "1",
"provider": "My-Build-Provider-Name"
},
"outputArtifacts": [
{
"name": "MyBuiltApp"
}
],
"configuration": {
"ProjectName": "MyBuildProject"
},
"runOrder": 1
}
]
},
{
"name": "DeployToBeta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyBuiltApp"
}
],
"name": "Deploy-CodeDeploy-Application",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName":
"CodePipelineDemoApplication",
"DeploymentGroupName": "CodePipelineDemoFleet"
},
"runOrder": 1
}
]
}
]
}
Version 09/07/2015
119
AWS CodePipeline Guide de l'utilisateur
Nouvelle exécution manuelle d'un pipeline
3.
Pour appliquer les modifications, exécutez la commande update-pipeline, en spécifiant le nom du
pipeline et le fichier JSON du pipeline, d'une manière similaire à l'exemple suivant :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
Cette commande affiche toute la structure du pipeline mise à jour.
4.
Ouvrez la console AWS CodePipeline et choisissez le nom du pipeline que vous venez de
modifier.
Le pipeline affiche vos modifications. La prochaine fois que vous apporterez une modification à
l'emplacement source, le pipeline exécutera cette modification via sa structure révisée.
Publication manuelle d'une modification sur un
pipeline dans AWS CodePipeline
Par défaut, un pipeline s'exécute automatiquement chaque fois qu'une modification est apportée au
référentiel source. Cependant, vous pouvez exécuter à nouveau la révision la plus récente par le
biais du pipeline une deuxième fois. Vous pouvez utiliser la console AWS CodePipeline ou l'AWS CLI
ainsi que la commande start-pipeline-execution pour relancer manuellement la plus récente révision à
travers votre pipeline.
Rubriques
• Nouvelle exécution manuelle d'une révision via un pipeline (Console) (p. 120)
• Lancement manuel d'un pipeline (interface de ligne de commande) (p. 121)
Nouvelle exécution manuelle d'une révision via un
pipeline (Console)
Pour relancer manuellement la plus récente révision dans un pipeline à l'aide de la console
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Dans Name, choisissez le nom du pipeline que vous souhaitez exécuter à nouveau. Une vue
détaillée du pipeline s'affiche alors, laquelle indique notamment l'état de chaque action, dans
chaque étape du pipeline.
3.
Sur la page des détails du pipeline, choisissez Changement de version. Cette opération exécutera
la révision la plus récente disponible dans chaque emplacement source spécifié d'une action
source à travers le pipeline.
Version 09/07/2015
120
AWS CodePipeline Guide de l'utilisateur
Lancement manuel d'un pipeline
(interface de ligne de commande)
Lancement manuel d'un pipeline (interface de ligne
de commande)
Pour lancer manuellement votre pipeline à l'aide de l'AWS CLI utilisez la commande start-pipelineexecution.
Pour exécuter la version la plus récente d'un artéfact à travers un pipeline à l'aide de l'AWS
CLI
1.
Ouvrez un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows) et utilisez
l'AWS CLI pour exécuter la commande start-pipeline-execution, en spécifiant le nom du pipeline
que vous souhaitez exécuter manuellement. Par exemple, pour lancer manuellement l'exécution
de la dernière modification à travers un pipeline nommé MyFirstPipeline :
aws codepipeline start-pipeline-execution --name MyFirstPipeline
2.
Afficher l'objet retourné pour vérifier la réussite. Cette commande renvoie un objet ExecutionID,
similaire à ce qui suit :
{
"pipelineExecutionId": "c53dbd42-This-Is-An-Example"
}
Tip
Une fois que vous avez lancé l'exécution du pipeline, vous pouvez afficher le pipeline
dans la console AWS CodePipeline ou exécuter la commande get-pipeline-status pour
surveiller son évolution. Pour plus d'informations, consultez Affichage d'un pipeline
(Console) (p. 101) et Affichage d'un pipeline (interface de ligne de commande) (p. 103).
Création d'un pipeline dans AWS CodePipeline
qui utilise des ressources d'un autre compte AWS
Vous pouvez créer un pipeline qui utilise les ressources créées ou gérées par un autre compte AWS.
Par exemple, vous pouvez utiliser un compte pour votre pipeline et un autre pour vos ressources AWS
CodeDeploy. Pour ce faire, vous devez créer une clé AWS Key Management Service (AWS KMS),
l'ajouter au pipeline et configurer les stratégies et les rôles des comptes afin d'autoriser l'accès entre
comptes.
Note
Les actions source ne peuvent pas utiliser les compartiments Amazon S3 des autres comptes
AWS.
Dans cette procédure et ses exemples, AccountA est le compte initialement utilisé pour créer le
pipeline. Celui-ci a accès au compartiment Amazon S3 utilisé pour stocker des artéfacts de pipeline
et au rôle de service utilisé par AWS CodePipeline. AccountB est le compte initialement utilisé pour
créer l'application AWS CodeDeploy, le groupe de déploiement et le rôle de service utilisé par AWS
CodeDeploy.
Pour que AccountA modifie un pipeline afin d'utiliser l'application AWS CodeDeploy créée par
AccountB, AccountA doit :
Version 09/07/2015
121
AWS CodePipeline Guide de l'utilisateur
Conditions préalables : Créer une
clé de chiffrement AWS KMS
• Demander l'ARN ou l'identifiant du compte AccountB (dans cette procédure, l'identifiant de
AccountB est 012ID_ACCOUNT_B).
• Créer ou utiliser une clé AWS KMS gérée par le client dans la région du pipeline et accorder des
autorisations d'utiliser cette clé au rôle de service (AWS-CodePipeline-Service) et à AccountB.
• Créer une stratégie de compartiment Amazon S3 qui accorde à AccountB l'accès au compartiment
Amazon S3 (par exemple, codepipeline-us-east-1-1234567890).
• Créer une stratégie qui permet à AccountA d'assumer un rôle configuré par AccountB et attribuer
cette stratégie au rôle de service (AWS-CodePipeline-Service).
• Modifier le pipeline afin qu'il utilise la clé AWS KMS gérée par le client au lieu de la clé par défaut.
Pour que AccountB autorise l'accès de ses ressources à un pipeline créé dans AccountA, AccountB
doit :
• Demander l'ARN ou l'identifiant du compte AccountA (dans cette procédure, l'identifiant de
AccountA est 012ID_ACCOUNT_A).
• Créer une stratégie appliquée au rôle de l'instance Amazon EC2 configurée pour AWS CodeDeploy,
qui autorise l'accès au compartiment Amazon S3 (codepipeline-us-east-1-1234567890).
• Créer une stratégie appliquée au rôle de l'instance Amazon EC2 configuré pour AWS CodeDeploy
qui autorise l'accès à la clé AWS KMS gérée par le client utilisée pour chiffrer les artéfacts du
pipeline dans AccountA.
• Configurer et associer un rôle IAM (CrossAccount_Role) à une stratégie de relation d'approbation,
pour permettre à AccountA d'assumer le rôle.
• Créer une stratégie autorisant l'accès aux ressources de déploiement requises par le pipeline et
l'associer au CrossAccount_Role.
• Créer une stratégie autorisant l'accès au compartiment Amazon S3 (codepipeline-useast-1-1234567890) et l'associer au CrossAccount_Role.
Rubriques
• Conditions préalables : Créer une clé de chiffrement AWS KMS (p. 122)
• Etape 1 : Configurer des stratégies de compte et des rôles (p. 123)
• Etape 2 : Modifier le pipeline (p. 129)
Conditions préalables : Créer une clé de chiffrement
AWS KMS
Les clés gérées par le client sont spécifiques à une région, comme toutes les clés AWS KMS. Vous
devez créer votre clé AWS KMS gérée par le client dans la même région que celle où le pipeline a été
créé (par exemple, us-east-1).
Tip
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
Création d'une clé AWS KMS gérée par le client
1.
Connectez-vous à l'AWS Management Console avec AccountA et ouvrez la console IAM à
l'adresse https://console.aws.amazon.com/iam/.
2.
Dans Dashboard, choisissez Encryption keys.
Version 09/07/2015
122
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
3.
Dans Encryption keys, puis Filter, assurez-vous que la région sélectionnée est la même que celle
où le pipeline a été créé et choisissez Create key.
Par exemple, si le pipeline a été créé dans us-east-1, assurez-vous que le filtre est défini sur
USA Est (Virginie du Nord).
4.
Dans Alias, saisissez un alias à utiliser pour cette clé (par exemple, PipelineName-Key). Vous
pouvez, si vous le souhaitez, fournir une description pour cette clé, puis choisir Next Step.
5.
Dans Define Key Administrative Permissions, choisissez votre utilisateur IAM et les autres
utilisateurs ou groupes que vous souhaitez désigner comme administrateurs pour cette clé, puis
choisissez Next Step.
6.
Dans Define Key Usage Permissions, sous This Account, sélectionnez le nom du rôle service du
pipeline (par exemple, AWS-CodePipeline-Service). Sous External Accounts, choisissez Add an
External Account. Saisissez l'identifiant de compte pour AccountB afin de finaliser l'ARN, puis
choisissez Next Step.
7.
Dans Preview Key Policy, passez en revue la stratégie et choisissez Finish.
8.
Dans la liste des clés, choisissez l'alias de votre clé
et copiez son ARN (par exemple, arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE). Vous en aurez
besoin lorsque vous modifierez votre pipeline et configurerez des stratégies.
Etape 1 : Configurer des stratégies de compte et
des rôles
Une fois que vous avez créé la clé AWS KMS, vous devez créer et associer des stratégies qui
permettront l'accès entre comptes. Cette opération nécessite des actions provenant à la fois de
AccountA et de AccountB.
Rubriques
• Configuration des stratégies et des rôles du compte qui créera le pipeline (AccountA) (p. 123)
• Configuration des stratégies et des rôles dans le compte possédant les ressource AWS
(AccountB) (p. 125)
Configuration des stratégies et des rôles du compte qui créera
le pipeline (AccountA)
Pour créer un pipeline qui utilise les ressources AWS CodeDeploy associées à un autre compte AWS,
AccountA doit configurer des stratégies pour le compartiment Amazon S3 utilisé pour stocker des
artéfacts et pour le rôle de service d'AWS CodePipeline.
Création d'une stratégie pour le compartiment Amazon S3, qui accorde l'accès à AccountB
(console)
1.
Connectez-vous à l'AWS Management Console avec AccountA et ouvrez la console Amazon S3
à l'adresse https://console.aws.amazon.com/s3/.
2.
Dans la liste des compartiments Amazon S3, choisissez le compartiment Amazon S3 où
sont stockés les artéfacts de vos pipelines. Ce compartiment est nommé codepipeline
-region-1234567EXAMPLE, où region désigne la région AWS dans laquelle vous avez créé le
pipeline et 1234567EXAMPLE est un nombre aléatoire à dix chiffres qui garantit l'unicité du nom du
compartiment (par exemple, codepipeline-us-east-1-1234567890).
3.
Sur la page des détails du compartiment Amazon S3, choisissez Properties.
4.
Dans le volet des propriétés, développez Permissions, puis choisissez Add bucket policy.
Version 09/07/2015
123
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
Tip
Si une stratégie est déjà associée à votre compartiment Amazon S3, choisissez Edit
bucket policy. Vous pouvez ensuite ajouter les déclarations de l'exemple suivant à la
stratégie existante. Pour ajouter une nouvelle stratégie, cliquez sur le lien et suivez
les instructions du Générateur de stratégies AWS. Pour plus d'informations, consultez
Présentation des stratégies IAM.
5.
Saisissez la stratégie suivante dans la fenêtre Bucket Policy Editor. Cela permettra à AccountB
d'accéder aux artéfacts du pipeline et AccountB pourra ainsi ajouter des artéfacts de sortie si
ceux-ci sont créés par une action, comme une source personnalisée ou une action de génération.
Dans l'exemple suivant, l'ARN de AccountB est 012ID_ACCOUNT_B. L'ARN du compartiment
Amazon S3 est codepipeline-us-east-1-1234567890. Remplacez ces ARN par l'ARN du
compte auquel vous souhaitez autoriser l'accès et par l'ARN du compartiment Amazon S3 :
{
"Version": "2012-10-17",
"Id": "SSEAndSSLPolicy",
"Statement": [
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyInsecureConnections",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"Bool": {
"aws:SecureTransport": false
}
}
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"
},
"Action": [
"s3:Get*",
"s3:Put*"
],
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
},
{
"Sid": "",
Version 09/07/2015
124
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890"
}
]
}
6.
Choisissez Save, puis fermez l'éditeur de stratégie.
7.
Choisissez Save pour enregistrer les autorisations du compartiment Amazon S3.
Création d'une stratégie pour le rôle de service pour AWS CodePipeline (console)
1.
Connectez-vous à l'AWS Management Console avec AccountA et ouvrez la console IAM à
l'adresse https://console.aws.amazon.com/iam/.
2.
Dans le volet Dashboard, choisissez Rôles.
3.
Dans la liste des rôles, sous Role Name, choisissez le nom du rôle de service pour AWS
CodePipeline. Par défaut, il s'agit d'AWS-CodePipeline-Service. Si vous avez utilisé un autre nom
pour votre rôle de service, veillez à choisir ce dernier dans la liste.
4.
Sur la page Summary, dans l'onglet Permissions développez Inline Policies, puis choisissez
Create Role Policy.
Note
Si vous n'avez pas déjà créé les stratégies de rôle, Create Role Policy n'apparaît pas.
Cliquez sur le lien pour créer une stratégie à la place.
5.
Dans Set Permissions, choisissez Custom Policy, puis Select.
6.
Sur la page Review Policy, nommez la stratégie dans le champ Policy Name. Dans Policy
Document, tapez la stratégie suivante pour permettre à AccountB d'assumer le rôle. Dans
l'exemple suivant, 012ID_ACCOUNT_B est l'ARN de AccountB :
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::012ID_ACCOUNT_B:role/*"
]
}
}
7.
Choisissez Validate Policy.
8.
Une fois la stratégie validée, choisissez Apply Policy.
Configuration des stratégies et des rôles dans le compte
possédant les ressource AWS (AccountB)
Lorsque vous créez une application, un déploiement et un groupe de déploiement dans AWS
CodeDeploy vous créez également un rôle de l'instance Amazon EC2. (Ce rôle est créé si vous utilisez
l'assistant d'exécution du déploiement, mais vous pouvez également le créer manuellement.) Pour
Version 09/07/2015
125
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
qu'un pipeline créé dans AccountA utilise les ressources AWS CodeDeploy créées dans AccountB,
vous devez :
Note
Ces stratégies sont spécifiques à la configuration des ressources AWS CodeDeploy
utilisées dans un pipeline créé à l'aide d'un autre compte AWS. Les autres ressources AWS
nécessitent des stratégies spécifiques selon leurs besoins en ressources.
• Configurer une stratégie pour le rôle de l'instance qui permet d'accéder au compartiment Amazon S3
où sont stockés les artéfacts du pipeline.
• Créer un second rôle dans AccountB configuré pour l'accès entre comptes.
Ce second rôle doit non seulement avoir accès au compartiment Amazon S3 dans AccountA, mais
il doit également comporter une stratégie autorisant l'accès aux ressources AWS CodeDeploy et une
stratégie de relation d'approbation qui permette à AccountA d'assumer le rôle.
Pour créer une stratégie pour le rôle d'instance Amazon EC2 configuré pour AWS CodeDeploy
(console)
1.
Connectez-vous à l'AWS Management Console avec AccountB et ouvrez la console IAM à
l'adresse https://console.aws.amazon.com/iam/.
2.
Dans le volet Dashboard, choisissez Rôles.
3.
Dans la liste des rôles, sous Role Name, choisissez le nom du rôle de service utilisé comme
rôle d'instance Amazon EC2 pour l'application AWS CodeDeploy. Le nom de ce rôle peut varier,
et plusieurs rôles d'instance peuvent être utilisés par un groupe de déploiement. Pour plus
d'informations, consultez Création d'un profil d'instance IAM pour vos instances Amazon EC2.
4.
Sur la page Summary, dans l'onglet Permissions développez Inline Policies, puis choisissez
Create Role Policy.
5.
Dans Set Permissions, choisissez Custom Policy, puis Select.
6.
Sur la page Review Policy, nommez la stratégie dans le champ Policy Name. Dans Policy
Document, saisissez la stratégie suivante pour accorder l'accès au compartiment Amazon
S3 utilisé par AccountA pour stocker des artéfacts pour les pipelines (dans cet exemple,
codepipeline-us-east-1-1234567890) :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890"
]
Version 09/07/2015
126
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
}
]
}
7.
Choisissez Validate Policy.
8.
Une fois la stratégie validée, choisissez Apply Policy.
9.
Créez une deuxième stratégie pour AWS KMS où rn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE est l'ARN de la
clé gérée par le client, créée dans AccountA et configurée pour autoriser AccountB à utiliser :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey*",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE"
]
}
]
}
Important
Vous devez utiliser l'identifiant de compte de AccountA de cette stratégie comme partie
de la ressource ARN pour la clé AWS KMS, comme indiqué ici, sans quoi la stratégie ne
fonctionnera pas.
10. Choisissez Validate Policy.
11. Une fois la stratégie validée, choisissez Apply Policy.
Maintenant, créez un rôle IAM à utiliser pour l'accès entre comptes et configurez-le de sorte à ce que
AccountA puisse assumer le rôle. Ce rôle doit comporter les stratégies qui permettent d'accéder aux
ressources AWS CodeDeploy et au compartiment Amazon S3 utilisé pour stocker des artéfacts dans
AccountA.
Pour configurer le rôle entre comptes dans IAM
1.
Connectez-vous à l'AWS Management Console avec AccountB et ouvrez la console IAM à
l'adresse https://console.aws.amazon.com/iam/.
2.
Dans Dashboard, choisissez Rôles, puis Create New Role.
3.
Sur la page Set New Role attribuez un nom à ce rôle dans Role Name (par exemple,
CrossAccount_Role). Vous pouvez attribuer le nom de votre choix au rôle, tant que ce nom
respecte les conventions d'affectation de noms énoncées dans IAM. Pensez à donner au rôle un
nom qui indique clairement son but.
4.
Sur la page Select Role Type, choisissez Role for Cross-Account Access. A côté de Provide
access between AWS accounts you own, choisissez Select.
Version 09/07/2015
127
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Configurer des stratégies de compte et des rôles
5.
Saisissez l'identifiant du compte AWS qui créera le pipeline dans AWS CodePipeline (AccountA),
puis choisissez Next Step.
Note
Cette étape crée la stratégie de relation d'approbation entre AccountB et AccountA.
6.
Sur la page Attach Policy, choisissez AmazonS3ReadOnlyAccess, puis Next Step.
Note
Ce n'est pas la stratégie que vous allez utiliser. Vous devez choisir une stratégie pour
mettre fin à l'assistant.
7.
Sur la page Review, choisissez Create Role.
8.
Dans la liste des rôles, choisissez la stratégie que vous venez de créer (par exemple,
CrossAccount_Role) pour ouvrir la page Summary pour ce rôle.
9.
Développez Permissions, puis Inline Policies. Cliquez sur le lien pour créer une stratégie en ligne.
10. Dans Set Permissions, choisissez Custom Policy, puis Select.
11. Sur la page Review Policy, nommez la stratégie dans le champ Policy Name. Dans Policy
Document, saisissez la stratégie suivante pour autoriser l'accès aux ressources AWS
CodeDeploy :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetDeployment",
"codedeploy:GetDeploymentConfig",
"codedeploy:GetApplicationRevision",
"codedeploy:RegisterApplicationRevision"
],
"Resource": "*"
}
]
}
12. Choisissez Validate Policy.
13. Une fois la stratégie validée, choisissez Apply Policy.
14. Dans Inline Policies, choisissez Create Role Policy.
15. Dans Set Permissions, choisissez Custom Policy, puis Select.
16. Sur la page Review Policy, nommez la stratégie dans le champ Policy Name. Dans Policy
Document, saisissez la stratégie suivante pour permettre à ce rôle de récupérer des artefacts
d'entrée dans le compartiment Amazon S3 de AccountA et d'y placer des artefacts de sortie :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject*",
"s3:PutObject",
Version 09/07/2015
128
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Modifier le pipeline
"s3:PutObjectAcl",
"codecommit:ListBranches",
"codecommit:ListRepositories"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
]
}
]
}
17. Choisissez Validate Policy.
18. Une fois la stratégie validée, choisissez Apply Policy.
19. Dans Managed Policies, localisez AmazonS3ReadOnlyAccess dans la liste des stratégies sous
Policy Name, puis choisissez Detach Policy. A l'invite, choisissez Detach.
Etape 2 : Modifier le pipeline
Vous ne pouvez pas utiliser la console AWS CodePipeline pour créer ou modifier un pipeline qui
utilise des ressources associées à un autre compte AWS. Cependant, vous pouvez utiliser la console
pour créer la structure générale du pipeline, puis utiliser l'AWS CLI pour modifier le pipeline et
ajouter ces ressources. Vous pouvez également utiliser la structure d'un pipeline existant et y ajouter
manuellement les ressources.
Pour ajouter les ressources associées à un autre compte AWS (AWS CLI)
1.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la
commande get-pipeline sur le pipeline auquel vous souhaitez ajouter des ressources. Copiez
le résultat de la commande dans un fichier JSON. Par exemple, pour un pipeline nommé
MyFirstPipeline, vous devez saisir quelque chose de semblable à ce qui suit :
aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
Le résultat est envoyé au fichier pipeline.json.
2.
Ouvrez le fichier JSON dans un éditeur de texte brut. Après "type": "S3" dans
le magasin d'objets, ajoutez la clé de chiffrement KMS, l'identifiant et saisissez les
informations, codepipeline-us-east-1-1234567890 étant le nom du compartiment
Amazon S3 utilisé pour stocker des artéfacts du pipeline et arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE étant l'ARN de la
clé gérée par le client que vous venez de créer :
{
"artifactStore”: {
"location": "codepipeline-us-east-1-1234567890",
"type": "S3",
"encryptionKey": {
"id": "arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE",
"type": "KMS"
}
},
3.
Ajoutez une action de déploiement à une étape afin d'utiliser les ressources AWS CodeDeploy
associées à AccountB, y compris les valeurs roleArn pour le rôle entre comptes que vous avez
créé (CrossAccount_Role).
Version 09/07/2015
129
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Modifier le pipeline
L'exemple suivant montre le JSON qui ajoute une action de déploiement nommée
ExternalDeploy. Il utilise les ressources AWS CodeDeploy créées dans AccountB dans une
étape nommée Beta. Dans l'exemple suivant, l'ARN du AccountB est 012ID_ACCOUNT_B :
,
{
"name": "Beta",
"actions": [
{
"inputArtifacts": [
{
"name": "MyApp"
}
],
"name": "ExternalDeploy",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"version": "1",
"provider": "CodeDeploy"
},
"outputArtifacts": [],
"configuration": {
"ApplicationName": "AccountBApplicationName",
"DeploymentGroupName":
"AccountBApplicationGroupName"
},
"runOrder": 1,
"roleArn":
"arn:aws:iam::012ID_ACCOUNT_B:role/CrossAccount_Role"
}
]
}
Note
Il ne s'agit pas du format JSON pour l'ensemble du pipeline, mais seulement de la
structure de l'action dans une étape.
4.
Sauvegardez le fichier.
5.
Pour appliquer les modifications, exécutez la commande update-pipeline, en spécifiant le nom du
pipeline et le fichier JSON du pipeline, d'une manière similaire à l'exemple suivant :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
Cette commande affiche toute la structure du pipeline mise à jour.
Version 09/07/2015
130
AWS CodePipeline Guide de l'utilisateur
Intégration des fonctions Lambda dans les pipelines
Pour tester le pipeline qui utilise des ressources associées à un autre compte AWS
1.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la
commande start-pipeline-execution, en spécifiant le nom du pipeline, comme dans l'exemple
suivant :
aws codepipeline start-pipeline-execution --name MyFirstPipeline
Pour plus d'informations, consultez Nouvelle exécution manuelle d'un pipeline (p. 120).
2.
Connectez-vous à l'AWS Management Console avec AccountA et ouvrez la console AWS
CodePipeline à l'adresse http://console.aws.amazon.com/codepipeline.
Les noms de tous les pipelines associés à votre compte AWS s'affichent.
3.
Dans Name, choisissez le nom du pipeline que vous venez de modifier. Une vue détaillée du
pipeline s'affiche alors, laquelle indique notamment l'état de chaque action, dans chaque étape du
pipeline.
4.
Observez la progression à travers le pipeline. Attendez l'apparition d'un message vous indiquant la
réussite de l'action qui utilise la ressource associée à un autre compte AWS.
Note
Vous recevrez un message d'erreur si vous essayez d'afficher les détails de l'action tout
en étant connecté à AccountA. Déconnectez-vous puis connectez-vous à AccountB
pour afficher les détails du déploiement dans AWS CodeDeploy.
Intégration des fonctions AWS Lambda dans les
pipelines dans AWS CodePipeline
AWS Lambda est un service informatique qui vous permet d'exécuter un code sans nécessiter le
provisionnement ou la gestion des serveurs. Vous pouvez créer des fonctions Lambda et les ajouter
en tant qu'actions dans vos pipelines. Etant donné qu'Lambda vous permet de rédiger des fonctions
permettant d'effectuer quasiment toutes les tâches, vous pouvez personnaliser le fonctionnement de
votre pipeline.
Note
La création et l'exécution de fonctions Lambda pourrait entraîner des frais sur votre compte
AWS. Pour plus d'informations, consultez la page Tarification.
Voici quelques manières d'utiliser les fonctions Lambda dans les pipelines :
• Pour déployer les changements à votre environnement en appliquant ou en mettant à jour le modèle
AWS CloudFormation.
• Pour créer des ressources à la demande dans une étape d'un pipeline à l'aide d'AWS
CloudFormation et les supprimer dans une autre étape.
• Pour déployer des versions de l'application sans aucune interruption dans AWS Elastic Beanstalk
avec une fonction Lambda échangeant des valeurs CNAME.
• Pour un déploiement sur des instances Amazon ECS Docker.
• Pour sauvegarder les ressources avant une génération ou un déploiement en créant un instantané
de l'AMI.
• Pour ajouter l'intégration avec des produits tiers à votre pipeline, comme l'envoi de messages à un
client IRC.
Version 09/07/2015
131
AWS CodePipeline Guide de l'utilisateur
Etape 1 : Créer un pipeline
Cette rubrique suppose que vous êtes familiarisé avec AWS CodePipeline et AWS Lambda et
que vous savez comment créer des pipelines, des fonctions et les stratégies et rôles IAM dont ils
dépendent. Dans cette rubrique, nous passerons en revue les étapes relatives aux procédures
suivantes :
• Création d'une fonction Lambda qui permet de vérifier si une page web a été déployée avec succès.
• Configuration des rôles d'exécution AWS CodePipeline et Lambda et des autorisations requises pour
exécuter la fonction dans le pipeline.
• Modification d'un pipeline pour ajouter la fonction Lambda en tant qu'action.
• Test de l'action en publiant manuellement une modification.
Cette rubrique inclut des modèles de fonctions pour démontrer la flexibilité des fonctions Lambda dans
AWS CodePipeline :
• Basic Lambda function (p. 134)
• Création d'une fonction de base Lambda à utiliser avec AWS CodePipeline.
• Envoi du résultat de réussite ou d'échec à AWS CodePipeline dans le lien Details de l'action.
• Modèle de fonction Python utilisant un modèle AWS CloudFormation (p. 141)
• Utilisation des paramètres utilisateur codés en JSON pour transmettre plusieurs valeurs de
configuration à la fonction (get_user_params).
• Interaction avec des artéfacts .zip dans un compartiment d'artéfacts (get_template).
• Utilisation d'un jeton de poursuite pour surveiller un processus asynchrone longue durée
(continue_job_later). Cela permettra à l'action de se poursuivre et à la fonction de réussir
même si l'opération dépasse le temps d'exécution de cinq minutes (une limite dans Lambda).
Chaque modèle de fonction inclut des informations sur les autorisations, que vous devez ajouter au
rôle. Pour plus d'informations sur les limites dans AWS Lambda, consultez la rubrique Limites dans le
Guide du développeur AWS Lambda.
Important
Le modèle de code, les rôles et les stratégies inclus dans cette rubrique sont fournis à titre
d'exemple uniquement et tels quels.
Rubriques
• Etape 1 : Créer un pipeline (p. 132)
• Etape 2 : Créer la fonction Lambda (p. 133)
• Etape 3 : Ajouter la fonction Lambda à un pipeline dans la console AWS CodePipeline (p. 137)
• Etape 4 : Tester le pipeline avec la fonction Lambda (p. 138)
• Etape 5 : Etapes suivantes (p. 139)
• Exemple d'événement JSON (p. 139)
• Autres modèles de fonctions (p. 140)
Etape 1 : Créer un pipeline
Dans cette étape, vous allez créer un pipeline auquel vous ajouterez plus tard les fonctions Lambda.
Il s'agit du même pipeline que vous avez créé dans Mise en route (p. 25). Si ce pipeline est toujours
configuré pour votre compte et se trouve dans la même région où vous allez créer la fonction Lambda,
vous pouvez ignorer cette étape.
Version 09/07/2015
132
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Créer la fonction Lambda
Important
Vous devez créer le pipeline ainsi que la totalité de ses ressources dans la même région où
vous allez créer la fonction Lambda.
Pour créer le pipeline
1.
Suivez les trois premières étapes dans Procédure pas à pas avec pipeline simple (compartiment
Amazon S3) (p. 26) pour créer un compartiment Amazon S3 des ressources AWS CodeDeploy
et un pipeline en deux étapes. Choisissez l'option Amazon Linux pour vos types d'instance. Vous
pouvez utiliser le nom de votre choix pour le pipeline, mais dans les étapes de cette rubrique le
nom MyLambdaTestPipeline est utilisé.
2.
Sur la page d'état de votre pipeline, dans l'action AWS CodeDeploy, choisissez Details. Sur
la page des détails du déploiement pour le groupe de déploiement, choisissez un identifiant
d'instance dans la liste.
3.
Dans la console Amazon EC2, de l'onglet Description de l'instance, copiez l'adresse IP dans
Public IP (par exemple, 192.0.2.4). Vous utiliserez cette adresse comme cible de la fonction
dans AWS Lambda.
Note
Le rôle de service par défaut pour AWS CodePipeline, AWS CodePipeline-Service, inclut
les autorisations Lambda requises pour invoquer la fonction, par conséquent vous n'avez
pas besoin de créer un rôle ou une stratégie d'appel supplémentaire. Toutefois, si vous
avez modifié le rôle du service par défaut ou que vous en avez sélectionné un autre,
assurez-vous que la stratégie du rôle permet les autorisations lambda:InvokeFunction et
lambda:ListFunctions. Dans le cas contraire, les pipelines incluant les actions Lambda
échoueront.
Etape 2 : Créer la fonction Lambda
Dans cette étape, vous allez créer une fonction Lambda qui génère une requête HTTP et recherche
une ligne de texte sur une page web. Dans le cadre de cette étape, vous devez également créer
une stratégie IAM et un rôle d'exécution Lambda. Pour plus d'informations sur les rôles d'exécution
Lambda, et comprendre pourquoi ces derniers sont obligatoires, consultez Modèle d'autorisations dans
le Manuel du développeur AWS Lambda.
Pour créer le rôle d'exécution
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Sélectionnez Policies, puis Create Policy.
3.
Sur la page Create Policy, cliquez sur le bouton Select en regard de Create Your Own Policy.
4.
Sur la page Review Policy, dans le champ Policy Name, attribuez un nom à la stratégie (par
exemple, CodePipelineLambdaExecPolicy). Dans le champ Description, saisissez Enables
Lambda to execute code. Dans Policy Document, copiez et collez la stratégie suivante dans le
champ de la stratégie et choisissez Validate Policy.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
Version 09/07/2015
133
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Créer la fonction Lambda
"logs:*"
],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:*"
},
{
"Action": [
"codepipeline:PutJobSuccessResult",
"codepipeline:PutJobFailureResult"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Une fois la stratégie validée, choisissez Create Policy.
Note
Il s'agit des autorisations minimales requises pour permettre à une fonction Lambda
d'interagir avec AWS CodePipeline et Amazon CloudWatch. Si vous souhaitez développer
cette stratégie pour permettre aux fonctions d'interagir avec d'autres ressources AWS,
vous devez modifier cette stratégie pour autoriser les actions requises par ces fonctions
Lambda.
5.
Sur la page du tableau de bord de la stratégie, choisissez Roles, puis Create New Role.
6.
Sur la page Set Role Name, saisissez le nom du rôle (par exemple,
CodePipelineLambdaExecRole), puis choisissez Next Step.
7.
Sur la page Select Role Type, dans la liste des rôles sous AWS Service Roles, cliquez sur le
bouton Select en regard d'AWS Lambda.
8.
Sur la page Attach Policy, cochez la case à côté de CodePipelineLambdaExecPolicy, puis
choisissez Next Step.
9.
Sur la page Review, choisissez Create Role.
Création du modèle de la fonction Lambda à utiliser avec AWS CodePipeline
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS Lambda à l'adresse
https://console.aws.amazon.com/lambda/.
2.
Sur la page Lambda: Function list, choisissez Create a Lambda function.
Tip
Si une page Welcome s'affiche au lieu de la page Lambda: Function list, choisissez Get
Started Now.
3.
Sur la page Select blueprint, choisissez Skip.
4.
Sur la page Configure function, dans la page Name, saisissez un nom pour votre fonction Lambda
(par exemple, MyLambdaFunctionForAWSCodePipeline). Le cas échéant, dans Description,
saisissez une description de la fonction (par exemple, Un modèle de test pour vérifier
si le site web répond par 200 (OK) et contient un mot spécifique sur la
page). Dans la liste Runtime, choisissez Node.js, puis copiez le code suivant dans le champ
Lambda function code :
Version 09/07/2015
134
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Créer la fonction Lambda
Note
L'objet d'événement, sous la clé CodePipeline.job, contient les détails de la tâche. Pour
obtenir un exemple complet de l'événement JSON qu'AWS CodePipeline renvoie à
Lambda, consultez Exemple d'événement JSON (p. 139).
var assert = require('assert');
var AWS = require('aws-sdk');
var http = require('http');
exports.handler = function(event, context) {
var codepipeline = new AWS.CodePipeline();
// Retrieve the Job ID from the Lambda action
var jobId = event["CodePipeline.job"].id;
// Retrieve the value of UserParameters from the Lambda action
configuration in AWS CodePipeline, in this case a URL which will be
// health checked by this function.
var url =
event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;
// Notify AWS CodePipeline of a successful job
var putJobSuccess = function(message) {
var params = {
jobId: jobId
};
codepipeline.putJobSuccessResult(params, function(err, data) {
if(err) {
context.fail(err);
} else {
context.succeed(message);
}
});
};
// Notify AWS CodePipeline of a failed job
var putJobFailure = function(message) {
var params = {
jobId: jobId,
failureDetails: {
message: JSON.stringify(message),
type: 'JobFailed',
externalExecutionId: context.invokeid
}
};
codepipeline.putJobFailureResult(params, function(err, data) {
context.fail(message);
});
};
// Validate the URL passed in UserParameters
if(!url || url.indexOf('http://') === -1) {
putJobFailure('The UserParameters field must contain a valid URL
address to test, including http:// or https://');
return;
Version 09/07/2015
135
AWS CodePipeline Guide de l'utilisateur
Etape 2 : Créer la fonction Lambda
}
// Helper function to make a HTTP GET request to the page.
// The helper will test the response and succeed or fail the job
accordingly
var getPage = function(url, callback) {
var pageObject = {
body: '',
statusCode: 0,
contains: function(search) {
return this.body.indexOf(search) > -1;
}
};
http.get(url, function(response) {
pageObject.body = '';
pageObject.statusCode = response.statusCode;
response.on('data', function (chunk) {
pageObject.body += chunk;
});
response.on('end', function () {
callback(pageObject);
});
response.resume();
}).on('error', function(error) {
// Fail the job if our request failed
putJobFailure(error);
});
};
getPage(url, function(returnedPage) {
try {
// Check if the HTTP response has a 200 status
assert(returnedPage.statusCode === 200);
// Check if the page contains the text "Congratulations"
// You can change this to check for different text, or add
other tests as required
assert(returnedPage.contains('Congratulations'));
// Succeed the job
putJobSuccess("Tests passed.");
} catch (ex) {
// If any of the assertions failed then fail the job
putJobFailure(ex);
}
});
};
5.
Laissez la valeur par défaut dans Handler name mais modifiez Role pour saisir
CodePipelineLambdaExecRole.
6.
Dans Advanced settings, pour Timeout (s), saisissez 20.
7.
Une fois que vous avez terminé de configurer ces détails, choisissez Next.
8.
Sur la page Review, choisissez Create function.
Version 09/07/2015
136
AWS CodePipeline Guide de l'utilisateur
Etape 3 : Ajouter la fonction Lambda à un
pipeline dans la console AWS CodePipeline
Etape 3 : Ajouter la fonction Lambda à un pipeline
dans la console AWS CodePipeline
Dans cette étape, vous ajoutez une nouvelle étape à votre pipeline puis une action (une action Lambda
qui appelle votre fonction) à cette étape.
Pour ajouter une étape
1.
Connectez-vous à la AWS Management Console et ouvrez la console AWS CodePipeline à
l'adresse http://console.aws.amazon.com/codepipeline.
2.
Sur la page Welcome, choisissez le pipeline que vous avez créé dans la liste des pipelines.
3.
Sur la page de la vue du pipeline, choisissez Edit.
4.
Sur la page Edit, choisissez l'option d'ajouter une étape après l'étape de déploiement avec l'action
AWS CodeDeploy. Saisissez le nom de l'étape (par exemple, LambdaStage), puis choisissez
l'option d'ajouter une action à l'étape.
Note
Vous pouvez également ajouter votre action Lambda à une étape existante. À des fins de
démonstration, nous ajoutons la fonction Lambda en tant qu'unique action dans une étape
pour vous permettre de voir facilement ses progrès tandis que les artéfacts évoluent dans
un pipeline.
5.
Dans le volet Add action, dans Action category, choisissez Invoke. Dans Invoke actions, puis
Action name, saisissez un nom pour votre action Lambda (par exemple, MyLambdaAction).
Dans Provider, choisissez AWS Lambda. Dans Function name, choisissez ou tapez le nom
de votre fonction Lambda (par exemple, MyLambdaFunctionForAWSCodePipeline). Dans
User parameters, spécifiez l'adresse IP pour l'instance Amazon EC2 que vous avez copiée
précédemment (par exemple, http://192.0.2.4), puis choisissez Add action.
Version 09/07/2015
137
AWS CodePipeline Guide de l'utilisateur
Etape 4 : Tester le pipeline avec la fonction Lambda
Note
Cette rubrique utilise une adresse IP, mais dans un cas réel, vous pourriez renseigner le
nom de votre site web à la place (par exemple, http://www.example.com). Pour plus
d'informations sur les données de l'événement et les gestionnaires dans AWS Lambda,
consultez Modèle de programmation dans le Guide du développeur AWS Lambda.
6.
Sur la page Edit choisissez Save pipeline changes.
Etape 4 : Tester le pipeline avec la fonction Lambda
Pour tester la fonction, publiez la modification la plus récente dans le pipeline.
Pour utiliser la console afin d'exécuter la version la plus récente d'un artéfact dans un pipeline
1.
Sur la page des détails du pipeline, choisissez Changement de version. Cette opération exécutera
la révision la plus récente disponible dans chaque emplacement source spécifié d'une action
source à travers le pipeline.
2.
Lorsque l'action Lambda est terminée, cliquez sur le lien Details pour afficher le flux du journal de
la fonction dans Amazon CloudWatch y compris la durée facturée de l'événement. En cas d'échec
de la fonction, le journal CloudWatch fournira des informations sur la cause.
Version 09/07/2015
138
AWS CodePipeline Guide de l'utilisateur
Etape 5 : Etapes suivantes
Etape 5 : Etapes suivantes
Maintenant que vous avez créé avec succès une fonction Lambda et que vous l'avez ajoutée en tant
qu'action dans un pipeline, vous pouvez essayer ce qui suit :
• Ajouter d'autres actions Lambda à votre étape pour vérifier les autres pages web.
• Modifier la fonction Lambda pour vérifier une chaîne de texte différente.
• Explorer les fonctions Lambda et créer et ajouter vos propres fonctions Lambda aux pipelines.
Une fois que vous avez terminé de tester la fonction Lambda, pensez à la retirer de votre pipeline,
à la supprimer d'AWS Lambda et à supprimer le rôle dans IAM afin d'éviter d'éventuels frais. Pour
plus d'informations, consultez Modification d'un pipeline (p. 70), Suppression d'un pipeline (p. 96) et
Suppression des rôles ou des profils d'instance.
Exemple d'événement JSON
L'exemple suivant présente un modèle d'événement JSON envoyé à Lambda par AWS CodePipeline.
Vous pouvez utiliser un fichier JSON pour tester votre fonction manuellement dans la console Lambda.
Les détails de la tâche diffèrent de la norme documentée dans l'API GetJobDetails seulement en ce
que les détails de la configuration de l'action Lambda, FunctionName et UserParameters, sont
fournis dans la réponse. Les valeurs en italique rouge sont des exemples ou des explications, et
non pas de vraies valeurs.
{
"CodePipeline.job": {
"id": "11111111-abcd-1111-abcd-111111abcdef",
"accountId": "111111111111",
"data": {
"actionConfiguration": {
Version 09/07/2015
139
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
"configuration": {
"FunctionName": "MyLambdaFunctionForAWSCodePipeline",
"UserParameters": "some-input-such-as-a-URL"
}
},
"inputArtifacts": [
{
"location": {
"s3Location": {
"bucketName": "the name of the bucket configured
as the pipeline artifact store in Amazon S3, for example codepipeline-useast-1-1234567890",
"objectKey": "the name of the application, for
example CodePipelineDemoApplication.zip"
},
"type": "S3"
},
"revision": null,
"name": "ArtifactName"
}
],
"outputArtifacts": [],
"artifactCredentials": {
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/
bPxRfiCYEXAMPLEKEY",
"sessionToken": "MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
3rrszlaEXAMPLE=",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"continuationToken": "A continuation token if continuing job"
}
}
}
Autres modèles de fonctions
Les modèles de fonctions Lambda suivantes présentent davantage de fonctionnalités que vous pouvez
utiliser pour votre pipeline dans AWS CodePipeline. Pour utiliser ces fonctions, il est possible que vous
deviez apporter des modifications à la stratégie du rôle de l'exécution Lambda, comme indiqué dans
l'introduction de chaque modèle.
Rubriques
• Modèle de fonction Python utilisant un modèle AWS CloudFormation (p. 141)
Version 09/07/2015
140
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
Modèle de fonction Python utilisant un modèle AWS
CloudFormation
Le modèle suivant présente une fonction qui crée ou met à jour une pile en fonction d'un modèle AWS
CloudFormation fourni. Ce modèle crée un compartiment Amazon S3. Il est présenté à des fins de
démonstration seulement, pour réduire les coûts. Idéalement, vous devez supprimer la pile avant de
charger quoi que ce soit dans le compartiment. Si vous chargez des fichiers dans le compartiment,
vous ne pourrez pas supprimer ce dernier lorsque vous supprimez la pile. Vous devrez supprimer
manuellement tout ce qui se trouve dans le compartiment avant de pouvoir supprimer le compartiment
lui-même.
Cet exemple Python suppose que vous possédez un pipeline qui utilise un compartiment Amazon S3
comme action source, ou que vous avez accès à un compartiment Amazon S3 versionné, que vous
pouvez utiliser avec le pipeline. Vous allez créer le modèle AWS CloudFormation, le compresser et le
charger dans ce compartiment en tant que fichier .zip. Vous devez ensuite ajouter une action source à
votre pipeline qui récupère ce fichier .zip dans le compartiment.
Ce modèle illustre :
• L'utilisation des paramètres utilisateur codés en JSON pour transmettre plusieurs valeurs de
configuration de la fonction (get_user_params).
• L'interaction avec des artéfacts .zip dans un compartiment d'artéfacts (get_template).
• L'utilisation d'un jeton de poursuite pour surveiller un processus asynchrone longue durée
(continue_job_later). Cela permettra à l'action de se poursuivre et à la fonction de réussir
même si l'opération dépasse le temps d'exécution de cinq minutes (une limite dans Lambda).
Pour utiliser ce modèle de fonction Lambda, la stratégie du rôle de l'exécution Lambda doit avoir des
autorisations Allow dans AWS CloudFormation Amazon S3 et AWS CodePipeline comme illustré
dans ce modèle de stratégie :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:*"
],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:*"
},
{
"Action": [
"codepipeline:PutJobSuccessResult",
"codepipeline:PutJobFailureResult"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:CreateStack",
"cloudformation:UpdateStack"
],
"Effect": "Allow",
"Resource": "*"
},
Version 09/07/2015
141
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
{
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Pour créer le modèle AWS CloudFormation, ouvrez un éditeur de texte brut et copiez-collez le code
suivant :
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation template which creates an S3 bucket",
"Resources" : {
"MySampleBucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
}
}
},
"Outputs" : {
"BucketName" : {
"Value" : { "Ref" : "MySampleBucket" },
"Description" : "The name of the S3 bucket"
}
}
}
Sauvegardez ce document comme fichier JSON en lui attribuant le nom template.json dans un
répertoire nommé template-package. Créez un fichier compressé (.zip) de ce répertoire et un
fichier nommé template-package.zip et téléchargez le fichier compressé dans un compartiment
versionné Amazon S3. Si vous possédez déjà un compartiment configuré pour votre pipeline, vous
pouvez l'utiliser. Ensuite, modifiez votre pipeline pour ajouter une action source qui récupérera le
fichier .zip. Nommez la sortie de cette action MyTemplate. Pour plus d'informations, consultez
Modification d'un pipeline (p. 70).
Note
Le modèle de fonction Lambda nécessite ces noms de fichiers et la structure compressée.
Cependant, vous pouvez utiliser à la place votre propre modèle AWS CloudFormation
pour ce modèle. Si vous choisissez d'utiliser votre propre modèle, assurez-vous de
modifier la stratégie du rôle d'exécution Lambda pour permettre toutes les fonctionnalités
supplémentaires requises par votre modèle AWS CloudFormation.
Pour ajouter le code suivant en tant que fonction dans Lambda
1.
2.
3.
4.
5.
Ouvrez la console Lambda et choisissez Create a Lambda function.
Sur la page Select blueprint, choisissez Skip.
Sur la page Configure function, dans Name, saisissez un nom pour votre fonction Lambda. Vous
pouvez, si vous le souhaitez, saisir une description de la fonction dans le champ Description.
Dans la liste Runtime, choisissez Python 2.7.
Laissez la valeur Handler name par défaut, mais modifiez Role pour saisir votre rôle d'exécution
Lambda (par exemple, CodePipelineLambdaExecRole).
Version 09/07/2015
142
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
6.
Dans Advanced settings, sous Timeout (s), remplacez la valeur par défaut de 3 secondes par 20.
7.
Copiez le code suivant dans le champ Lambda function code :
from __future__ import print_function
from boto3.session import Session
import
import
import
import
import
import
import
json
urllib
boto3
zipfile
tempfile
botocore
traceback
print('Loading function')
cf = boto3.client('cloudformation')
code_pipeline = boto3.client('codepipeline')
def find_artifact(artifacts, name):
"""Finds the artifact 'name' among the 'artifacts'
Args:
artifacts: The list of artifacts available to the function
name: The artifact we wish to use
Returns:
The artifact dictionary found
Raises:
Exception: If no matching artifact is found
"""
for artifact in artifacts:
if artifact['name'] == name:
return artifact
raise Exception('Input artifact named "{0}" not found in
event'.format(name))
def get_template(s3, artifact, file_in_zip):
"""Gets the template artifact
Downloads the artifact from the S3 artifact store to a temporary file
then extracts the zip and returns the file containing the
CloudFormation
template.
Args:
artifact: The artifact to download
file_in_zip: The path to the file within the zip containing the
template
Returns:
The CloudFormation template as a string
Raises:
Exception: Any exception thrown while downloading the artifact or
unzipping it
Version 09/07/2015
143
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
"""
tmp_file = tempfile.NamedTemporaryFile()
bucket = artifact['location']['s3Location']['bucketName']
key = artifact['location']['s3Location']['objectKey']
with tempfile.NamedTemporaryFile() as tmp_file:
s3.download_file(bucket, key, tmp_file.name)
with zipfile.ZipFile(tmp_file.name, 'r') as zip:
return zip.read(file_in_zip)
def update_stack(stack, template):
"""Start a CloudFormation stack update
Args:
stack: The stack to update
template: The template to apply
Returns:
True if an update was started, false if there were no changes
to the template since the last update.
Raises:
Exception: Any exception besides "No updates are to be performed."
"""
try:
cf.update_stack(StackName=stack, TemplateBody=template)
return True
except botocore.exceptions.ClientError as e:
if e.response['Error']['Message'] == 'No updates are to be
performed.':
return False
else:
raise Exception('Error updating CloudFormation stack
"{0}"'.format(stack), e)
def stack_exists(stack):
"""Check if a stack exists or not
Args:
stack: The stack to check
Returns:
True or False depending on whether the stack exists
Raises:
Any exceptions raised .describe_stacks() besides that
the stack doesn't exist.
"""
try:
cf.describe_stacks(StackName=stack)
return True
except botocore.exceptions.ClientError as e:
if "does not exist" in e.response['Error']['Message']:
return False
else:
raise e
Version 09/07/2015
144
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
def create_stack(stack, template):
"""Starts a new CloudFormation stack creation
Args:
stack: The stack to be created
template: The template for the stack to be created with
Throws:
Exception: Any exception thrown by .create_stack()
"""
cf.create_stack(StackName=stack, TemplateBody=template)
def get_stack_status(stack):
"""Get the status of an existing CloudFormation stack
Args:
stack: The name of the stack to check
Returns:
The CloudFormation status string of the stack such as
CREATE_COMPLETE
Raises:
Exception: Any exception thrown by .describe_stacks()
"""
stack_description = cf.describe_stacks(StackName=stack)
return stack_description['Stacks'][0]['StackStatus']
def put_job_success(job, message):
"""Notify CodePipeline of a successful job
Args:
job: The CodePipeline job ID
message: A message to be logged relating to the job status
Raises:
Exception: Any exception thrown by .put_job_success_result()
"""
print('Putting job success')
print(message)
code_pipeline.put_job_success_result(jobId=job)
def put_job_failure(job, message):
"""Notify CodePipeline of a failed job
Args:
job: The CodePipeline job ID
message: A message to be logged relating to the job status
Raises:
Exception: Any exception thrown by .put_job_failure_result()
"""
print('Putting job failure')
print(message)
Version 09/07/2015
145
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
code_pipeline.put_job_failure_result(jobId=job,
failureDetails={'message': message, 'type': 'JobFailed'})
def continue_job_later(job, message):
"""Notify CodePipeline of a continuing job
This will cause CodePipeline to invoke the function again with the
supplied continuation token.
Args:
job: The JobID
message: A message to be logged relating to the job status
continuation_token: The continuation token
Raises:
Exception: Any exception thrown by .put_job_success_result()
"""
# Use the continuation token to keep track of any job execution state
# This data will be available when a new job is scheduled to continue
the current execution
continuation_token = json.dumps({'previous_job_id': job})
print('Putting job continuation')
print(message)
code_pipeline.put_job_success_result(jobId=job,
continuationToken=continuation_token)
def start_update_or_create(job_id, stack, template):
"""Starts the stack update or create process
If the stack exists then update, otherwise create.
Args:
job_id: The ID of the CodePipeline job
stack: The stack to create or update
template: The template to create/update the stack with
"""
if stack_exists(stack):
status = get_stack_status(stack)
if status not in ['CREATE_COMPLETE', 'ROLLBACK_COMPLETE',
'UPDATE_COMPLETE']:
# If the CloudFormation stack is not in a state where
# it can be updated again then fail the job right away.
put_job_failure(job_id, 'Stack cannot be updated when status
is: ' + status)
return
were_updates = update_stack(stack, template)
if were_updates:
# If there were updates then continue the job so it can
monitor
# the progress of the update.
continue_job_later(job_id, 'Stack update started')
else:
Version 09/07/2015
146
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
# If there were no updates then succeed the job immediately
put_job_success(job_id, 'There were no stack updates')
else:
# If the stack doesn't already exist then create it instead
# of updating it.
create_stack(stack, template)
# Continue the job so the pipeline will wait for the
CloudFormation
# stack to be created.
continue_job_later(job_id, 'Stack create started')
def check_stack_update_status(job_id, stack):
"""Monitor an already-running CloudFormation update/create
Succeeds, fails or continues the job depending on the stack status.
Args:
job_id: The CodePipeline job ID
stack: The stack to monitor
"""
status = get_stack_status(stack)
if status in ['UPDATE_COMPLETE', 'CREATE_COMPLETE']:
# If the update/create finished successfully then
# succeed the job and don't continue.
put_job_success(job_id, 'Stack update complete')
elif status in ['UPDATE_IN_PROGRESS', 'UPDATE_ROLLBACK_IN_PROGRESS',
'UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS', 'CREATE_IN_PROGRESS',
'ROLLBACK_IN_PROGRESS']:
# If the job isn't finished yet then continue it
continue_job_later(job_id, 'Stack update still in progress')
else:
# If the Stack is a state which isn't "in progress" or "complete"
# then the stack update/create has failed so end the job with
# a failed result.
put_job_failure(job_id, 'Update failed: ' + status)
def get_user_params(job_data):
"""Decodes the JSON user parameters and validates the required
properties.
Args:
job_data: The job data structure containing the UserParameters
string which should be a valid JSON structure
Returns:
The JSON parameters decoded as a dictionary.
Raises:
Exception: The JSON can't be decoded or a property is missing.
"""
try:
# Get the user parameters which contain the stack, artifact and
file settings
user_parameters = job_data['actionConfiguration']['configuration']
['UserParameters']
Version 09/07/2015
147
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
decoded_parameters = json.loads(user_parameters)
except Exception as e:
# We're expecting the user parameters to be encoded as JSON
# so we can pass multiple values. If the JSON can't be decoded
# then fail the job with a helpful message.
raise Exception('UserParameters could not be decoded as JSON')
if 'stack' not in decoded_parameters:
# Validate that the stack is provided, otherwise fail the job
# with a helpful message.
raise Exception('Your UserParameters JSON must include the stack
name')
if 'artifact' not in decoded_parameters:
# Validate that the artifact name is provided, otherwise fail the
job
# with a helpful message.
raise Exception('Your UserParameters JSON must include the
artifact name')
if 'file' not in decoded_parameters:
# Validate that the template file is provided, otherwise fail the
job
# with a helpful message.
raise Exception('Your UserParameters JSON must include the
template file name')
return decoded_parameters
def setup_s3_client(job_data):
"""Creates an S3 client
Uses the credentials passed in the event by CodePipeline. These
credentials can be used to access the artifact bucket.
Args:
job_data: The job data structure
Returns:
An S3 client with the appropriate credentials
"""
key_id = job_data['artifactCredentials']['accessKeyId']
key_secret = job_data['artifactCredentials']['secretAccessKey']
session_token = job_data['artifactCredentials']['sessionToken']
session = Session(aws_access_key_id=key_id,
aws_secret_access_key=key_secret,
aws_session_token=session_token)
return session.client('s3',
config=botocore.client.Config(signature_version='s3v4'))
def lambda_handler(event, context):
"""The Lambda function handler
If a continuing job then checks the CloudFormation stack status
and updates the job accordingly.
Version 09/07/2015
148
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
If a new job then kick of an update or creation of the target
CloudFormation stack.
Args:
event: The event passed by Lambda
context: The context passed by Lambda
"""
try:
# Extract the Job ID
job_id = event['CodePipeline.job']['id']
# Extract the Job Data
job_data = event['CodePipeline.job']['data']
# Extract the params
params = get_user_params(job_data)
# Get the list of artifacts passed to the function
artifacts = job_data['inputArtifacts']
stack = params['stack']
artifact = params['artifact']
template_file = params['file']
if 'continuationToken' in job_data:
# If we're continuing then the create/update has already been
triggered
# we just need to check if it has finished.
check_stack_update_status(job_id, stack)
else:
# Get the artifact details
artifact_data = find_artifact(artifacts, artifact)
# Get S3 client to access artifact with
s3 = setup_s3_client(job_data)
# Get the JSON template file out of the artifact
template = get_template(s3, artifact_data, template_file)
# Kick off a stack update or create
start_update_or_create(job_id, stack, template)
except Exception as e:
# If any other exceptions which we didn't expect are raised
# then fail the job and log the exception message.
print('Function failed due to exception.')
print(e)
traceback.print_exc()
put_job_failure(job_id, 'Function exception: ' + str(e))
print('Function complete.')
return "Complete."
8.
Enregistrez la fonction.
9.
Depuis la console AWS CodePipeline, modifiez le pipeline pour ajouter la fonction en tant
qu'action d'une étape de votre pipeline. Dans UserParameters, fournissez une chaîne JSON
comprenant des accolades avec trois paramètres séparés par des virgules : un nom de pile,
le nom du modèle AWS CloudFormation et le chemin d'accès au fichier, ainsi que le nom de
l'application.
Version 09/07/2015
149
AWS CodePipeline Guide de l'utilisateur
Autres modèles de fonctions
Par exemple, pour créer une pile nommée MyTestStack, pour un pipeline avec l'artéfact d'entrée
MyTemplate, dans UserParameters, tapez : {"stack":"MyTestStack","file":"template-package/
template.json", "artifact":"MyTemplate"}.
Note
Même si vous avez spécifié l'artéfact d'entrée dans UserParameters, vous devez
également spécifier ce dernier pour l'action dans Input artifacts.
10. Enregistrez les modifications apportées au pipeline, puis publiez manuellement une modification
pour tester l'action et la fonction Lambda.
Version 09/07/2015
150
AWS CodePipeline Guide de l'utilisateur
Erreur de pipeline : Un pipeline configuré avec
AWS Elastic Beanstalk affiche un message
d'erreur : « Echec du déploiement. Le rôle fourni
ne dispose pas des autorisations suffisantes :
service : AmazonElasticLoadBalancing »
Dépannage AWS CodePipeline
Les informations suivantes peuvent vous aider à résoudre les problèmes courants dans AWS
CodePipeline.
Rubriques
• Erreur de pipeline : Un pipeline configuré avec AWS Elastic Beanstalk affiche un message
d'erreur : « Echec du déploiement. Le rôle fourni ne dispose pas des autorisations suffisantes :
service : AmazonElasticLoadBalancing » (p. 151)
• Erreur de pipeline : Une action source affiche un message indiquant que les autorisations
sont insuffisantes : « Impossible d'accéder au référentiel AWS CodeCommit repository-name.
Assurez-vous que le rôle IAM du pipeline dispose des autorisations suffisantes pour accéder au
référentiel. » (p. 152)
• Erreur de pipeline : Une action Jenkins de génération ou de test s'exécute pendant une
longue durée puis échoue, en raison d'informations d'identification ou d'autorisations
insuffisantes (p. 153)
• Erreur de pipeline : L'étape source de My GitHub contient des sous-modules Git, mais AWS
CodePipeline ne les initialise pas (p. 153)
• Erreur de pipeline : Mon pipeline affiche le message d'erreur suivant : « PermissionError: Could not
access the GitHub repository » (p. 153)
• Erreur de pipeline : Un pipeline créé dans une région AWS à l'aide d'un compartiment créé dans
une autre région AWS affiche le message « InternalError » avec le code « JobFailed » (p. 155)
• Besoin d'aide pour résoudre un autre problème ? (p. 155)
Erreur de pipeline : Un pipeline configuré avec
AWS Elastic Beanstalk affiche un message
d'erreur : « Echec du déploiement. Le rôle fourni
ne dispose pas des autorisations suffisantes :
service : AmazonElasticLoadBalancing »
Problème : le rôle de service pour AWS CodePipeline ne dispose pas des autorisations suffisantes
pour AWS Elastic Beanstalk y compris, mais sans s'y limiter, pour certaines opérations dans Elastic
Version 09/07/2015
151
AWS CodePipeline Guide de l'utilisateur
Erreur de pipeline : Une action source affiche un
message indiquant que les autorisations sont
insuffisantes : « Impossible d'accéder au référentiel
AWS
Load Balancing. Le rôle
deCodeCommit
service pour repository-name.
AWS CodePipeline aAssurezété mis à jour le 6 août 2015 pour
le rôle
IAM
du leur
pipeline
desavant cette date doivent modifier la
remédier à ce problème.vous
Les que
clients
ayant
créé
rôle dispose
de service
autorisations
suffisantes
pourafin
accéder
au référentiel. »
déclaration de stratégie
de leur rôle
de service
d'ajouter
les autorisations requises.
Correctifs possibles : la solution la plus simple consiste à copier la déclaration de stratégie mise à
jour pour des rôles de service dans Révision de la stratégie de rôle de service par défaut d'AWS
CodePipeline (p. 161), modifier votre rôle de service et remplacer l'ancienne déclaration de stratégie
par la stratégie actuelle. Cette partie de la déclaration de stratégie s'applique à Elastic Beanstalk :
{
"Action": [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"rds:*",
"sqs:*",
"ecs:*",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
Une fois que vous avez appliqué la nouvelle stratégie, suivez les étapes indiquées dans Nouvelle
exécution manuelle d'un pipeline (p. 120) pour exécuter à nouveau manuellement tous les pipelines qui
utilisent Elastic Beanstalk.
Vous pouvez modifier les autorisations par différents moyens, selon vos besoins en termes de
sécurité.
Erreur de pipeline : Une action source affiche
un message indiquant que les autorisations
sont insuffisantes : « Impossible d'accéder
au référentiel AWS CodeCommit repository-name.
Assurez-vous que le rôle IAM du pipeline dispose
des autorisations suffisantes pour accéder au
référentiel. »
Problème : le rôle de service pour AWS CodePipeline ne dispose pas des autorisations suffisantes
pour AWS CodeCommit et a probablement été créé avant l'ajout de la prise en charge des référentiels
AWS CodeCommit, le 18 avril 2016. Les clients ayant créé leur rôle de service avant cette date doivent
modifier la déclaration de stratégie de leur rôle de service afin d'ajouter les autorisations requises.
Version 09/07/2015
152
AWS CodePipeline Guide de l'utilisateur
Erreur de pipeline : Une action Jenkins de
génération ou de test s'exécute pendant une
longue durée puis échoue, en raison d'informations
d'identification
ou d'autorisations
insuffisantes
Correctifs possibles : ajoutez
les autorisations
requises pour
AWS CodeCommit à votre stratégie de
rôle de service AWS CodePipeline. Pour plus d'informations, consultez Ajout d'autorisations aux autres
services AWS (p. 163).
Erreur de pipeline : Une action Jenkins de
génération ou de test s'exécute pendant
une longue durée puis échoue, en raison
d'informations d'identification ou d'autorisations
insuffisantes
Problème : si le serveur Jenkins est installé sur une instance Amazon EC2, l'instance peut ne pas
avoir été créée avec un rôle d'instance doté des permissions requises pour AWS CodePipeline. Si
vous utilisez un utilisateur IAM sur un serveur Jenkins, une instance sur site, ou une instance Amazon
EC2 qui n'a pas été créé avec le rôle IAM requis, l'utilisateur IAM ne disposera pas des autorisations
requises, ou bien le serveur Jenkins ne pourra pas accéder à ces informations d'identification par le
biais du profil configuré sur le serveur.
Correctifs possibles : assurez-vous que le rôle de l'instance Amazon EC2 ou l'utilisateur IAM est
configuré avec la stratégie gérée AWSCodePipelineCustomActionAccess ou avec les autorisations
équivalentes. Pour plus d'informations, consultez Référence des autorisations d'accès (p. 156).
Si vous utilisez un utilisateur IAM, assurez-vous que le profil AWS configuré sur l'instance utilise
l'utilisateur IAM configuré avec les autorisations appropriées. Vous devrez peut-être fournir les
informations d'identification de l'utilisateur IAM pour l'intégration entre Jenkins et AWS CodePipeline
directement dans l'interface utilisateur Jenkins. Ce n'est pas recommandé. Si vous devez le faire,
assurez-vous que le serveur Jenkins est sécurisé et utilise le protocole HTTPS au lieu de HTTP.
Erreur de pipeline : L'étape source de My GitHub
contient des sous-modules Git, mais AWS
CodePipeline ne les initialise pas
Problème : AWS CodePipeline ne prend pas en charge les sous-modules Git. AWS CodePipeline
s'appuie sur le lien d'archive de l'API de GitHub, qui ne prend pas en charge les sous-modules.
Correctifs possibles : envisagez le clonage du référentiel GitHub directement, dans le cadre d'un script
distinct. Par exemple, vous pouvez inclure une action de clonage dans un script Jenkins.
Erreur de pipeline : Mon pipeline affiche le
message d'erreur suivant : « PermissionError:
Could not access the GitHub repository »
Problème : AWS CodePipeline utilise des jetons OAuth pour s'intégrer à GitHub. Vous avez peut-être
annulé les autorisations du jeton OAuth pour AWS CodePipeline. En outre, le nombre de jetons est
Version 09/07/2015
153
AWS CodePipeline Guide de l'utilisateur
Erreur de pipeline : Mon pipeline affiche le
message d'erreur suivant : « PermissionError:
Could not access the GitHub repository »
limité (consultez la documentation relative à GitHub pour plus de détails). Si AWS CodePipeline atteint
cette limite, les jetons plus anciens cesseront de fonctionner, et les actions des pipelines qui s'appuient
sur ces jetons échoueront.
Correctifs possibles : vérifier si l'autorisation pour AWS CodePipeline a été annulée. Connectezvous à GitHub, accédez à Settings, puis choisissez OAuth applications. Si vous ne voyez pas AWS
CodePipeline dans la liste, ouvrez la console AWS CodePipeline, modifiez le pipeline et choisissez
Connect to GitHub pour restaurer l'autorisation.
Si AWS CodePipeline figure dans la liste des applications autorisées pour GitHub, vous avez peutêtre dépassé le nombre autorisé de jetons. Pour remédier à ce problème, vous pouvez configurer
manuellement un jeton OAuth comme jeton d'accès personnel, puis configurer tous les pipelines de
votre compte AWS pour qu'ils utilisent ce jeton.
Pour configurer un pipeline afin d'utiliser un jeton d'accès personnel à partir de GitHub
1.
Connectez-vous à votre compte GitHub et suivez les instructions contenues dans la
Documentation GitHub concernant la création d'un jeton d'accès personnel. Assurez-vous que le
jeton est configuré de sorte à inclure les portées GitHub suivantes : admin:repo_hook et repo.
Copiez le jeton.
2.
Dans un terminal (Linux, macOS, or Unix) ou une invite de commande (Windows), exécutez la
commande get-pipeline sur le pipeline où vous souhaitez modifier le jeton OAuth, puis copiez
le résultat de la commande dans un fichier JSON. Par exemple, pour un pipeline nommé
MyFirstPipeline, vous devez saisir quelque chose de semblable à ce qui suit :
aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
Le résultat de la commande est envoyé au fichier pipeline.json.
3.
Ouvrez le fichier dans un éditeur de texte brut et modifiez la valeur OAuthTokenField de votre
action GitHub. Remplacez les astérisques (****) par le jeton que vous avez copié à partir de
GitHub. Exemples :
"configuration": {
"Owner": "MyGitHubUserName",
"Repo": "test-repo",
"Branch": "master",
"OAuthToken": "Replace the **** with your
personal access token"
},
4.
Enregistrez le fichier et exécutez la commande update-pipeline avec le paramètre --cli-inputjson pour spécifier le fichier JSON que vous venez de modifier. Par exemple, pour mettre à jour
un pipeline nommé MyFirstPipeline, vous devez saisir quelque chose de semblable à ce qui suit :
Important
N'oubliez pas d'inclure file:// avant le nom du fichier. Il est nécessaire dans cette
commande.
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
5.
Répétez les étapes 2 à 4 pour chaque pipeline contenant une action GitHub.
6.
Lorsque vous avez terminé de mettre à jour vos pipelines, supprimez les fichiers .json utilisés pour
mettre à jour ces pipelines.
Version 09/07/2015
154
AWS CodePipeline Guide de l'utilisateur
Erreur de pipeline : Un pipeline créé dans une
région AWS à l'aide d'un compartiment créé
dans une autre région AWS affiche le message
« InternalError » avec le code « JobFailed »
Erreur de pipeline : Un pipeline créé dans une
région AWS à l'aide d'un compartiment créé
dans une autre région AWS affiche le message
« InternalError » avec le code « JobFailed »
Problème : le téléchargement d'un artéfact stocké dans un compartiment Amazon S3 échoue si le
pipeline et le compartiment sont créés dans des régions AWS différentes.
Correctifs possibles : assurez-vous que le compartiment Amazon S3 dans lequel votre artéfact est
stocké se trouve dans la même région AWS que le pipeline que vous avez créé.
Besoin d'aide pour résoudre un autre problème ?
Essayez les ressources suivantes :
• Contactez AWS Support.
• Poser une question dans le Forum AWS CodePipeline.
• Demande d'une augmentation de limite pour une limite spécifique. Pour plus d'informations,
consultez Restrictions (p. 186).
Note
Les demandes d'augmentation de limite seront traitées dans un délai de deux semaines
maximum.
Version 09/07/2015
155
AWS CodePipeline Guide de l'utilisateur
Référence des autorisations d'accès
AWS CodePipeline
Par défaut, n'importe quel pipeline que vous créez dans AWS CodePipeline est uniquement accessible
sur votre compte AWS. Vous pouvez utiliser IAM pour accorder ou refuser l'accès des autres
utilisateurs IAM, groupes, ou comptes AWS à vos ressources AWS CodePipeline et permettre
certaines actions sur ces ressources. Par exemple, vous pouvez faire cela si vous souhaitez accorder
l'accès à un pipeline à un autre utilisateur pour qu'il voie son état. Vous pouvez également créer des
stratégies de rôles de service pour les exécutants de tâches personnalisés, les ressources entre
comptes et d'autres conditions d'accès.
Dans les instructions Mise en route (p. 25) associez la stratégie gérée AWSCodePipelineFullAccess à
un utilisateur IAM. Cette stratégie inclut une déclaration similaire à celle-ci :
{
"Statement": [
{
"Action": [
"codepipeline:*",
"iam:ListRoles",
"iam:PassRole",
"s3:CreateBucket",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:PutBucketPolicy",
"cloudformation:DescribeStacks",
"cloudFormation:ListChangeSets",
"codecommit:ListBranches",
"codecommit:ListRepositories",
"codedeploy:GetApplication",
"codedeploy:GetDeploymentGroup",
"codedeploy:ListApplications",
"codedeploy:ListDeploymentGroups",
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEnvironments",
"lambda:GetFunctionConfiguration",
"lambda:ListFunctions,
"opsworks:DescribeStacks",
"opsworks:DescribeApps",
Version 09/07/2015
156
AWS CodePipeline Guide de l'utilisateur
"opsworks:DescribeLayers"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
Cette déclaration permet à l'utilisateur IAM d'effectuer toutes les actions disponibles dans AWS
CodePipeline et d'accéder à toutes les ressources disponibles associées à ce compte AWS. En
pratique, vous ne voudrez peut-être pas donner un tel accès à tous les utilisateurs. Par exemple,
si vous souhaitez permettre à un utilisateur IAM de voir un pipeline et son statut, mais que vous
ne souhaitez pas qu'il puisse procéder à des modifications sur le pipeline, vous pouvez appliquer
la stratégie gérée AWSCodePipelineReadOnlyAccess à cet utilisateur. Cette stratégie inclut la
déclaration de stratégie suivante :
{
"Statement": [
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineExecution",
"codepipeline:GetPipelineState",
"codepipeline:ListActionTypes",
"codepipeline:ListPipelines",
"iam:ListRoles",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"cloudformation:DescribeStacks",
"cloudFormation:ListChangeSets",
"codecommit:ListBranches",
"codecommit:ListRepositories",
"codedeploy:GetApplication",
"codedeploy:GetDeploymentGroup",
"codedeploy:ListApplications",
"codedeploy:ListDeploymentGroups",
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEnvironments",
"lambda:GetFunctionConfiguration",
"lambda:ListFunctions",
"opsworks:DescribeStacks",
"opsworks:DescribeApps",
"opsworks:DescribeLayers"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
Si vous souhaitez permettre à un utilisateur d'approuver ou de rejeter une action d'approbation
manuelle, vous pouvez appliquer la stratégie gérée AWSCodePipelineApproverAccess. La stratégie
peut être cumulée avec d'autres stratégies gérées appliquées à un utilisateur. Cette stratégie inclut la
déclaration de stratégie suivante :
Version 09/07/2015
157
AWS CodePipeline Guide de l'utilisateur
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineExecution",
"codepipeline:GetPipelineState",
"codepipeline:ListPipelines",
"codepipeline:PutApprovalResult"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Lorsque vous créez des actions personnalisées dans AWS CodePipeline ou que vous intégrez des
ressources Jenkins pour des actions de génération ou de test, créez un utilisateur IAM et associez
à ce dernier la stratégie gérée AWSCodePipelineCustomActionAccess. Cette stratégie inclut la
déclaration de stratégie suivante :
{
"Statement": [
{
"Action": [
"codepipeline:AcknowledgeJob",
"codepipeline:GetJobDetails",
"codepipeline:PollForJobs",
"codepipeline:PutJobFailureResult",
"codepipeline:PutJobSuccessResult"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
Les informations suivantes indiquent comment modifier l'accès aux ressources AWS CodePipeline
pour des opérations, ressources ou utilisateurs spécifiques (ou tous à la fois). Vous pouvez utiliser
des stratégies gérées ou créer vos stratégies IAM pour contrôler l'accès à AWS CodePipeline et à ses
ressources. Vous pouvez également configurer l'accès entre comptes pour permettre aux utilisateurs
d'autres comptes AWS d'accéder à des pipelines spécifiques ou à des étapes, actions ou transitions
spécifiques au sein d'un pipeline.
Rubriques
• Création d'une stratégie gérée par le client pour AWS CodePipeline (p. 159)
• Création d'une stratégie pour un compartiment Amazon S3, en vue d'une utilisation comme
magasin d'objets pour AWS CodePipeline (p. 160)
• Associer une stratégie à un utilisateur ou un groupe IAM (p. 160)
• Modification d'une stratégie pour un rôle de service IAM (p. 161)
• Association ou modification d'une stratégie pour l'intégration Jenkins avec AWS
CodePipeline (p. 166)
• Configuration de l'accès entre comptes dans un pipeline (p. 166)
Version 09/07/2015
158
AWS CodePipeline Guide de l'utilisateur
Création d'une stratégie gérée par
le client pour AWS CodePipeline
• Utilisation de ressources AWS associées à un autre compte dans un pipeline (p. 168)
• Fonctionnement et syntaxe des ressources (p. 171)
Création d'une stratégie gérée par le client pour
AWS CodePipeline
Vous pouvez autoriser ou refuser l'accès à plusieurs utilisateurs IAM ou comptes AWS en utilisant les
stratégies gérées pour AWS CodePipeline comme modèle de stratégie gérée par le client, puis en les
associant à des utilisateurs IAM, des comptes AWS, des rôles IAM, ou une combinaison de tous ces
éléments. Pour créer une stratégie gérée par le client permettant l'accès à des actions et ressources
dans AWS CodePipeline, procédez comme suit :
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Dans le volet de navigation, choisissez Policies, puis Create Policy.
3.
Dans la liste des actions, choisissez Copy an AWS Managed Policy, puis Select.
4.
Sur la page Copy an AWS Managed Policy, choisissez la stratégie AWS CodePipeline que vous
souhaitez utiliser comme modèle pour votre stratégie gérée par le client, puis cliquez sur Select.
5.
Sur la page Review Policy, nommez cette stratégie dans la case Policy Name. Saisissez un nom
que vous pourrez mémoriser facilement. Vous pouvez, si vous le souhaitez, entrer une description
de cette stratégie dans la case Description.
6.
Dans la case Policy Document, vous pouvez modifier la stratégie en fonction des besoins de votre
entreprise (par exemple, pour appliquer cette stratégie à un seul pipeline de votre compte et non
pas à tous), puis sélectionner Create Policy.
Par exemple, si vous souhaitez accorder à vos utilisateurs un accès complet au pipeline nommé
MyFirstPipeline dans la région USA Est (Virginie du Nord) (us-east-1) :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:*"
],
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline"
}
]
}
Note
Cette stratégie fournit des autorisations pour AWS CodePipeline uniquement. Elle
n'accorde pas des autorisations à d'autres services AWS qui peuvent être configurés
comme actions dans le pipeline, comme AWS CodeDeploy ou AWS Lambda. L'utilisateur
ne pourra pas modifier ce pipeline, sauf s'il a accès à toutes les ressources configurées
dans celui-ci.
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
Version 09/07/2015
159
AWS CodePipeline Guide de l'utilisateur
Création d'une stratégie pour un compartiment
Amazon S3, en vue d'une utilisation comme
magasin d'objets pour AWS CodePipeline
Création d'une stratégie pour un compartiment
Amazon S3, en vue d'une utilisation comme
magasin d'objets pour AWS CodePipeline
Vous pouvez utiliser tout compartiment Amazon S3 versionné comme magasin d'objets pour AWS
CodePipeline. Si vous utilisez l'assistant Create Pipeline pour créer votre premier pipeline, ce
compartiment Amazon S3 est créé automatiquement pour s'assurer que tous les artéfacts chargés
dans le magasin d'objets sont chiffrés et que les connexions au compartiment sont sécurisées. Si vous
créez votre propre compartiment Amazon S3, pensez à ajouter la stratégie suivante ou ses éléments
au compartiment, à titre de bonne pratique. Dans cette stratégie, l'ARN du compartiment Amazon S3
est codepipeline-us-east-1-1234567890. Remplacez cet ARN par l'ARN de votre compartiment
Amazon S3 :
{
"Version": "2012-10-17",
"Id": "SSEAndSSLPolicy",
"Statement": [
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyInsecureConnections",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"Bool": {
"aws:SecureTransport": false
}
}
}
]
}
Associer une stratégie à un utilisateur ou un
groupe IAM
Pour associer une stratégie à un utilisateur IAM afin de permettre à ce dernier d'accéder à certaines
actions et ressources dans AWS CodePipeline, procédez comme suit :
Version 09/07/2015
160
AWS CodePipeline Guide de l'utilisateur
Modification d'une stratégie pour un rôle de service IAM
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
3.
Dans le volet de navigation, choisissez Users ou Groups, selon ce qui vous convient.
Recherchez et choisissez le groupe ou l'utilisateur que vous souhaitez modifier. La page
récapitulative s'ouvre.
Cliquez sur l'onglet Permissions et effectuez l'une des opérations suivantes :
4.
• Si vous souhaitez appliquer une stratégie gérée, choisissez Add permissions, puis Attach
existing policies directly.
• Si vous souhaitez créer votre propre stratégie, choisissez Add inline policy et choisissez l'option
permettant de créer une stratégie en ligne personnalisée.
Pour plus d'informations sur les stratégies gérées et en ligne, consultez Stratégies gérées et
stratégies en ligne.
Modification d'une stratégie pour un rôle de
service IAM
AWS CodePipeline utilise un rôle de service lors du traitement des révisions à travers les étapes
et les actions d'un pipeline. Ce rôle est configuré avec une ou plusieurs stratégies, lesquelles
contrôlent l'accès aux ressources AWS utilisées par le pipeline. Vous pouvez associer des stratégies
supplémentaires à ce rôle, modifier la stratégie associée à ce dernier ou configurer des stratégies pour
d'autres rôles de service dans AWS. Vous pouvez également associer une stratégie à un rôle lors de la
configuration de l'accès entre comptes à votre pipeline.
Important
Le fait de modifier une déclaration de stratégie ou d'associer une autre stratégie au rôle peut
nuire au fonctionnement de vos pipelines. Assurez-vous de bien tenir compte de tout ce
qu'implique une modification du rôle de service pour AWS CodePipeline. Assurez-vous de
tester vos pipelines après avoir modifié le rôle de service.
Rubriques
• Révision de la stratégie de rôle de service par défaut d'AWS CodePipeline (p. 161)
• Ajout d'autorisations aux autres services AWS (p. 163)
• Suppression des autorisations des services AWS non utilisés (p. 165)
Révision de la stratégie de rôle de service par défaut
d'AWS CodePipeline
Par défaut, le rôle de service IAM pour AWS CodePipeline, AWS-CodePipeline-Service, inclut la
déclaration de stratégie suivante :
{
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketVersioning"
Version 09/07/2015
161
AWS CodePipeline Guide de l'utilisateur
Révision de la stratégie de rôle de
service par défaut d'AWS CodePipeline
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::codepipeline*",
"arn:aws:s3:::elasticbeanstalk*"
],
"Effect": "Allow"
},
{
"Action": [
"codecommit:CancelUploadArchive",
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:GetUploadArchiveStatus",
"codecommit:UploadArchive"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetApplicationRevision",
"codedeploy:GetDeployment",
"codedeploy:GetDeploymentConfig",
"codedeploy:RegisterApplicationRevision"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"rds:*",
"sqs:*",
"ecs:*",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"lambda:InvokeFunction",
"lambda:ListFunctions"
],
Version 09/07/2015
162
AWS CodePipeline Guide de l'utilisateur
Ajout d'autorisations aux autres services AWS
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"opsworks:CreateDeployment",
"opsworks:DescribeApps",
"opsworks:DescribeCommands",
"opsworks:DescribeDeployments",
"opsworks:DescribeInstances",
"opsworks:DescribeStacks",
"opsworks:UpdateApp",
"opsworks:UpdateStack"
],
"Resource": "*",
"Effect": "Allow"
}
],
"Version": "2012-10-17"
}
Ajout d'autorisations aux autres services AWS
Vous devez mettre à jour votre déclaration de stratégie de rôle de service en lui attribuant des
autorisations pour un service AWS qui ne sont pas déjà incluses dans la déclaration de stratégie de
rôle de service par défaut avant de pouvoir l'utiliser dans vos pipelines.
Cela est particulièrement important si le rôle de service que vous utilisez pour vos pipelines a été créé
avant l'ajout dans AWS CodePipeline de la prise en charge d'un service AWS.
Le tableau suivant indique quand la prise en charge des autres services AWS a été ajoutée.
Service AWS
Date de la prise en charge AWS CodePipeline
AWS CodeCommit
18 avril 2016
AWS OpsWorks
2 juin 2016
AWS CloudFormation
3 novembre 2016
AWS CodeBuild
1 décembre 2016
Pour ajouter des autorisations à un autre service pris en charge, procédez comme suit :
1. Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2. Dans le volet de navigation de la console IAM, choisissez Rôles, puis choisissez votre rôle AWSCodePipeline-Service dans la liste des rôles.
3. Dans l'onglet Permissions dans Inline Policies, sur la rangée de votre stratégie de rôle de service,
choisissez Edit Policy.
Tip
Votre rôle de service possède un nom dans un format similaire à oneClick_AWSCodePipeline-1111222233334.
4. Ajoutez les autorisations nécessaires dans la case Policy Document. Par exemple, pour la prise en
charge AWS CodeCommit, ajoutez les éléments suivants à votre déclaration de stratégie :
Version 09/07/2015
163
AWS CodePipeline Guide de l'utilisateur
Ajout d'autorisations aux autres services AWS
{
"Action": [
"codecommit:GetBranch",
"codecommit:GetCommit",
"codecommit:UploadArchive",
"codecommit:GetUploadArchiveStatus",
"codecommit:CancelUploadArchive"
],
"Resource": "*",
"Effect": "Allow"
},
Concernant la prise en charge AWS OpsWorks, ajoutez les éléments suivants à votre déclaration de
stratégie :
{
"Action": [
"opsworks:CreateDeployment",
"opsworks:DescribeApps",
"opsworks:DescribeCommands",
"opsworks:DescribeDeployments",
"opsworks:DescribeInstances",
"opsworks:DescribeStacks",
"opsworks:UpdateApp",
"opsworks:UpdateStack"
],
"Resource": "*",
"Effect": "Allow"
},
Concernant la prise en charge AWS CloudFormation, ajoutez les éléments suivants à votre
déclaration de stratégie :
{
"Action": [
"cloudformation:CreateStack",
"cloudformation:DeleteStack",
"cloudformation:DescribeStacks",
"cloudformation:UpdateStack",
"cloudformation:CreateChangeSet",
"cloudformation:DeleteChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:SetStackPolicy",
"cloudformation:ValidateTemplate",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
Concernant la prise en charge AWS CodeBuild, ajoutez les éléments suivants à votre déclaration de
stratégie :
{
Version 09/07/2015
164
AWS CodePipeline Guide de l'utilisateur
Suppression des autorisations
des services AWS non utilisés
"Action": [
"codebuild:BatchGetBuilds",
"codebuild:StartBuild"
],
"Resource": "*",
"Effect": "Allow"
},
5. Choisissez Validate Policy afin de vérifier que la stratégie ne contient aucune erreur. Si la stratégie
ne contient pas d'erreur, choisissez Apply Policy.
Suppression des autorisations des services AWS
non utilisés
Vous pouvez modifier la déclaration du rôle de service pour supprimer l'accès aux ressources que
vous n'utilisez pas. Par exemple, si aucune de vos pipelines n'inclut Elastic Beanstalk, vous pouvez
modifier la déclaration de stratégie pour supprimer la section qui accorde des ressources Elastic
Beanstalk. Par exemple, vous pouvez supprimer la section suivante de la déclaration de stratégie :
{
"Action": [
"elasticbeanstalk:*",
"ec2:*",
"elasticloadbalancing:*",
"autoscaling:*",
"cloudwatch:*",
"s3:*",
"sns:*",
"cloudformation:*",
"rds:*",
"sqs:*",
"ecs:*",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
De même, si aucune de vos pipelines n'inclut AWS CodeDeploy, vous pouvez modifier la déclaration
de stratégie pour supprimer la section qui accorde des ressources AWS CodeDeploy :
{
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetApplicationRevision",
"codedeploy:GetDeployment",
"codedeploy:GetDeploymentConfig",
"codedeploy:RegisterApplicationRevision"
],
"Resource": "*",
"Effect": "Allow"
},
Pour plus d'informations sur les rôles IAM, consultez Rôles IAM.
Version 09/07/2015
165
AWS CodePipeline Guide de l'utilisateur
Association ou modification d'une stratégie pour
l'intégration Jenkins avec AWS CodePipeline
Association ou modification d'une stratégie pour
l'intégration Jenkins avec AWS CodePipeline
Si vous configurez un pipeline pour utiliser Jenkins en vue d'une génération ou d'un test, créez un
autre utilisateur IAM pour cette intégration et associez une stratégie IAM dotée des autorisations
minimales requises pour l'intégration entre Jenkins et AWS CodePipeline. Cette stratégie est similaire
à la stratégie gérée AWSCodePipelineCustomActionAccess. L'exemple suivant montre une stratégie à
associer à un utilisateur IAM, qui sera utilisé pour l'intégration de Jenkins :
{
"Statement": [
{
"Action": [
"codepipeline:AcknowledgeJob",
"codepipeline:GetJobDetails",
"codepipeline:PollForJobs",
"codepipeline:PutJobFailureResult",
"codepipeline:PutJobSuccessResult"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "2012-10-17"
}
Configuration de l'accès entre comptes dans un
pipeline
Vous pouvez configurer l'accès aux pipelines pour les utilisateurs et groupes d'un autre compte
AWS. Pour ce faire, il est recommandé de créer un rôle dans le compte où le pipeline a été créé qui
permette aux utilisateurs de l'autre compte AWS d'endosser ce rôle et d'accéder au pipeline. Pour plus
d'informations, consultez Procédure pas à pas : Accès entre comptes à l'aide des rôles.
L'exemple suivant montre une stratégie du compte 80398EXAMPLE, qui permet aux utilisateurs
de voir, mais non pas de modifier, le pipeline nommé MyFirstPipeline dans la console AWS
CodePipeline. Cette stratégie s'appuie sur la stratégie gérée AWSCodePipelineReadOnlyAccess,
mais elle ne peut pas utiliser la stratégie gérée directement car elle est spécifique au pipeline
MyFirstPipeline. Si vous ne souhaitez pas limiter la stratégie à un pipeline spécifique, il est
vivement conseillé d'utiliser l'une des stratégies gérées créées et stockées dans AWS CodePipeline.
Pour plus d'informations, consultez Utilisation des stratégies gérées. Vous devez associer
cette stratégie à un rôle IAM que vous aurez créé pour l'accès, par exemple un rôle nommé
CrossAccountPipelineViewers :
{
"Statement": [
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineState",
"codepipeline:ListActionTypes",
Version 09/07/2015
166
AWS CodePipeline Guide de l'utilisateur
Configuration de l'accès entre comptes dans un pipeline
"codepipeline:ListPipelines",
"iam:ListRoles",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"codedeploy:GetApplication",
"codedeploy:GetDeploymentGroup",
"codedeploy:ListApplications",
"codedeploy:ListDeploymentGroups",
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEnvironments",
"lambda:GetFunctionConfiguration",
"lambda:ListFunctions"
],
"Effect": "Allow",
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline"
}
],
"Version": "2012-10-17"
}
Une fois cette stratégie créée, créez le rôle IAM dans le compte 80398EXAMPLE et associez la
stratégie à ce rôle. Dans les relations d'approbation du rôle, vous devez ajouter le compte AWS qui
assumera ce rôle. L'exemple suivant montre une stratégie qui permet aux utilisateurs du compte AWS
111111111111 d'assumer des rôles définis dans le compte 80398EXAMPLE :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole"
}
]
}
L'exemple suivant montre une stratégie créée dans le compte AWS 111111111111 qui permet
aux utilisateurs d'assumer le rôle nommé CrossAccountPipelineViewers dans le compte
80398EXAMPLE :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource":
"arn:aws:iam::80398EXAMPLE:role/CrossAccountPipelineViewers"
}
]
}
Version 09/07/2015
167
AWS CodePipeline Guide de l'utilisateur
Utilisation de ressources AWS associées
à un autre compte dans un pipeline
Utilisation de ressources AWS associées à un
autre compte dans un pipeline
Vous pouvez configurer des stratégies qui permettent à un utilisateur de créer un pipeline utilisant des
ressources d'un autre compte AWS. Pour ce faire, il est nécessaire de configurer des stratégies et des
rôles à la fois dans le compte qui crée le pipeline (AccountA) et dans celui ayant créé les ressources
à utiliser dans ce pipeline (AccountB). Vous devez également créer une clé gérée par le client dans
AWS Key Management Service, qui sera utilisée pour l'accès entre comptes. Pour plus d'informations
et obtenir des exemples détaillés, consultez Création d'un pipeline qui utilise des ressources d'un autre
compte (p. 121) et Chiffrement (p. 184).
L'exemple suivant montre une stratégie configurée par AccountA pour un compartiment Amazon S3
servant à stocker les artéfacts du pipeline qui accorde l'accès à AccountB (où l'ARN de AccountB.
Dans l'exemple suivant, l'ARN de AccountB est 012ID_ACCOUNT_B. L'ARN du compartiment Amazon
S3 est codepipeline-us-east-1-1234567890. Remplacez ces ARN par l'ARN du compte auquel
vous souhaitez autoriser l'accès et du compartiment Amazon S3 :
{
"Version": "2012-10-17",
"Id": "SSEAndSSLPolicy",
"Statement": [
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyInsecureConnections",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*",
"Condition": {
"Bool": {
"aws:SecureTransport": false
}
}
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"
},
"Action": [
"s3:Get*",
"s3:Put*"
],
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
Version 09/07/2015
168
AWS CodePipeline Guide de l'utilisateur
Utilisation de ressources AWS associées
à un autre compte dans un pipeline
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012ID_ACCOUNT_B:root"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::codepipeline-us-east-1-1234567890"
}
]
}
L'exemple suivant montre une stratégie configurée par AccountA qui permet à AccountB d'assumer
un rôle. Cette stratégie doit être appliquée au rôle de service pour AWS CodePipeline (AWSCodePipeline-Service). Pour plus d'informations sur la manière d'appliquer des stratégies aux
rôles dans IAM consultez Modification d'un rôle. Dans l'exemple suivant, 012ID_ACCOUNT_B est l'ARN
de AccountB :
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::012ID_ACCOUNT_B:role/*"
]
}
}
L'exemple suivant montre une stratégie configurée par AccountB et appliquée au rôle de
l'instance Amazon EC2 pour AWS CodeDeploy. Cette stratégie accorde l'accès au compartiment
Amazon S3 utilisé par AccountA pour stocker des artéfacts du pipeline (codepipeline-useast-1-1234567890) :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890"
]
}
]
Version 09/07/2015
169
AWS CodePipeline Guide de l'utilisateur
Utilisation de ressources AWS associées
à un autre compte dans un pipeline
}
L'exemple suivant montre une stratégie pour AWS KMS où arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE est l'ARN de la clé
gérée par le client créée dans AccountA et configurée pour autoriser AccountB à l'utiliser :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey*",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:useast-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE"
]
}
]
}
L'exemple suivant montre une stratégie en ligne pour un rôle IAM (CrossAccount_Role) créée par
AccountB, qui autorise l'accès aux actions AWS CodeDeploy requises par le pipeline dans AccountA.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetDeployment",
"codedeploy:GetDeploymentConfig",
"codedeploy:GetApplicationRevision",
"codedeploy:RegisterApplicationRevision"
],
"Resource": "*"
}
]
}
L'exemple suivant montre une stratégie en ligne pour un rôle IAM (CrossAccount_Role) créée par
AccountB et qui autorise l'accès au compartiment Amazon S3 afin de pouvoir télécharger des artéfacts
d'entrée et charger des artéfacts de sortie :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
Version 09/07/2015
170
AWS CodePipeline Guide de l'utilisateur
Fonctionnement et syntaxe des ressources
"s3:GetObject*",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::codepipeline-us-east-1-1234567890/*"
]
}
]
}
Pour plus d'informations sur la modification d'un pipeline en vue d'un accès entre comptes aux
ressources une fois que les stratégies, rôles et clés AWS Key Management Service gérées par le
client ont été créés, consultez Etape 2 : Modifier le pipeline (p. 129).
Fonctionnement et syntaxe des ressources
Les sections suivantes décrivent le format nécessaire pour spécifier des opérations et des ressources
dans AWS CodePipeline.
Les opérations suivent le format général suivant :
codepipeline:operation
Où operation est une opération AWS CodePipeline disponible, telle que GetPipeline ou
DisableStageTransition. Pour autoriser une opération, utilisez la clause "Effect" : "Allow".
Pour refuser explicitement une opération, utilisez la clause "Effect" : "Deny". Par défaut, toutes
les opérations sont refusées, sauf indication contraire dans toute autre stratégie attachée.
Les ressources suivent ce format général :
arn:aws:codepipeline:region:account:resource-specifier
Où region est une région cible (comme us-east-1), account est l'identifiant du compte AWS, et
resource-specifier est le nom du pipeline. Des caractères génériques (*) peuvent être utilisés
pour spécifier un nom de pipeline partiel.
Par exemple, la commande suivante spécifie le pipeline AWS CodePipeline nommé
MyFirstPipeline, enregistré pour le compte AWS 80398EXAMPLE dans la région us-east-1 :
arn:aws:codepipeline:us-east-1:80398EXAMPLE:MyFirstPipeline
L'exemple suivant, quant à lui, spécifie tout pipeline AWS CodePipeline dont le nom commence par My
enregistré pour le compte AWS 80398EXAMPLE dans la région us-east-1 :
arn:aws:codepipeline:us-east-1:80398EXAMPLE:My*
Les spécificateurs de ressources peuvent être définis de sorte à s'appliquer à une étape spécifique
d'un pipeline, voire à une action spécifique au sein d'une étape :
arn:aws:codepipeline:region:account:PipelineName/StageName/ActionName
Version 09/07/2015
171
AWS CodePipeline Guide de l'utilisateur
Pipelines
L'exemple suivant d'une spécification de ressource se limite à l'action personnalisée nommée
Example.com_Test_Action dans l'étape Test du pipeline MyFirstPipeline enregistré dans le
compte AWS 80398EXAMPLE de la région us-east-1 :
arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline/Test/Example.com_Test_Action
Rubriques
• Pipelines (p. 172)
• Etapes (p. 172)
• Actions (p. 173)
• Types d'action (p. 174)
• Tâches (p. 174)
Pipelines
Les opérations autorisées sont notamment :
• CreatePipeline, pour créer un pipeline avec un nom unique.
• DeletePipeline, pour supprimer un pipeline spécifié.
• GetPipeline, pour récupérer des informations sur la structure d'un pipeline.
• GetPipelineState, pour récupérer des informations sur l'état actuel des étapes et des actions
d'un pipeline.
• ListPipelines, pour obtenir un résumé de tous les pipelines associés à votre compte AWS.
• StartPipelineExecution, pour exécuter la plus récente révision à travers le pipeline.
• UpdatePipeline, pour mettre à jour un pipeline avec les modifications apportées à la structure du
pipeline.
L'exemple suivant permet à l'utilisateur spécifié de connaître l'état du pipeline nommé
MyFirstPipeline :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:GetPipelineState"
],
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline"
}
]
}
Etapes
Les opérations autorisées sont notamment :
• DisableStageTransition, pour empêcher les révisions de passer à l'étape suivante d'un
pipeline.
Version 09/07/2015
172
AWS CodePipeline Guide de l'utilisateur
Actions
• EnableStageTransition, pour permettre aux révisions de passer à l'étape suivante d'un pipeline.
• RetryStageExecution, pour retenter une action ou un ensemble d'actions parallèles dans une
étape qui n'a pas abouti.
L'exemple suivant permet à l'utilisateur spécifié d'activer et de désactiver les transitions entre toutes les
étapes du pipeline nommé MyFirstPipeline :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:DisableStageTransition",
"codepipeline:EnableStageTransition"
],
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline/*"
}
]
}
Pour permettre à l'utilisateur d'activer et de désactiver les transitions pour une seule étape d'un
pipeline, vous devez spécifier l'étape. Par exemple, pour permettre à l'utilisateur d'activer et de
désactiver les transitions pour une étape nommée Beta d'un pipeline nommé MyFirstPipeline :
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline/Beta"
Actions
Note
Dans AWS CodePipeline, Actions, reportez-vous spécifiquement aux actions configurées
dans une étape spécifique d'un pipeline. Il existe actuellement six types d'actions pouvant
être ajoutées à un pipeline AWS CodePipeline – source, génération, test, appel, approbation
et déploiement. Les actions peuvent être détenues, ou fournies, par AWS CodePipeline
(AWS), par des partenaires intégrés à AWS CodePipeline (tiers), et par des clients ou des
organisations individuels, en fonction des actions qu'ils créent (personnalisé).
Opérations autorisées :
• PutActionRevision, pour informer AWS CodePipeline à propos des nouvelles révisions
apportées à une source, afin que les modifications puissent être traitées dans un pipeline.
• PutApprovalResult, pour approuver ou rejeter une action d'approbation manuelle.
L'exemple suivant permet à l'utilisateur spécifié d'approuver ou de rejeter des actions d'approbation
manuelles lors d'une étape nommée Beta dans un pipeline nommé MyFirstPipeline :
{
"Version": "2012-10-17",
"Statement": [
{
Version 09/07/2015
173
AWS CodePipeline Guide de l'utilisateur
Types d'action
"Effect": "Allow",
"Action": [
"codepipeline:PutApprovalResult"
],
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:MyFirstPipeline/Beta/*"
}
]
}
Types d'action
Les opérations autorisées sont notamment :
• CreateCustomActionType, pour créer une action personnalisée que vous pouvez utiliser dans les
pipelines associés à votre compte AWS.
• DeleteCustomActionType, pour supprimer une action personnalisée.
L'exemple suivant permet à l'utilisateur spécifié de créer des actions personnalisées dans la région
us-east-1 :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:CreateCustomActionType"
],
"Resource": "arn:aws:codepipeline:useast-1:80398EXAMPLE:actiontype:*"
}
]
}
Tâches
Opération autorisée :
• PollForJobs, pour déterminer s'il existe des tâches à effectuer pour l'action personnalisée.
Note
L'exécutant de tâches pour une action personnalisée peut être configuré sous un autre compte
AWS ou nécessiter un rôle IAM spécifique afin de fonctionner.
L'exemple suivant permet au compte spécifié d'interroger les tâches de l'action personnalisée nommée
TestProvider, ce qui est une action de type Test dans sa première version, sur tous les pipelines :
{
"Version": "2012-10-17",
"Statement": [
{
Version 09/07/2015
174
AWS CodePipeline Guide de l'utilisateur
Tâches
"Effect": "Allow",
"Action": [
"codepipeline:PollForJobs"
],
"Resource": [
"arn:aws:codepipeline:useast-1:80398EXAMPLE:actiontype:Custom/Test/TestProvider/1"
]
}
]
}
Pour plus d'informations sur les types d'action et leurs structures, consultez Exigences de structure des
actions dans AWS CodePipeline (p. 178).
Version 09/07/2015
175
AWS CodePipeline Guide de l'utilisateur
Référence de la ligne de commande
AWS CodePipeline
Utilisez cette référence lorsque vous travaillez avec les commandes AWS CodePipeline et comme
complément d'informations au Guide de l'utilisateur de l'AWS CLI et à la Référence de l'AWS CLI.
Avant d'utiliser l'AWS CLI assurez-vous de réunir les prérequis énoncés dans Configuration (p. 22).
Pour afficher une liste de toutes les commandes AWS CodePipeline disponibles, exécutez la
commande suivante :
aws codepipeline help
Pour afficher les informations sur une commande AWS CodePipeline spécifique, exécutez la
commande suivante, où command-name est le nom de l'une des commandes répertoriées ci-dessous
(par exemple, create-pipeline) :
aws codepipeline command-name help
Pour commencer à apprendre à utiliser les commandes de l'extension AWS CodePipeline de l'AWS
CLI consultez une ou plusieurs des sections suivantes :
•
•
•
•
Création d'une action personnalisée (interface de ligne de commande) (p. 109)
Création d'un pipeline (Interface de ligne de commande) (p. 66)
Suppression d'un pipeline (interface de ligne de commande) (p. 96)
Désactivation ou activation des transitions (interface de ligne de commande) (p. 95)
•
•
•
•
Affichage d'un pipeline (interface de ligne de commande) (p. 103)
Nouvelle tentative des actions échouées (interface de ligne de commande) (p. 91)
Lancement manuel d'un pipeline (interface de ligne de commande) (p. 121)
Modification d'un pipeline (AWS CLI) (p. 72)
Vous pouvez également voir des exemples d'utilisation de la plupart de ces commandes dans Mise en
route (p. 25).
Version 09/07/2015
176
AWS CodePipeline Guide de l'utilisateur
Exigences en termes de structure des pipelines
et des étapes dans AWS CodePipeline
Référence sur la structure du
pipeline AWS CodePipeline
Par défaut, tous les pipeline créés avec succès dans AWS CodePipeline ont une structure valide.
Toutefois, si vous créez ou modifiez manuellement un fichier JSON pour créer ou mettre à jour un
pipeline de l'AWS CLI, vous pouvez générer par inadvertance une structure non valide. La référence
suivante vous aidera à mieux comprendre les exigences relatives à la structure de votre pipeline et
à remédier à d'éventuels problèmes. Reportez-vous également aux contraintes documentées dans
Restrictions (p. 186), qui s'appliquent à tous les pipelines.
Rubriques
• Exigences en termes de structure des pipelines et des étapes dans AWS CodePipeline (p. 177)
• Exigences de structure des actions dans AWS CodePipeline (p. 178)
Exigences en termes de structure des pipelines et
des étapes dans AWS CodePipeline
Un pipeline à deux étapes comporte la structure de base suivante :
{
"roleArn": "An IAM ARN for a service role, such as
arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service",
"stages": [
{
"name": "SourceStageName",
"actions": [
... See Exigences de structure des actions dans AWS
CodePipeline (p. 178) ...
]
Version 09/07/2015
177
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
},
{
"name": "NextStageName",
"actions": [
... See Exigences de structure des actions dans AWS
CodePipeline (p. 178) ...
]
}
],
"artifactStore": {
"type": "S3",
"location": "The name of the Amazon S3 bucket automatically
generated for you the first time you create a pipeline
using the console, such as codepipeline-us-east-1-1234567890, or
any Amazon S3 bucket you provision for this purpose"
},
"name": "YourPipelineName",
"version": 1
}
}
La structure du pipeline impose les critères suivants :
• Un pipeline doit contenir au moins deux étapes.
• La première étape d'un pipeline doit contenir au moins une action source et ne peut contenir que des
actions de ce type.
• Seule la première étape d'un pipeline peut contenir des actions source.
• Au moins une étape dans chaque pipeline doit comporter une action autre qu'une action source.
• Tous les noms des étapes d'un pipeline doivent être uniques.
• Les noms des étapes ne peuvent pas être modifiés dans une console AWS CodePipeline. Si vous
modifiez un nom d'étape à l'aide de l'AWS CLI et que l'étape contient une action dotée d'un ou
plusieurs paramètres secrets (par exemple, un jeton OAuth), la valeur de ces paramètres secrets
ne sera pas conservée. Vous devez entrer manuellement les valeurs des paramètres (qui sont
masquées par quatre astérisques dans le JSON renvoyé par l'AWS CLI) et les inclure dans la
structure JSON.
Le numéro de version d'un pipeline est automatiquement généré et mis à jour chaque fois que vous
mettez à jour le pipeline.
Exigences de structure des actions dans AWS
CodePipeline
Une action comporte la structure générale suivante :
[
{
"inputArtifacts": [
An input artifact structure, if supported for the
action category
],
"name": "ActionName",
"actionTypeId": {
Version 09/07/2015
178
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
"category": "An action category",
"owner": "AWS",
"version": "1"
"provider": "A provider type for the action
category",
},
"outputArtifacts": [
An output artifact structure, if supported for the
action category
],
"configuration": {
Configuration details appropriate to the provider
type
},
"runOrder": A positive integer that indicates the run
order within the stage,
}
]
La structure de l'action impose les critères suivants :
• Tous les noms des actions d'une étape doivent être uniques.
• L'artéfact d'entrée d'une action doit correspondre exactement à l'artéfact de sortie annoncé dans une
action précédente. Par exemple, si une action précédente comprend la déclaration suivante :
"outputArtifacts": [
}
"MyApp"
}
],
et qu'il n'y a pas d'autres artéfacts de sortie, alors l'artéfact d'entrée d'une action suivante doit être :
"inputArtifacts": [
{
"MyApp"
}
],
Cela s'applique à toutes les actions, qu'elles se trouvent dans la même étape ou dans les étapes
suivantes, mais l'artéfact d'entrée ne doit pas nécessairement être l'action suivant immédiatement
celle ayant fourni l'artéfact de sortie. Les actions en parallèle peuvent déclarer différents lots
d'artéfacts de sortie, qui sont ensuite utilisés par différentes opérations subséquentes.
L'illustration suivante fournit un exemple d'artéfacts d'entrée et de sortie dans les actions d'un
pipeline :
Version 09/07/2015
179
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
• Les noms des artéfacts de sortie doivent être uniques au sein d'un pipeline. Par exemple, un pipeline
peut inclure une action dotée d'un artéfact de sortie nommé "MyApp" et une autre action dotée d'un
artéfact de sortie nommé "MyBuiltApp". Cependant, un pipeline ne peut pas contenir deux actions
contenant toutes deux un artéfact de sortie nommé "MyApp".
• Si une action contient un paramètre dont la valeur est secrète, comme le jeton OAuth pour une
action source GitHub, la valeur de ce paramètre est masquée dans le JSON par une série de quatre
astérisques (****). La valeur réelle est stockée, et tant que vous ne la modifiez pas ni ne modifiez le
nom de cette action ou de l'étape où cette action est exécutée, vous n'aurez pas besoin de fournir
cette valeur lorsque vous modifierez le JSON à l'aide de l'AWS CLI ou de l'API d'AWS CodePipeline.
Toutefois, si vous modifiez le nom de l'action, ou le nom de l'étape dans laquelle cette action est
exécutée, la valeur de tout paramètre secret sera perdue. Vous devrez saisir manuellement les
valeurs de tout paramètre secret dans le JSON, sans quoi l'action échouera lors de la prochaine
exécution du pipeline.
• Pour tous les types d'action actuellement pris en charge, la seule chaîne de version valide est « 1 ».
• Pour tous les types d'action actuellement pris en charge, la seule chaîne propriétaire valide est
« AWS », « ThirdParty » ou « Custom ». Pour plus d'informations, consultez la Référence de l'API
AWS CodePipeline.
• La valeur par défaut runOrder pour une action est 1. La valeur doit être un nombre entier positif
(nombre naturel). Vous ne pouvez pas utiliser des fractions, des nombres décimaux, négatifs ou
Version 09/07/2015
180
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
zéro. Pour spécifier une séquence d'actions en série, utilisez le plus petit nombre pour la première
action et les plus grands nombres pour chacune des autres actions de la séquence. Pour spécifier
des actions parallèles, utilisez le même nombre entier pour chaque action que vous souhaitez
exécuter en parallèle.
Par exemple, si vous souhaitez que trois actions s'exécutent en séquence dans une étape, vous
devez attribuer à la première action runOrder la valeur 1, à la seconde action runOrder la
valeur 2 et à la troisième runOrder la valeur 3. Toutefois, si vous souhaitez que les deuxième et
troisième actions s'exécutent en parallèle, vous devez attribuer à la première action la runOrder
valeur 1 et aux deuxième et troisième actions runOrder la valeur 2.
Note
Les actions en série n'ont pas besoin d'être numérotées dans un ordre strict. Par exemple,
si vous avez trois actions dans une séquence et que vous décidez de supprimer la seconde
action, vous n'avez pas besoin de réordonner la runOrder valeur de la troisième action.
En effet, la runOrder valeur de cette action (3) est supérieure à la runOrder valeur de la
première action (1), elle s'exécutera en série après la première action de l'étape.
• Selon le type d'action, vous pouvez obtenir le nombre d'artéfacts d'entrée et de sortie suivant :
Contraintes relatives au type d'action pour les artéfacts
Propriétaire
Type d'action
Fournisseur
Nombre valide
d'artéfacts
d'entrée
Nombre valide
d'artéfacts de
sortie
AWS
Source
Amazon S3
0 USD
1
AWS
Source
AWS
CodeCommit
0 USD
1
Tiers
Source
GitHub
0 USD
1
AWS
Création
CodeBuild
1
1
AWS
Approbation
Manuelle
0 USD
0 USD
AWS
Déploiement
AWS
CloudFormation
1-10
0-1
AWS
Déploiement
AWS
CodeDeploy
1
0 USD
AWS
Déploiement
AWS Elastic
Beanstalk
1
0 USD
AWS
Déploiement
AWS OpsWorks
1
0 USD
AWS
Invoquer
AWS Lambda
0à5
0à5
Personnalisé
Création
Jenkins
0à5
0à5
Personnalisé
Test
Jenkins
0à5
0à5
Personnalisé
Toutes les
catégories prises
en charge
Comme indiqué
dans l'action
personnalisée
0à5
0à5
Version 09/07/2015
181
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
• Les catégories d'action valide incluent des valeurs similaires à ce qui suit :
• Source
• Création
• Approbation
• Déploiement
• Test
• Invoquer
Pour une liste complète des types d'action valide, consultez la Référence de l'API AWS
CodePipeline.
• Les types de fournisseur valides pour une catégorie d'action dépendent de la catégorie. Par
exemple, pour un type d'action source, un type de fournisseur valide est :
S3
Pour une liste complète des types de fournisseur valides, consultez la Référence de l'API AWS
CodePipeline.
• Chaque action doit être dotée d'une configuration d'action valide, laquelle dépend du type de
fournisseur pour cette action. Le tableau suivant répertorie les éléments de configuration d'action
requis pour chaque type de fournisseur valide :
Propriétés des configurations d'actions pour les types de fournisseur
Nom du
fournisseur
Nom du
fournisseur
dans le type
d'action
Première
propriété
requise
Deuxième
propriété
requise
Troisième
propriété
requise
Amazon S3
S3
S3Bucket
S3ObjectKey none
none
AWS
CodeCommit
CodeCommit
RepositoryName
BranchName
none
none
GitHub
GitHub
Owner
Repo
Branch
OAuthToken
AWS
CloudFormation
ActionMode
CloudFormation
StackName
varie²
varie²
AWS
CodeBuild
CodeBuild
ProjectName
none
none
none
AWS
CodeDeploy
CodeDeploy
ApplicationName
DeploymentGroupName
none
AWS Elastic
Beanstalk
ElasticBeanstalk
ApplicationName
EnvironmentName
none
AWS Lambda Lambda
FunctionName UserParameters
none
¹
AWS
OpsWorks
Stack
OpsWorks
Layer¹
Version 09/07/2015
182
App
Quatrième
propriété
requise
none
none
none
none
AWS CodePipeline Guide de l'utilisateur
Exigences de structure des
actions dans AWS CodePipeline
Nom du
fournisseur
Nom du
fournisseur
dans le type
d'action
Première
propriété
requise
Deuxième
propriété
requise
Troisième
propriété
requise
Quatrième
propriété
requise
Jenkins
tel que
configuré
dans le plugin
Plug-in AWS
CodePipeline
pour Jenkins
ProjectName
none
none
none
¹ Facultatif.
² La troisième et la quatrième propriétés requises pour AWS CloudFormation dépendent de la
propriété ActionMode sélectionnée. Pour plus d'informations, consultez Livraison continue avec
AWS CodePipeline dans le AWS CloudFormation Guide de l'utilisateur.
L'exemple suivant montre une configuration d'action valide pour une action source utilisant Amazon
S3 :
"configuration": {
"S3Bucket": "awscodepipeline-demobucket-example-date",
"S3ObjectKey": "CodePipelineDemoApplication.zip",
}
Version 09/07/2015
183
AWS CodePipeline Guide de l'utilisateur
Chiffrement des artéfacts stockés
dans Amazon S3 pour AWS
CodePipeline
Lorsque vous utilisez l'assistant Create Pipeline pour créer votre premier pipeline, un compartiment
Amazon S3 est créé dans la même région où vous avez créé ce pipeline. Ce compartiment permet
de stocker les artéfacts du pipeline. Lorsqu'un pipeline s'exécute, les artéfacts sont placés dans le
compartiment Amazon S3 et y sont extraits. Par défaut, AWS CodePipeline utilise le chiffrement côté
serveur avec des clés gérées par Amazon S3 (SSE-S3) à l'aide de la clé par défaut pour Amazon S3
(la clé aws/s3). Cette clé est créée et stockée dans votre compte AWS. Lorsque les artéfacts sont
extraits du compartiment Amazon S3, AWS CodePipeline utilise le même processus SSE-S3 pour
les déchiffrer. Pour plus d'informations sur le chiffrement côté serveur et sur AWS KMS, consultez la
rubrique Protection des données grâce au chiffrement côté serveur.
Vous pouvez choisir d'utiliser votre propre clé gérée par le client au lieu de la clé Amazon S3 par
défaut. Voici quelques raisons qui expliquent ce choix :
• Vous souhaitez effectuer une rotation de la clé sur un planning afin de répondre aux exigences
relatives aux activités et à la sécurité de votre organisation.
• Vous souhaitez créer un pipeline qui utilise des ressources associées à un autre compte AWS. Cette
opération nécessite l'utilisation d'une clé gérée par le client. Pour plus d'informations, consultez
Création d'un pipeline qui utilise des ressources d'un autre compte (p. 121).
Pour voir les informations relatives à une clé AWS KMS, procédez comme suit :
1.
Connectez-vous à la console Identity and Access Management (IAM) à l'adresse https://
console.aws.amazon.com/iam/.
2.
Dans le volet de navigation du service, choisissez Encryption Keys. (Si une page de bienvenue
s'affiche, sélectionnez Get Started Now.)
Dans Filter, choisissez la région pour votre pipeline. Par exemple, si le pipeline a été créé dans
us-east-1, assurez-vous que le filtre est défini sur USA Est (Virginie du Nord).
3.
Pour plus d'informations sur les régions et points de terminaison disponibles pour AWS
CodePipeline, consultez Régions et points de terminaison.
4.
Dans la liste des clés de chiffrement, choisissez la clé avec l'alias utilisé pour votre pipeline (par
défaut, aws/s3). Des informations de base sur la clé s'affichent.
Version 09/07/2015
184
AWS CodePipeline Guide de l'utilisateur
Si vous utilisez la clé par défaut Amazon S3, vous ne pouvez pas modifier ou supprimer cette clé
gérée par AWS. Si vous utilisez une clé gérée par le client dans AWS KMS pour chiffrer ou déchiffrer
les artéfacts dans le compartiment Amazon S3, vous pouvez modifier ou effectuer une rotation de cette
clé si nécessaire.
Pour plus d'informations sur AWS KMS, consultez le guide du développeur AWS Key Management
Service.
Version 09/07/2015
185
AWS CodePipeline Guide de l'utilisateur
Limites dans AWS CodePipeline
Le tableau suivant répertorie les limites actuelles dans l'AWS CodePipeline. Les exigences
structurelles sont indiquées dans Référence sur la structure du pipeline (p. 177). Pour plus
d'informations sur les limites qui peuvent être modifiées, consultez la section Limites de service AWS.
Nombre de pipelines par compte AWS
Maximum de 20
Nombre d'étapes dans un pipeline
2 minimum, 10 maximum
Nombre d'actions dans une étape
1 minimum, 20 maximum
Nombre d'actions personnalisées par compte
AWS
Maximum de 20
Nombre d'actions parallèles dans une étape
5 maximum
Nombre d'actions séquentielles dans une étape
Maximum de 10
Durée avant l'expiration d'une action
Action d'approbation : 7 jours
Action de déploiement AWS CloudFormation :
3 jours
Action de génération AWS CodeBuild : 8 heures
Toutes les autres actions : 1 heure
Nombre de jours avant qu'une exécution d'étape
arrive à expiration
40
Note
La somme des délais d'expiration
pour des actions consécutives que
vous ajoutez à une étape ne peut pas
dépasser 40 jours.
Nombre de révisions en cours d'exécution sur
l'ensemble des pipelines
Maximum de 20
Nombre d'exécutions d'une action par mois
1 000 maximum par mois calendaire
Régions où vous pouvez créer un pipeline
USA Est (Virginie du Nord) (us-east-1)
USA Est (Ohio) (us-east-2)
Version 09/07/2015
186
AWS CodePipeline Guide de l'utilisateur
USA Ouest (Oregon) (us-west-2)
UE (Irlande) (eu-west-1)
UE (Francfort) (eu-central-1)
Asie-Pacifique (Tokyo) (ap-northeast-1)
Asie-Pacifique (Singapour) (ap-southeast-1)
Asie-Pacifique (Sydney) (ap-southeast-2)
Amérique du Sud (São Paulo) (sa-east-1)
Taille des artéfacts dans une étape source
Pour les artéfacts stockés dans les
compartiments Amazon Simple Storage Service
(Amazon S3), la taille maximale est de 2 Go.
Pour les artéfacts stockés dans AWS
CodeCommit ou dans des référentiels GitHub, la
taille maximale est d'environ 1 Go.
Exception : si vous utilisez AWS Elastic
Beanstalk pour déployer des applications, la taille
maximale de l'artéfact est toujours de 512 Mo.
Unicité des noms
Les noms de pipeline doivent être uniques dans
un compte utilisateur AWS
Les noms des étapes doivent être uniques au
sein d'un pipeline.
Les noms des actions doivent être uniques au
sein d'une étape.
Caractères autorisés dans les noms de pipeline
Les noms de pipeline ne peuvent pas excéder
100 caractères. Caractères autorisés :
Les caractères alphabétiques de a à z, inclus.
Les caractères alphabétiques de A à Z, inclus.
Les caractères numériques de 0 à 9, inclus.
Les caractères spéciaux . (point), @, - (signe
moins), et _ (tiret long).
Tous les autres caractères, tels que des
espaces, ne sont pas autorisés.
Version 09/07/2015
187
AWS CodePipeline Guide de l'utilisateur
Caractères autorisés dans les noms d'étape
Les noms des étapes ne peuvent pas excéder
100 caractères. Caractères autorisés :
Les caractères alphabétiques de a à z, inclus.
Les caractères alphabétiques de A à Z, inclus.
Les caractères numériques de 0 à 9, inclus.
Les caractères spéciaux . (point), @, - (signe
moins), et _ (tiret long).
Tous les autres caractères, tels que des
espaces, ne sont pas autorisés.
Caractères autorisés dans les noms d'action
Les noms d'action ne peuvent pas dépasser
100 caractères. Caractères autorisés :
Les caractères alphabétiques de a à z, inclus.
Les caractères alphabétiques de A à Z, inclus.
Les caractères numériques de 0 à 9, inclus.
Les caractères spéciaux . (point), @, - (signe
moins), et _ (tiret long).
Tous les autres caractères, tels que des
espaces, ne sont pas autorisés.
Caractères autorisés dans les types d'action
Les noms de types d'action ne peuvent pas
dépasser 25 caractères. Caractères autorisés :
Les caractères alphabétiques de a à z, inclus.
Les caractères alphabétiques de A à Z, inclus.
Les caractères numériques de 0 à 9, inclus.
Les caractères spéciaux . (point), @, - (signe
moins), et _ (tiret long).
Tous les autres caractères, tels que des
espaces, ne sont pas autorisés.
Version 09/07/2015
188
AWS CodePipeline Guide de l'utilisateur
Caractères autorisés dans les noms d'actions
partenaires
Les noms des actions partenaires doivent
respecter les mêmes conventions de
dénomination et les mêmes restrictions que les
autres noms d'action dans l'AWS CodePipeline.
Plus précisément, ces noms ne peuvent pas
dépasser 100 caractères, et les caractères
suivants sont autorisés :
Les caractères alphabétiques de a à z, inclus.
Les caractères alphabétiques de A à Z, inclus.
Les caractères numériques de 0 à 9, inclus.
Les caractères spéciaux . (point), @, - (signe
moins), et _ (tiret long).
Tous les autres caractères, tels que des
espaces, ne sont pas autorisés.
Version 09/07/2015
189
AWS CodePipeline Guide de l'utilisateur
Historique du document Guide de
l'utilisateur d'AWS CodePipeline
Le tableau suivant répertorie les modifications majeures apportées à cette documentation depuis la
dernière publication du Guide de l'utilisateur d'AWS CodePipeline.
• Version de l'API : 09/07/2015
• Dernière mise à jour de la documentation : 14/12/2016
Modification
Description
Date de
modification
Nouvelle région
AWS CodePipeline est désormais disponible dans AsiePacifique (Tokyo). Les rubriques Restrictions (p. 186) et
Régions et points de terminaison ont été mises à jour.
14 décembre
2016
Nouvelle région
AWS CodePipeline est désormais disponible dans la
région Amérique du Sud (São Paulo). Les rubriques
Restrictions (p. 186) et Régions et points de terminaison ont
été mises à jour.
7 décembre
2016
Mise à jour des
rubriques
Vous pouvez maintenant ajouter AWS CodeBuild comme
action de génération à n'importe quelle étape d'un pipeline.
AWS CodeBuild est un service de génération entièrement
géré dans le cloud qui compile votre code source, exécute
des tests unitaires et produit des artefacts prêts à être
déployés. Vous pouvez utiliser un projet de génération
existant ou en créer un dans la console AWS CodePipeline.
Les données de sortie du projet de génération peuvent
ensuite être déployées dans le cadre d'un pipeline.
1 décembre
2016
Les rubriques Intégrations de produits et services (p. 10),
Création d'un pipeline (p. 62), Référence des autorisations
d'accès (p. 156) et Référence sur la structure du
pipeline (p. 177) ont été mises à jour pour refléter cette prise
en charge pour AWS CodeBuild.
Vous pouvez désormais utiliser AWS CodePipeline avec
AWS CloudFormation et le modèle d'application sans
Version 09/07/2015
190
AWS CodePipeline Guide de l'utilisateur
Modification
Description
Date de
modification
serveur AWS pour diffuser en continu vos applications
sans serveur. La rubrique Intégrations de produits et
services (p. 10) a été mise à jour pour refléter cette prise en
charge.
Intégrations de produits et services (p. 10) a été réorganisé
pour regrouper les offres AWS et les offres de partenaires
par type d'action.
Nouvelle région
AWS CodePipeline est désormais disponible dans UE
(Francfort). Les rubriques Restrictions (p. 186) et Régions et
points de terminaison ont été mises à jour.
16 novembre 2016
Mise à jour des
rubriques
AWS CloudFormation peut maintenant être sélectionné en
tant que fournisseur de déploiement dans les pipelines,
ce qui vous permet d'intervenir sur les piles et les jeux de
modifications AWS CloudFormation dans le cadre d'une
exécution du pipeline. Les rubriques Intégrations de produits
et services (p. 10), Création d'un pipeline (p. 62), Référence
des autorisations d'accès (p. 156) et Référence sur la
structure du pipeline (p. 177) ont été mises à jour pour
refléter cette prise en charge pour AWS CloudFormation.
3 novembre 2016
Nouvelle région
AWS CodePipeline est désormais disponible dans la région
Asie-Pacifique (Sydney). Les rubriques Restrictions (p. 186)
et Régions et points de terminaison ont été mises à jour.
26 octobre 2016
Nouvelle région
AWS CodePipeline est désormais disponible dans AsiePacifique (Singapour). Les rubriques Restrictions (p. 186) et
Régions et points de terminaison ont été mises à jour.
20 octobre 2016
Nouvelle région
AWS CodePipeline est désormais disponible dans la région
USA Est (Ohio). Les rubriques Restrictions (p. 186) et
Régions et points de terminaison ont été mises à jour.
17 octobre 2016
Rubrique mise à jour
Création d'un pipeline (p. 62) a été mis à jour pour refléter la
prise en charge de l'affichage des identificateurs de version
d'actions personnalisées dans les listes Source provider et
Build provider.
22 septembre
2016
Rubrique mise à jour
La section Gestion des actions d'approbation dans les
pipelines (p. 76) a été mise à jour pour refléter une
amélioration, qui permet aux vérificateurs des actions
d'approbation d'ouvrir le formulaire Approve or reject the
revision directement à partir d'une notification par e-mail.
14 septembre
2016
Rubriques nouvelles
et mises à jour
Une nouvelle rubrique, Affichage des détails de la révision
source actuelle d'un pipeline (p. 105), explique comment
afficher les informations sur les modifications du code
actuellement exécuté dans la votre pipeline de publication
logicielle. Un accès rapide à ces informations peut être utile
lors de la vérification des actions d'approbation manuelle ou
de la résolution des problèmes dans votre pipeline.
08 septembre
2016
Une nouvelle section, Suivi des pipelines (p. 98), fournit un
emplacement central pour toutes les rubriques liées à la
surveillance de l'état et à la progression de vos pipelines.
Version 09/07/2015
191
AWS CodePipeline Guide de l'utilisateur
Modification
Description
Date de
modification
Rubriques nouvelles
et mises à jour
Une nouvelle section, Gestion des actions d'approbation
dans les pipelines (p. 76), fournit des informations sur
la configuration et l'utilisation d'actions d'approbation
manuelle dans les pipelines. Les rubriques de cette
section fournissent des informations conceptuelles sur
le processus d'approbation ; des instructions sur la
configuration requise pour les autorisations IAM, la création
d'actions d'approbation, l'approbation ou le rejet des actions
d'approbation, et des modèles de données JSON générées
lorsqu'un pipeline atteint une action d'approbation.
06 juillet 2016
Nouvelle région
AWS CodePipeline est désormais disponible dans la région
UE (Irlande). Les rubriques Restrictions (p. 186) et Régions
et points de terminaison ont été mises à jour.
23 juin 2016
Nouvelle rubrique
Une nouvelle rubrique, Nouvelle tentative des actions ayant
échoué (p. 90), a été ajoutée pour expliquer comment
retenter une action ayant échoué ou un groupe d'actions
parallèles ayant échoué dans l'étape.
22 juin 2016
Mise à jour des
rubriques
Un certain nombre de rubriques, notamment Création
d'un pipeline (p. 62), Référence des autorisations
d'accès (p. 156), Référence sur la structure du
pipeline (p. 177) et Intégrations de produits et
services (p. 10), ont été mises à jour pour refléter la prise
en charge de la configuration d'un pipeline afin de déployer
du code conjointement avec des livres de recettes Chef
personnalisés et des applications créées dans AWS
OpsWorks. La prise en charge d'AWS CodePipeline pour
AWS OpsWorks est actuellement disponible dans la région
USA Est (Virginie du Nord) (us-east-1) uniquement.
2 juin 2016
Rubriques nouvelles
et mises à jour
Une nouvelle rubrique, Procédure pas à pas avec pipeline
simple (référentiel AWS CodeCommit) (p. 41), a été
ajoutée. Cette rubrique présente un modèle de procédure
détaillée, qui indique comment utiliser un référentiel AWS
CodeCommit et une branche en tant qu'emplacement
source pour une action source d'un pipeline. Plusieurs
autres rubriques ont été mises à jour afin de tenir compte
de cette intégration avec AWS CodeCommit notamment
Référence des autorisations d'accès (p. 156), Intégrations
de produits et services (p. 10), Didacticiel avec pipeline à
quatre étapes (p. 53), et Dépannage (p. 151).
18 avril 2016
Nouvelle rubrique
Une nouvelle rubrique, Intégration des fonctions Lambda
dans les pipelines (p. 131), a été ajoutée. Cette rubrique
présente des modèles de fonctions et des étapes AWS
Lambda pour ajouter des fonctions Lambda aux pipelines.
27 janvier 2016
Rubrique mise à jour
Une nouvelle section a été ajoutée à Référence des
autorisations d'accès (p. 156), Création d'une stratégie
pour un compartiment Amazon S3, en vue d'une utilisation
comme magasin d'objets pour AWS CodePipeline (p. 160).
22 janvier 2016
Version 09/07/2015
192
AWS CodePipeline Guide de l'utilisateur
Modification
Description
Date de
modification
Nouvelle rubrique
Une nouvelle rubrique, Intégrations de produits et
services (p. 10), a été ajoutée. Les informations sur
l'intégration avec les partenaires et d'autres services AWS
ont été transférées dans cette rubrique. Des liens vers des
blogs et des vidéos ont également été ajoutés.
17 décembre
2015
Rubrique mise à jour
Details of integration with Solano CI (p. 13) a été ajouté à
Intégrations de produits et services (p. 10).
17 novembre 2015
Rubrique mise à jour
Le plugin Plug-in AWS CodePipeline pour Jenkins est
désormais disponible via le gestionnaire de plug-in Jenkins
dans la bibliothèque de plugins de Jenkins. La procédure
d'installation du plug-in a été mise à jour dans Didacticiel
avec pipeline à quatre étapes (p. 53).
9 novembre 2015
Nouvelle région
AWS CodePipeline est désormais disponible dans la région
USA Ouest (Oregon). La rubrique Restrictions (p. 186) a été
mise à jour. Des liens ont été ajoutés dans Régions et points
de terminaison.
22 octobre 2015
Nouvelle rubrique
Deux nouvelles rubriques,Chiffrement (p. 184) et Création
d'un pipeline qui utilise des ressources d'un autre
compte (p. 121), ont été ajoutées. Une nouvelle section a
été ajoutée à Référence des autorisations d'accès (p. 156),
Utilisation de ressources AWS associées à un autre compte
dans un pipeline (p. 168).
25 août 2015
Rubrique mise à jour
La rubrique Création d'une action personnalisée
pour un pipeline (p. 108) a été mise à jour pour
refléter les modifications de la structure, y compris
inputArtifactDetails et outputArtifactDetails.
17 août 2015
Rubrique mise à jour
La rubrique Dépannage (p. 151) a été mise à jour, pour
inclure les nouvelles étapes relatives à la résolution
des problèmes concernant le rôle de service et Elastic
Beanstalk.
11 août 2015
Rubrique mise à jour
La rubrique Référence des autorisations d'accès (p. 156)
a été mise à jour pour inclure les dernières
modifications apportées au rôle de service pour AWS
CodePipeline (p. 161).
6 août 2015
Nouvelle rubrique
Une rubrique Dépannage (p. 151) a été ajoutée. De
nouvelles étapes ont été ajoutées pour les rôles IAM
et Jenkins dans Didacticiel avec pipeline à quatre
étapes (p. 53).
24 juillet 2015
Mise à jour de
rubrique
De nouvelles étapes ont été ajoutées pour télécharger les
modèles de fichier dans Procédure pas à pas avec pipeline
simple (compartiment Amazon S3) (p. 26) et Didacticiel avec
pipeline à quatre étapes (p. 53).
22 juillet 2015
Mise à jour de
rubrique
Une solution temporaire pour les problèmes de
téléchargement des modèles de fichier a été ajoutée dans
Procédure pas à pas avec pipeline simple (compartiment
Amazon S3) (p. 26).
17 juillet 2015
Version 09/07/2015
193
AWS CodePipeline Guide de l'utilisateur
Modification
Description
Date de
modification
Mise à jour de
rubrique
Un lien a été ajouté dans Restrictions (p. 186) pour rediriger
vers les informations indiquant les limites qui peuvent être
modifiées.
15 juillet 2015
Mise à jour de
rubrique
La section des stratégies gérées dans Référence des
autorisations d'accès (p. 156) a été mise à jour.
10 juillet 2015
Première version
publique
Il s'agit de la première version publique du Guide de
l'utilisateur d'AWS CodePipeline.
9 juillet 2015
Version 09/07/2015
194
AWS CodePipeline Guide de l'utilisateur
Glossaire AWS
Pour la terminologie AWS la plus récente, consultez le Glossaire AWS dans le document AWS General
Reference.
Version 09/07/2015
195

Documents pareils