

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

# Intégration avec d'autres AWS services
<a name="integrations-aws"></a>

CodeDeploy est intégré aux AWS services suivants :


|  |  | 
| --- |--- |
| Amazon CloudWatch |  [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/) est un service de surveillance des ressources du AWS cloud et des applications que vous utilisez AWS. Vous pouvez utiliser Amazon CloudWatch pour collecter et suivre les métriques, collecter et surveiller les fichiers journaux et définir des alarmes. CodeDeploy prend en charge les CloudWatch outils suivants :  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  CodeDeploy prend en charge [Amazon EC2 Auto Scaling](https://aws.amazon.com/autoscaling). Ce AWS service peut lancer automatiquement des instances Amazon EC2 en fonction de critères que vous spécifiez, par exemple :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html) Vous pouvez étendre un groupe d'instances Amazon EC2 chaque fois que vous en avez besoin, puis les utiliser CodeDeploy pour y déployer automatiquement des révisions d'applications. Amazon EC2 Auto Scaling met fin à ces instances Amazon EC2 lorsqu'elles ne sont plus nécessaires. En savoir plus : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon Elastic Container Service |   Vous pouvez l'utiliser CodeDeploy pour déployer une application conteneurisée Amazon ECS sous forme d'ensemble de tâches. CodeDeploy effectue un blue/green déploiement en installant une version mise à jour de l'application en tant que nouvel ensemble de tâches de remplacement. CodeDeploy redirige le trafic de production de l'ensemble de tâches d'application d'origine vers le jeu de tâches de remplacement. L'ensemble de tâches d'origine est arrêté après un déploiement réussi. Pour plus d'informations sur Amazon ECS, consultez [Amazon Elastic Container Service](https://aws.amazon.com/ecs/).  Vous pouvez gérer la manière dont le trafic est transféré vers l'ensemble de tâches mis à jour au cours d'un déploiement en choisissant une configuration Canary, Linear ou une all-at-once configuration. Pour plus d'informations sur les déploiements Amazon ECS, consultez la section [Déploiements sur une plateforme de calcul Amazon ECS](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/deployment-steps-ecs.html).   | 
| AWS CloudTrail |  CodeDeploy est intégré à [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/). Ce service capture les appels d'API effectués par ou au nom de votre AWS compte et envoie les fichiers journaux CodeDeploy dans un compartiment Amazon S3 que vous spécifiez. CloudTrailcapture les appels d'API à partir de la CodeDeploy console AWS CLI, à partir de CodeDeploy commandes via ou CodeDeploy APIs directement. Grâce aux informations collectées par CloudTrail, vous pouvez déterminer : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html) En savoir plus : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Cloud9 |  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/)est un environnement de développement intégré (IDE) en ligne basé sur le cloud que vous pouvez utiliser pour écrire, exécuter, déboguer et déployer du code à l'aide d'un simple navigateur depuis une machine connectée à Internet. AWS Cloud9 inclut un éditeur de code, un débogueur, un terminal et des outils essentiels, tels que Git et AWS CLI Git. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html) Pour plus d'informations AWS Cloud9, voir [Qu'est-ce que c'est AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcom.html) et [comment démarrer avec AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/get-started.html).  | 
| AWS CodePipeline |  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) est un service de diffusion en continu qui permet de modéliser, visualiser et automatiser les étapes nécessaires à la publication de vos logiciels dans un processus de diffusion en continu. Vous pouvez utiliser AWS CodePipeline pour définir votre propre processus de publication afin que le service crée, teste et déploie votre code chaque fois qu'une modification de code intervient. Par exemple, vous pourriez disposer de trois groupes de déploiement pour une application : bêta, gamma et production. Vous pouvez configurer un pipeline de telle sorte que chaque fois qu'une modification intervient dans votre code source, les mises à jour sont déployées individuellement dans chaque groupe de déploiement. Vous pouvez configurer AWS CodePipeline pour utiliser CodeDeploy pour déployer : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  Vous pouvez créer l' CodeDeploy application, le déploiement et le groupe de déploiement à utiliser dans une action de déploiement à une étape, soit avant de créer le pipeline, soit dans l'assistant de **création de pipeline**. En savoir plus : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Modèle d'application sans serveur |  AWS Le modèle d'application sans serveur (AWS SAM) est un modèle permettant de définir des applications sans serveur. Il propose également CloudFormation un moyen simplifié de définir AWS Lambda les fonctions, Amazon API Gateway APIs et les tables Amazon DynamoDB requises par une application sans serveur. Si vous utilisez déjà AWS SAM, vous pouvez ajouter des préférences de déploiement à utiliser pour commencer CodeDeploy à gérer la manière dont le trafic est transféré lors du déploiement d'une application AWS Lambda. Pour plus d'informations, consultez le [modèle d'application AWS sans serveur](https://github.com/awslabs/serverless-application-model).  | 
| Elastic Load Balancing |  CodeDeploy prend en [charge Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html), un service qui distribue le trafic applicatif entrant sur plusieurs instances Amazon EC2.  Pour CodeDeploy les déploiements, les équilibreurs de charge empêchent également le trafic d'être acheminé vers des instances lorsqu'elles ne sont pas prêtes, sont en cours de déploiement ou ne sont plus nécessaires dans le cadre d'un environnement. En savoir plus : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/integrations-aws.html)  | 

**Topics**
+ [Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md)
+ [Integrating CodeDeploy with Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)

# Intégration CodeDeploy à Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling"></a>

CodeDeploy prend en charge Amazon EC2 Auto Scaling, AWS un service qui lance les instances Amazon EC2 automatiquement en fonction des conditions que vous définissez. Ces conditions peuvent inclure le dépassement des limites dans un intervalle de temps spécifié pour l'utilisation du processeur, les lectures ou écritures sur le disque, ou le trafic réseau entrant ou sortant. Amazon EC2 Auto Scaling met fin aux instances lorsqu'elles ne sont plus nécessaires. Pour plus d'informations, consultez [Qu'est-ce que Amazon EC2 Auto Scaling ?](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html) dans le *Guide de l'utilisateur Amazon EC2 Auto Scaling*.

Lorsque de nouvelles instances Amazon EC2 sont lancées dans le cadre d'un groupe Amazon EC2 Auto Scaling, CodeDeploy vous pouvez déployer automatiquement vos révisions sur les nouvelles instances. Vous pouvez également coordonner les déploiements CodeDeploy avec des instances Amazon EC2 Auto Scaling enregistrées auprès des équilibreurs de charge Elastic Load Balancing. Pour plus d’informations, consultez [Intégration CodeDeploy à Elastic Load Balancing](integrations-aws-elastic-load-balancing.md) et [Configuration d'un équilibreur de charge dans Elastic Load Balancing pour les déploiements CodeDeploy Amazon EC2](deployment-groups-create-load-balancer.md).

**Note**  
Vous pouvez rencontrer des problèmes si vous associez plusieurs groupes de déploiement à un seul groupe Amazon EC2 Auto Scaling. Si un déploiement échoue, par exemple, l'instance va commencer à s'arrêter, mais les autres déploiements en cours d'exécution peuvent mettre une heure avant d'expirer. Pour plus d'informations, consultez [Évitez d'associer plusieurs groupes de déploiement à un seul groupe Amazon EC2 Auto Scaling](troubleshooting-auto-scaling.md#troubleshooting-multiple-depgroups) [Under the hood : CodeDeploy et Amazon EC2 Auto Scaling integration](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/).

**Topics**
+ [Déploiement CodeDeploy d'applications dans des groupes Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-deploy)
+ [Permettre les déploiements de terminaison lors d'événements de scale-in d'Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable)
+ [Comment fonctionne Amazon EC2 Auto Scaling avec CodeDeploy](#integrations-aws-auto-scaling-behaviors)
+ [Utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-custom-ami)

## Déploiement CodeDeploy d'applications dans des groupes Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-deploy"></a>

Pour déployer une révision d' CodeDeploy application dans un groupe Amazon EC2 Auto Scaling :

1. Créez ou localisez un profil d'instance IAM qui permet au groupe Amazon EC2 Auto Scaling de travailler avec Amazon S3. Pour de plus amples informations, veuillez consulter [Étape 4 : Création d'un profil d'instance IAM pour vos instances Amazon EC2](getting-started-create-iam-instance-profile.md).
**Note**  
Vous pouvez également l'utiliser CodeDeploy pour déployer des révisions depuis des GitHub référentiels vers des groupes Amazon EC2 Auto Scaling. Bien que les instances Amazon EC2 nécessitent toujours un profil d'instance IAM, le profil n'a pas besoin d'autorisations supplémentaires pour être déployé à partir d'un référentiel. GitHub 

1. Créez ou utilisez un groupe Amazon EC2 Auto Scaling, en spécifiant le profil d'instance IAM dans votre configuration ou votre modèle de lancement. Pour plus d'informations, consultez le [rôle IAM pour les applications qui s'exécutent sur des instances Amazon EC2](https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html).

1. Créez ou localisez un rôle de service qui permet CodeDeploy de créer un groupe de déploiement contenant le groupe Amazon EC2 Auto Scaling.

1. Créez un groupe de déploiement avec CodeDeploy, en spécifiant le nom du groupe Amazon EC2 Auto Scaling, le rôle du service et quelques autres options. Pour plus d’informations, consultez [Création d'un groupe de déploiement pour un déploiement sur place (console)](deployment-groups-create-in-place.md) ou [Création d'un groupe de déploiement pour un déploiement sur place (console)](deployment-groups-create-in-place.md).

1.  CodeDeploy À utiliser pour déployer votre révision dans le groupe de déploiement qui contient le groupe Amazon EC2 Auto Scaling.

Pour de plus amples informations, veuillez consulter [Tutoriel : CodeDeploy À utiliser pour déployer une application dans un groupe Auto Scaling](tutorials-auto-scaling-group.md).

## Permettre les déploiements de terminaison lors d'événements de scale-in d'Auto Scaling
<a name="integrations-aws-auto-scaling-behaviors-hook-enable"></a>

Un *déploiement de fin* est un type de CodeDeploy déploiement qui est activé automatiquement lorsqu'un [événement de scale-in Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in) se produit. CodeDeploy effectue le déploiement de terminaison juste avant que le service Auto Scaling ne mette fin à l'instance. Lors d'un déploiement final, CodeDeploy ne déploie rien. Au lieu de cela, il génère des événements du cycle de vie, que vous pouvez associer à vos propres scripts pour activer une fonctionnalité d'arrêt personnalisée. Par exemple, vous pouvez associer l'événement du `ApplicationStop` cycle de vie à un script qui arrête correctement votre application avant que l'instance ne soit arrêtée. 

Pour obtenir la liste des événements du cycle de vie CodeDeploy générés lors de l'arrêt d'un déploiement, consultez[Disponibilité du carnet d'événements du cycle de vie](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability). 

Si le déploiement de la terminaison échoue pour une raison quelconque, CodeDeploy cela permettra à la résiliation de l'instance de se poursuivre. Cela signifie que l'instance sera arrêtée même si elle CodeDeploy n'a pas exécuté l'ensemble complet (ou aucun) des événements du cycle de vie jusqu'à son terme.

Si vous n'activez pas les déploiements de résiliation, le service Auto Scaling mettra tout de même fin aux instances Amazon EC2 lorsqu'un événement de scale-in se produit, CodeDeploy mais ne générera pas d'événements liés au cycle de vie.

**Note**  
Que vous activiez ou non les déploiements de résiliation, si le service Auto Scaling met fin à une instance Amazon EC2 alors qu' CodeDeploy un déploiement est en cours, une course peut se produire entre les événements du cycle de vie générés par Auto Scaling et les services. CodeDeploy Par exemple, l'événement `Terminating` du cycle de vie (généré par le service Auto Scaling) peut remplacer l'`ApplicationStart`événement (généré par le CodeDeploy déploiement). Dans ce scénario, il est possible que vous rencontriez un échec lors de la fermeture ou du déploiement de l' CodeDeploy instance Amazon EC2.

**Pour permettre d' CodeDeploy effectuer des déploiements de terminaison**
+ Cochez la case **Ajouter un crochet de terminaison aux groupes Auto Scaling** lors de la création ou de la mise à jour de votre groupe de déploiement. Pour obtenir des instructions[Création d'un groupe de déploiement pour un déploiement sur place (console)](deployment-groups-create-in-place.md), voir ou[Création d'un groupe de déploiement pour un blue/green déploiement EC2/sur site (console)](deployment-groups-create-blue-green.md).

  L'activation de cette case CodeDeploy à cocher entraîne l'installation d'un [hook de cycle de vie Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) dans les groupes Auto Scaling que vous spécifiez lorsque vous créez ou mettez à jour votre groupe de CodeDeploy déploiement. Ce crochet est appelé *crochet de terminaison* et permet les déploiements de terminaison.

**Une fois le crochet de terminaison installé, un événement scale-in (terminaison) se déroule comme suit :**

1. Le service Auto Scaling (ou simplement Auto Scaling) détermine qu'un événement de scale-in doit se produire et contacte le service EC2 pour mettre fin à une instance EC2.

1. Le service EC2 commence à mettre fin à l'instance EC2. L'instance passe dans l'`Terminating`état, puis dans l'`Terminating:Wait`état. 

1. Pendant `Terminating:Wait` ce temps, Auto Scaling exécute tous les hooks du cycle de vie attachés au groupe Auto Scaling, y compris le crochet de terminaison installé par CodeDeploy.

1. Le hook de terminaison envoie une notification à la [file d'attente Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) interrogée par. CodeDeploy

1. Dès réception de la notification, CodeDeploy analyse le message, effectue une certaine validation et effectue un [déploiement de terminaison](#integrations-aws-auto-scaling-behaviors-hook-enable).

1. Pendant que le déploiement de la terminaison est en cours, CodeDeploy envoie des pulsations toutes les cinq minutes à Auto Scaling pour l'informer que l'instance est toujours en cours d'élaboration.

1. Jusqu'à présent, l'instance EC2 est toujours dans `Terminating:Wait` cet état (ou peut-être dans cet `Warmed:Pending:Wait` état, si vous avez activé les [warm pools de groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/warm-pool-instance-lifecycle.html)).

1. Lorsque le déploiement est terminé, CodeDeploy indique à Auto Scaling `CONTINUE` le processus d'arrêt d'EC2, que le déploiement ait réussi ou échoué.

## Comment fonctionne Amazon EC2 Auto Scaling avec CodeDeploy
<a name="integrations-aws-auto-scaling-behaviors"></a>

Lorsque vous créez ou mettez à jour un groupe de CodeDeploy déploiement pour inclure un groupe Auto Scaling, vous CodeDeploy accédez au groupe Auto Scaling à l'aide du rôle de CodeDeploy service, puis installez les [hooks de cycle de vie Auto](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) Scaling dans vos groupes Auto Scaling.

**Note**  
Les *hooks du cycle de vie Auto Scaling* sont différents *des événements du* *cycle de vie (également appelés crochets d'événements* du cycle [AppSpec section « crochets »](reference-appspec-file-structure-hooks.md) de vie) générés CodeDeploy et décrits dans ce guide.

Les hooks du cycle de vie Auto Scaling qui s' CodeDeploy installent sont les suivants :
+ **Un hook de lancement** : ce hook indique CodeDeploy qu'un [événement de scale-out Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-out) est en cours et qu'il CodeDeploy doit démarrer un déploiement de lancement.

  Lors d'un *déploiement de lancement*, CodeDeploy :
  + Déploie une révision de votre application sur l'instance évolutive.
  + Génère des événements du cycle de vie pour indiquer la progression du déploiement. Vous pouvez associer ces événements du cycle de vie à vos propres scripts pour activer des fonctionnalités de démarrage personnalisées. Pour plus d'informations, consultez le tableau dans[Disponibilité du carnet d'événements du cycle de vie](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability).

  Le hook de lancement et le déploiement de lancement associé sont toujours activés et ne peuvent pas être désactivés.
+ **Un hook de terminaison** : ce hook facultatif indique CodeDeploy qu'un [événement de scale-in Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in) est en cours et qu'il CodeDeploy doit démarrer un déploiement de terminaison.

  Lors d'un *déploiement d'arrêt*, CodeDeploy génère des événements du cycle de vie pour indiquer la progression de l'arrêt de l'instance. Pour de plus amples informations, veuillez consulter [Permettre les déploiements de terminaison lors d'événements de scale-in d'Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable).

**Topics**
+ [Après avoir CodeDeploy installé les hooks Lifecycle, comment sont-ils utilisés ?](#integrations-aws-auto-scaling-behaviors-hook-usage)
+ [Comment sont CodeDeploy nommés les groupes Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-behaviors-naming)
+ [Ordre d'exécution des événements d'accroche du cycle de vie personnalisés](#integrations-aws-auto-scaling-behaviors-hook-order)
+ [Événements de scale-out lors d'un déploiement](#integrations-aws-auto-scaling-behaviors-mixed-environment)
+ [Événements d'évolutivité lors d'un déploiement](#integrations-aws-auto-scaling-behaviors-scale-in)
+ [Ordre des événements dans les scripts AWS CloudFormation cfn-init](#integrations-aws-auto-scaling-behaviors-event-order)

### Après avoir CodeDeploy installé les hooks Lifecycle, comment sont-ils utilisés ?
<a name="integrations-aws-auto-scaling-behaviors-hook-usage"></a>

Une fois les hooks du cycle de vie de lancement et de fin installés, ils sont utilisés CodeDeploy lors des événements de scale-out et de scale-in du groupe Auto Scaling, respectivement.

**Un événement de scale-out (lancement) se déroule comme suit :**

1. Le service Auto Scaling (ou simplement Auto Scaling) détermine qu'un événement de scale-out doit se produire et contacte le service EC2 pour lancer une nouvelle instance EC2.

1. Le service EC2 lance une nouvelle instance EC2. L'instance passe dans l'`Pending`état, puis dans l'`Pending:Wait`état. 

1. Pendant `Pending:Wait` ce temps, Auto Scaling exécute tous les hooks du cycle de vie attachés au groupe Auto Scaling, y compris le hook de lancement installé par CodeDeploy.

1. Le hook de lancement envoie une notification à la [file d'attente Amazon SQS interrogée](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) par. CodeDeploy

1. Dès réception de la notification, CodeDeploy analyse le message, effectue une validation et lance un [déploiement de lancement](#launch-deployment).

1. Pendant le déploiement de lancement, CodeDeploy envoie des pulsations toutes les cinq minutes à Auto Scaling pour l'informer que l'instance est toujours en cours d'élaboration.

1. Jusqu'à présent, l'instance EC2 est toujours dans `Pending:Wait` cet état.

1. Lorsque le déploiement est terminé, CodeDeploy indique à Auto Scaling l'un `CONTINUE` ou `ABANDON` l'autre processus de lancement d'EC2, selon que le déploiement a réussi ou échoué.
   + Si CodeDeploy cela est indiqué`CONTINUE`, Auto Scaling poursuit le processus de lancement, soit en attendant que les autres hooks soient terminés, soit en plaçant l'instance dans l'`InService`état « `Pending:Proceed` et puis ».
   + Si CodeDeploy cela est indiqué`ABANDON`, Auto Scaling met fin à l'instance EC2 et redémarre la procédure de lancement si nécessaire pour atteindre le nombre d'instances souhaité, tel que défini dans le paramètre Auto Scaling Desired Capacity**.**

**Un événement de scale-in (résiliation) se déroule comme suit :**

Consultez [Permettre les déploiements de terminaison lors d'événements de scale-in d'Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable).

### Comment sont CodeDeploy nommés les groupes Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-behaviors-naming"></a>

 

Lors blue/green des déploiements sur une plate-forme informatique EC2/sur site, deux options s'offrent à vous pour ajouter des instances à votre environnement de remplacement (écologique) :
+  Utilisez des instances qui existent déjà ou créez-en manuellement. 
+  Utilisez les paramètres d'un groupe Amazon EC2 Auto Scaling que vous spécifiez pour définir et créer des instances dans un nouveau groupe Amazon EC2 Auto Scaling. 

 Si vous choisissez la deuxième option, CodeDeploy provisionnez un nouveau groupe Amazon EC2 Auto Scaling pour vous. Il utilise la convention suivante pour nommer le groupe : 

```
CodeDeploy_deployment_group_name_deployment_id
```

Par exemple, si un déploiement avec ID `10` déploie un groupe de déploiement nommé`alpha-deployments`, le groupe Amazon EC2 Auto Scaling provisionné est nommé. `CodeDeploy_alpha-deployments_10` Pour plus d’informations, consultez [Création d'un groupe de déploiement pour un blue/green déploiement EC2/sur site (console)](deployment-groups-create-blue-green.md) et [GreenFleetProvisioningOption](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GreenFleetProvisioningOption.html).

### Ordre d'exécution des événements d'accroche du cycle de vie personnalisés
<a name="integrations-aws-auto-scaling-behaviors-hook-order"></a>

Vous pouvez ajouter vos propres hooks de cycle de vie aux groupes Amazon EC2 Auto Scaling vers CodeDeploy lesquels sont déployés. Toutefois, l'ordre dans lequel ces événements d'accroche du cycle de vie personnalisés sont exécutés ne peut pas être prédéterminé par rapport aux événements du cycle de vie de déploiement CodeDeploy par défaut. Par exemple, si vous ajoutez un hook de cycle de vie personnalisé nommé `ReadyForSoftwareInstall` dans un groupe Amazon EC2 Auto Scaling, vous ne pouvez pas savoir à l'avance s'il sera exécuté avant le premier ou après le dernier CodeDeploy événement du cycle de vie de déploiement par défaut.

Pour savoir comment ajouter des hooks de cycle de vie personnalisés à un groupe Amazon EC2 Auto Scaling, [consultez la section Ajout de crochets de cycle](https://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks) de vie dans *le guide de l'utilisateur d'Amazon EC2 Auto Scaling*.

### Événements de scale-out lors d'un déploiement
<a name="integrations-aws-auto-scaling-behaviors-mixed-environment"></a>

Si un événement Auto Scale-out survient alors qu'un déploiement est en cours, les nouvelles instances seront mises à jour avec la version de l'application précédemment déployée, et non avec la version la plus récente de l'application. Si le déploiement aboutit, les anciennes instances et les nouvelles instances évolutives hébergeront différentes révisions de l'application. Pour mettre à jour les instances dotées de l'ancienne révision, lance CodeDeploy automatiquement un déploiement de suivi (immédiatement après la première) afin de mettre à jour les instances obsolètes. Si vous souhaitez modifier ce comportement par défaut afin que les instances EC2 obsolètes soient conservées dans l'ancienne version, consultez[Automatic updates to outdated instances](deployment-groups-configure-advanced-options.md#auto-updates-outdated-instances).

Si vous souhaitez suspendre les processus de scale-out d'Amazon EC2 Auto Scaling pendant les déploiements, vous pouvez le faire via un paramètre `common_functions.sh` du script utilisé pour l'équilibrage de charge avec. CodeDeploy Si `HANDLE_PROCS=true` les événements Auto Scaling suivants sont automatiquement suspendus pendant le processus de déploiement : 
+ AZRebalance
+ AlarmNotification
+ ScheduledActions
+ ReplaceUnhealthy

**Important**  
Seul le CodeDeployDefault. OneAtATime la configuration de déploiement prend en charge cette fonctionnalité.

Pour plus d'informations sur l'utilisation `HANDLE_PROCS=true` afin d'éviter les problèmes de déploiement lors de l'utilisation d'Amazon EC2 Auto Scaling, [consultez la section Avis important concernant la AutoScaling gestion des](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb#important-notice-about-handling-autoscaling-processes) processus [aws-codedeploy-samples](https://github.com/awslabs/aws-codedeploy-samples)en GitHub cours.

### Événements d'évolutivité lors d'un déploiement
<a name="integrations-aws-auto-scaling-behaviors-scale-in"></a>

Si un groupe Auto Scaling commence à prendre de l'ampleur alors qu'un CodeDeploy déploiement est en cours sur ce groupe Auto Scaling, une situation de course peut survenir entre le processus d'arrêt (y compris les événements du cycle de vie du déploiement de fin) et les autres événements CodeDeploy du cycle de vie sur l'instance de CodeDeploy résiliation. Le déploiement sur cette instance spécifique peut échouer si l'instance est arrêtée avant la fin de tous les événements CodeDeploy du cycle de vie. En outre, le CodeDeploy déploiement global peut échouer ou non, selon la façon dont vous avez défini le paramètre **Minimum healthy hosts** dans votre configuration de déploiement.

### Ordre des événements dans les scripts AWS CloudFormation cfn-init
<a name="integrations-aws-auto-scaling-behaviors-event-order"></a>

Si vous utilisez `cfn-init` (ou `cloud-init`) pour exécuter des scripts sur des instances basées sur Linux nouvellement allouées, vos déploiements peuvent échouer à moins que vous ne contrôliez de manière stricte l'ordre des événements qui se produisent au démarrage de l'instance.

L'ordre doit être le suivant :

1. L'instance nouvellement allouée se lance.

1. Tous les scripts d'amorçage `cfn-init` s'exécutent jusqu'à la fin.

1. L' CodeDeploy agent démarre.

1. La dernière révision d'application est déployée sur l'instance.

Si l'ordre des événements n'est pas soigneusement contrôlé, l' CodeDeploy agent peut démarrer un déploiement avant la fin de l'exécution de tous les scripts. 

Pour contrôler l'ordre des événements, utilisez l'une de ces bonnes pratiques : 
+ Installez l' CodeDeploy agent par le biais d'un `cfn-init` script, en le plaçant après tous les autres scripts.
+ Incluez l' CodeDeploy agent dans une AMI personnalisée et utilisez un `cfn-init` script pour le démarrer, en le plaçant après tous les autres scripts.

*Pour plus d'informations sur l'utilisation`cfn-init`, consultez [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html) dans le guide de l'AWS CloudFormation utilisateur.*

## Utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-custom-ami"></a>

Vous avez deux options pour spécifier l'AMI de base à utiliser lorsque de nouvelles instances Amazon EC2 sont lancées dans un groupe Amazon EC2 Auto Scaling :
+ Vous pouvez spécifier une AMI personnalisée de base sur laquelle l' CodeDeploy agent est déjà installé. L'agent étant déjà installé, cette option lance les nouvelles instances Amazon EC2 plus rapidement que l'autre option. Toutefois, cette option augmente le risque d'échec des déploiements initiaux d'instances Amazon EC2, en particulier si CodeDeploy l'agent n'est pas à jour. Si vous choisissez cette option, nous vous recommandons de mettre régulièrement à jour l' CodeDeploy agent dans votre AMI personnalisée de base.
+ Vous pouvez spécifier une AMI de base sur laquelle l' CodeDeploy agent n'est pas installé et l'installer lorsque chaque nouvelle instance est lancée dans un groupe Amazon EC2 Auto Scaling. Bien que cette option lance les nouvelles instances Amazon EC2 plus lentement que l'autre option, elle augmente les chances de réussite des déploiements initiaux d'instances. Cette option utilise la version la plus récente de l'agent CodeDeploy.

# Intégration CodeDeploy à Elastic Load Balancing
<a name="integrations-aws-elastic-load-balancing"></a>

Lors CodeDeploy des déploiements, un équilibreur de charge empêche le trafic Internet d'être acheminé vers des instances lorsqu'elles ne sont pas prêtes, sont en cours de déploiement ou ne sont plus nécessaires dans le cadre d'un environnement. Le rôle exact joué par l'équilibreur de charge dépend toutefois de son utilisation dans le cadre d'un blue/green déploiement ou d'un déploiement sur place.

**Note**  
L'utilisation d'équilibreurs de charge Elastic Load Balancing est obligatoire dans les déploiements et facultative dans blue/green les déploiements sur place.

## Types d'équilibreurs de charge Elastic Load Balancing
<a name="integrations-aws-elastic-load-balancing-types"></a>

Elastic Load Balancing propose trois types d'équilibreurs de charge qui peuvent être utilisés dans les CodeDeploy déploiements : les équilibreurs de charge classiques, les équilibreurs de charge d'application et les équilibreurs de charge réseau.

Classic Load Balancer  
Les itinéraires et les équilibres de charge se situent soit au niveau de la couche de transport (TCP/SSL) or the application layer (HTTP/HTTPS). Il prend en charge un VPC.  
Les équilibreurs de charge classiques ne sont pas pris en charge avec les déploiements Amazon ECS.

Application Load Balancer  
Achemine et équilibre les charges au niveau de la couche d'application (HTTP/HTTPS) et prend en charge le routage basé sur le chemin d'accès. Il peut acheminer les requêtes vers des ports sur chaque instance EC2 ou de conteneur dans votre Virtual Private Cloud (VPC).  
 Les groupes cibles d'Application Load Balancer doivent avoir un type de cible pour les déploiements sur des instances EC2 et `instance` pour `IP` les déploiements Fargate. Pour plus d'informations, consultez la section [Type de cible](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-type). 

Network Load Balancer  
Routes et équilibres de charge au niveau de la couche transport (couche TCP/UDP 4) sur la base des informations d'adresse extraites de l'en-tête du paquet TCP, et non du contenu du paquet. Un équilibreur de charge Network Load Balancer peut traiter les pics de trafic, conserver l'adresse IP source du client et utiliser une adresse IP fixe pendant la durée de vie de l'équilibreur de charge. 

Pour en savoir plus sur les équilibreurs de charge Elastic Load Balancing, consultez les rubriques suivantes :
+ [Qu’est-ce qu’Elastic Load Balancing ?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [Qu'est-ce qu'un équilibreur de charge Classic Load Balancer ?](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)
+ [Qu'est-ce qu'un équilibreur de charge Application Load Balancer ?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [Qu'est-ce qu'un équilibreur de charge Network Load Balancer ?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)

## Déploiements bleu/vert
<a name="integrations-aws-elastic-load-balancing-blue-green"></a>

Le réacheminement du trafic d'instance via un équilibreur de charge Elastic Load Balancing est fondamental pour CodeDeploy blue/green les déploiements. 

Lors d'un blue/green déploiement, l'équilibreur de charge permet d'acheminer le trafic vers les nouvelles instances d'un groupe de déploiement dans lequel la dernière révision de l'application a été déployée (l'environnement de remplacement), conformément aux règles que vous spécifiez, puis bloque le trafic provenant des anciennes instances sur lesquelles la révision précédente de l'application était exécutée (l'environnement d'origine).

Une fois que les instances d'un environnement de remplacement sont enregistrées auprès d'un ou de plusieurs équilibreurs de charge, les instances de l'environnement d'origine sont désenregistrées et, si vous le souhaitez, résiliées.

Pour un blue/green déploiement, vous pouvez spécifier un ou plusieurs groupes cibles Classic Load Balancer, Application Load Balancer ou Network Load Balancer dans votre groupe de déploiement. Vous utilisez la CodeDeploy console ou AWS CLI pour ajouter les équilibreurs de charge à un groupe de déploiement.

Pour plus d'informations sur les équilibreurs de charge dans blue/green les déploiements, consultez les rubriques suivantes :
+ [Configuration d'un équilibreur de charge dans Elastic Load Balancing pour les déploiements CodeDeploy Amazon EC2](deployment-groups-create-load-balancer.md)
+ [Création d'une application pour un blue/green déploiement (console)](applications-create-blue-green.md)
+ [Création d'un groupe de déploiement pour un blue/green déploiement EC2/sur site (console)](deployment-groups-create-blue-green.md)

## Déploiements sur place
<a name="integrations-aws-elastic-load-balancing-in-place"></a>

Lors d'un déploiement sur place, un équilibreur de charge empêche le trafic Internet d'être acheminé vers une instance alors qu'il est déployé sur cette dernière, et ensuite il met de nouveau l'instance à disposition du trafic après la fin du déploiement sur cette dernière.

Si un équilibreur de charge n'est pas utilisé pendant un déploiement sur place, le trafic Internet peut continuer à être dirigé vers une instance au cours du processus de déploiement. Vos clients risquent donc de rencontrer des applications web rompues, incomplètes ou obsolètes. Lorsque vous utilisez un équilibreur de charge Elastic Load Balancing dans le cadre d'un déploiement sur place, les instances d'un groupe de déploiement sont désenregistrées de l'équilibreur de charge, mises à jour avec la dernière révision de l'application, puis réenregistrées auprès de l'équilibreur de charge dans le cadre du même groupe de déploiement une fois le déploiement réussi. CodeDeploy attendra jusqu'à 1 heure pour que l'instance soit saine derrière l'équilibreur de charge. Si l'instance n'est pas marquée comme saine par l'équilibreur de charge pendant la période d'attente, CodeDeploy elle passe à l'instance suivante ou échoue, selon la configuration du déploiement.

Pour un déploiement sur place, vous pouvez spécifier un ou plusieurs Classic Load Balancers, des groupes cibles Application Load Balancer ou des groupes cibles Network Load Balancer. Vous pouvez spécifier les équilibreurs de charge dans le cadre de la configuration du groupe de déploiement, ou vous pouvez utiliser un script fourni par CodeDeploy pour implémenter les équilibreurs de charge.

### Spécifiez un équilibreur de charge de déploiement sur place à l'aide d'un groupe de déploiement
<a name="integrations-aws-elastic-load-balancing-in-place-deployment-group"></a>

Pour ajouter des équilibreurs de charge à un groupe de déploiement, vous utilisez la CodeDeploy console ou AWS CLI. Pour plus d'informations sur la spécification d'un équilibreur de charge dans un groupe de déploiement pour les déploiements sur place, consultez les rubriques suivantes :
+ [Création d'une application pour un déploiement sur place (console)](applications-create-in-place.md)
+ [Création d'un groupe de déploiement pour un déploiement sur place (console)](deployment-groups-create-in-place.md)
+ [Configuration d'un équilibreur de charge dans Elastic Load Balancing pour les déploiements CodeDeploy Amazon EC2](deployment-groups-create-load-balancer.md)

### Spécifiez un équilibreur de charge de déploiement sur place à l'aide d'un script
<a name="integrations-aws-elastic-load-balancing-in-place-script"></a>

Utilisez les étapes de la procédure suivante pour utiliser les scripts de cycle de vie du déploiement et configurer l'équilibrage de charge pour les déploiements sur place.
**Note**  
Vous devez utiliser le CodeDeployDefault. OneAtATime configuration de déploiement uniquement lorsque vous utilisez un script pour configurer un équilibreur de charge pour un déploiement sur place. Les exécutions simultanées ne sont pas prises en charge, et le CodeDeployDefault. OneAtATime ce paramètre garantit une exécution en série des scripts. Pour plus d'informations sur les configurations de déploiement, consultez [Utilisation des configurations de déploiement dans CodeDeploy](deployment-configurations.md).

Dans le référentiel CodeDeploy Samples GitHub, nous fournissons des instructions et des exemples que vous pouvez adapter pour utiliser les équilibreurs de charge CodeDeploy Elastic Load Balancing. Ces référentiels incluent trois exemples de scripts (`register_with_elb.sh`,`deregister_from_elb.sh`, et`common_functions.sh`) qui fournissent tout le code dont vous avez besoin pour démarrer. Il vous suffit de modifier les espaces réservés dans ces trois scripts, puis de faire référence à ces scripts à partir de votre fichier `appspec.yml`.

Pour configurer des déploiements sur place CodeDeploy avec des instances Amazon EC2 enregistrées auprès des équilibreurs de charge Elastic Load Balancing, procédez comme suit :

1. Téléchargez les exemples pour le type d'équilibreur de charge que vous voulez utiliser pour un déploiement sur place :
   + [Equilibreur de charge classique](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)
   + [Application Load Balancer [ou Network Load](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) Balancer (le même script peut être utilisé pour les deux types)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)

1. Assurez-vous que chacune de vos instances Amazon EC2 cibles est installée. AWS CLI 

1. Assurez-vous que chacune de vos instances Amazon EC2 cibles possède un profil d'instance IAM associé avec, au minimum, les autorisations elasticloadbalancing : \$1 et autoscaling : \$1.

1. Incluez dans le répertoire de code source de votre application les scripts d'événement de cycle de vie de déploiement (`register_with_elb.sh`, `deregister_from_elb.sh` et `common_functions.sh`).

1. Dans la `appspec.yml` section pour la révision de l'application, fournissez des instructions CodeDeploy pour exécuter le `register_with_elb.sh` script pendant l'**ApplicationStart**événement et le `deregister_from_elb.sh` script pendant l'**ApplicationStop**événement.

1. Si l'instance fait partie d'un groupe Amazon EC2 Auto Scaling, vous pouvez ignorer cette étape.

   Dans le script `common_functions.sh` :
   + Si vous utilisez le [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb), spécifiez les noms des équilibreurs de charge Elastic Load Balancing et apportez les modifications nécessaires aux autres paramètres de déploiement du fichier. `ELB_LIST=""`
   + Si vous utilisez [Application Load Balancer [ou Network Load](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) Balancer, spécifiez les noms des groupes cibles Elastic Load Balancing `TARGET_GROUP_LIST=""` dans le fichier et apportez les modifications nécessaires aux autres paramètres de déploiement du fichier.

1. Groupez le code source de votre application, le `appspec.yml` et les scripts d'événement de cycle de vie de déploiement dans une révision d'application, puis chargez la révision. Déployez la révision sur les instances Amazon EC2. Pendant le déploiement, les scripts d'événements du cycle de vie du déploiement annuleront l'enregistrement de l'instance Amazon EC2 auprès de l'équilibreur de charge, attendront que la connexion soit épuisée, puis réenregistreront l'instance Amazon EC2 auprès de l'équilibreur de charge une fois le déploiement terminé.