

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.

# Résoudre les problèmes liés à Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling"></a>

**Topics**
+ [Résolution générale des problèmes liés à Amazon EC2 Auto Scaling](#troubleshooting-auto-scaling-general)
+ [« CodeDeployRole  ne vous autorise pas à effectuer des opérations dans le AWS service suivant : AmazonAutoScaling » erreur](#troubleshooting-auto-scaling-permissions-error)
+ [Les instances d'un groupe Amazon EC2 Auto Scaling sont continuellement provisionnées et mises hors service avant qu'une révision ne puisse être déployée](#troubleshooting-auto-scaling-provision-termination-loop)
+ [La mise hors service ou le redémarrage d'une instance Amazon EC2 Auto Scaling peut entraîner l'échec des déploiements](#troubleshooting-auto-scaling-reboot)
+ [Évitez d'associer plusieurs groupes de déploiement à un seul groupe Amazon EC2 Auto Scaling](#troubleshooting-multiple-depgroups)
+ [Les instances EC2 d'un groupe Amazon EC2 Auto Scaling ne se lancent pas et reçoivent l'erreur « Heartbeat Timeout »](#troubleshooting-auto-scaling-heartbeat)
+ [Des hooks de cycle de vie Amazon EC2 Auto Scaling mal adaptés peuvent entraîner l'arrêt ou l'échec des déploiements automatiques vers les groupes Amazon EC2 Auto Scaling](#troubleshooting-auto-scaling-hooks)
+ [Erreur « Le déploiement a échoué car aucune instance n'a été trouvée pour votre groupe de déploiement »](#troubleshooting-deployment-failed-because-no-instances-found)

## Résolution générale des problèmes liés à Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling-general"></a>

Les déploiements vers des instances EC2 d'un groupe Amazon EC2 Auto Scaling peuvent échouer pour les raisons suivantes :
+ **Amazon EC2 Auto Scaling lance et met fin en permanence aux instances EC2.** Si vous CodeDeploy ne parvenez pas à déployer automatiquement la révision de votre application, Amazon EC2 Auto Scaling lance et arrête en permanence les instances EC2. 

  Dissociez le groupe Amazon EC2 Auto Scaling du groupe de CodeDeploy déploiement ou modifiez la configuration de votre groupe Amazon EC2 Auto Scaling afin que le nombre d'instances souhaité corresponde au nombre actuel d'instances (empêchant ainsi Amazon EC2 Auto Scaling de lancer d'autres instances EC2). Pour plus d'informations, consultez notre section [Modifiez les paramètres du groupe de déploiement avec CodeDeploy](deployment-groups-edit.md) [Manual Scaling for Amazon EC2 Auto](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html) Scaling.
+ **L' CodeDeploy agent ne répond pas.** L' CodeDeploy agent risque de ne pas être installé si les scripts d'initialisation (par exemple, les scripts cloud-init) qui s'exécutent immédiatement après le lancement ou le démarrage d'une instance EC2 mettent plus d'une heure à s'exécuter. CodeDeploy dispose d'un délai d'une heure pour que l' CodeDeploy agent réponde aux déploiements en attente. Pour résoudre ce problème, placez vos scripts d'initialisation dans votre révision d'application CodeDeploy.
+ **Une instance EC2 d'un groupe Amazon EC2 Auto Scaling redémarre lors d'un déploiement.** Votre déploiement peut échouer si une instance EC2 est redémarrée pendant un déploiement ou si l' CodeDeploy agent est arrêté pendant le traitement d'une commande de déploiement. Pour de plus amples informations, veuillez consulter [La mise hors service ou le redémarrage d'une instance Amazon EC2 Auto Scaling peut entraîner l'échec des déploiements](#troubleshooting-auto-scaling-reboot).
+ **Plusieurs révisions d'applications sont déployées simultanément sur la même instance EC2 dans un groupe Amazon EC2 Auto Scaling.** Le déploiement simultané de plusieurs révisions d'application sur la même instance EC2 d'un groupe Amazon EC2 Auto Scaling peut échouer si l'un des déploiements comporte des scripts qui s'exécutent pendant plus de quelques minutes. Ne déployez pas plusieurs révisions d'applications sur les mêmes instances EC2 d'un groupe Amazon EC2 Auto Scaling.
+ **Un déploiement échoue pour les nouvelles instances EC2 lancées dans le cadre d'un groupe Amazon EC2 Auto Scaling.** Dans ce scénario, l'exécution des scripts dans un déploiement peut empêcher le lancement d'instances EC2 dans le groupe Amazon EC2 Auto Scaling. (Les autres instances EC2 du groupe Amazon EC2 Auto Scaling peuvent sembler fonctionner normalement.) Pour résoudre ce problème, veillez à ce que tous les autres scripts se terminent en premier :
  + **CodeDeploy l'agent n'est pas inclus dans votre AMI** : si vous utilisez la **cfn-init** commande pour installer l' CodeDeploy agent lors du lancement d'une nouvelle instance, placez le script d'installation de l'agent à la fin de la `cfn-init` section de votre CloudFormation modèle. 
  + **CodeDeploy l'agent est inclus dans votre AMI** : configurez l'AMI de manière à ce que l'agent soit dans son `Stopped` état lorsque l'instance est créée, puis incluez un script pour démarrer l'agent comme dernière étape dans votre bibliothèque de `cfn-init` scripts. 

## « CodeDeployRole  ne vous autorise pas à effectuer des opérations dans le AWS service suivant : AmazonAutoScaling » erreur
<a name="troubleshooting-auto-scaling-permissions-error"></a>

 Les déploiements qui utilisent un groupe Auto Scaling créé à l'aide d'un modèle de lancement nécessitent les autorisations suivantes. Elles s'ajoutent aux autorisations accordées par la politique `AWSCodeDeployRole` AWS gérée. 
+  `EC2:RunInstances` 
+  `EC2:CreateTags` 
+  `iam:PassRole` 

 Il se peut que vous receviez cette erreur si vous ne disposez pas ces autorisations. Pour plus d'informations[Tutoriel : CodeDeploy À utiliser pour déployer une application dans un groupe Auto Scaling](tutorials-auto-scaling-group.md), consultez [Création d'un modèle de lancement pour un groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) et [Permissions](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html#launch-templates-permissions) dans le guide de l'*utilisateur Amazon EC2 Auto Scaling*.

## Les instances d'un groupe Amazon EC2 Auto Scaling sont continuellement provisionnées et mises hors service avant qu'une révision ne puisse être déployée
<a name="troubleshooting-auto-scaling-provision-termination-loop"></a>

Dans certains cas, une erreur peut empêcher un déploiement réussi sur des instances nouvellement provisionnées dans un groupe Amazon EC2 Auto Scaling. En conséquence, aucune instance n'est saine et aucun déploiement n'est réussi. Le déploiement ne pouvant pas être exécuté ou terminé, les instances sont terminées peu de temps après leur création. La configuration du groupe Amazon EC2 Auto Scaling entraîne ensuite le provisionnement d'un autre lot d'instances pour tenter de répondre aux exigences minimales en matière d'hôtes sains. Ce lot est également terminé et le cycle se poursuit.

Les causes possibles incluent :
+ Échec des vérifications de l'état du groupe Amazon EC2 Auto Scaling.
+ Erreur dans la révision d'application.

Pour résoudre ce problème, suivez les étapes suivantes :

1. Créez manuellement une instance EC2 qui ne fait pas partie du groupe Amazon EC2 Auto Scaling. Balisez l'instance avec une balise d'instance EC2 unique.

1. Ajoutez la nouvelle instance au groupe de déploiement affecté. 

1. Déployez une nouvelle révision d'application sans erreur dans le groupe de déploiement.

Cela invite le groupe Amazon EC2 Auto Scaling à déployer la révision de l'application sur les futures instances du groupe Amazon EC2 Auto Scaling. 

**Note**  
Après avoir confirmé que les déploiements sont réussis, supprimez l'instance que vous avez créée afin d'éviter des frais permanents sur votre AWS compte.

## La mise hors service ou le redémarrage d'une instance Amazon EC2 Auto Scaling peut entraîner l'échec des déploiements
<a name="troubleshooting-auto-scaling-reboot"></a>

Si une instance EC2 est lancée via Amazon EC2 Auto Scaling, puis qu'elle est arrêtée ou redémarrée, les déploiements vers cette instance peuvent échouer pour les raisons suivantes :
+ Au cours d'un déploiement en cours, un événement de scale-in ou tout autre événement de terminaison entraîne le détachement de l'instance du groupe Amazon EC2 Auto Scaling, puis son arrêt. Comme le déploiement ne peut pas être terminé, il échoue.
+ L'instance est redémarrée, mais son démarrage prend plus de cinq minutes. CodeDeploy traite cela comme un délai d'attente. Le service considère tous les déploiements actuels et futurs sur l'instance comme ayant échoué.

Pour résoudre ce problème :
+ En général, assurez-vous que tous les déploiements sont terminés avant la mise hors service ou le redémarrage de l'instance. Assurez-vous que tous les déploiements commencent après le démarrage ou le redémarrage de l'instance. 
+ Les déploiements peuvent échouer si vous spécifiez une Amazon Machine Image (AMI) basée sur Windows Server pour une configuration Amazon EC2 Auto Scaling et si vous utilisez le service EC2 Config pour définir le nom d'ordinateur de l'instance. Pour résoudre ce problème, dans l'AMI de base de Windows Server, sous l'onglet **Général** des **propriétés du service EC2**, désactivez l'option **Définir le nom de l'ordinateur**. Une fois que vous avez décoché cette case, ce comportement est désactivé pour toutes les nouvelles instances Amazon EC2 Auto Scaling de Windows Server lancées avec cette AMI de base Windows Server. Pour les instances Amazon EC2 Auto Scaling de Windows Server sur lesquelles ce comportement est activé, il n'est pas nécessaire de décocher cette case. Il vous suffit de redéployer les déploiements ayant échoué sur ces instances après qu'elles ont été redémarrées.

## Évitez d'associer plusieurs groupes de déploiement à un seul groupe Amazon EC2 Auto Scaling
<a name="troubleshooting-multiple-depgroups"></a>

Il est recommandé d'associer un seul groupe de déploiement à chaque groupe Amazon EC2 Auto Scaling. 

En effet, si Amazon EC2 Auto Scaling augmente le volume d'une instance comportant des hooks associés à plusieurs groupes de déploiement, il envoie des notifications pour tous les hooks en une seule fois. Cela entraîne le commencement simultané de plusieurs déploiements sur chaque instance. Lorsque plusieurs déploiements envoient des commandes à l' CodeDeploy agent en même temps, le délai de cinq minutes entre un événement du cycle de vie et le début du déploiement ou la fin de l'événement du cycle de vie précédent peut être atteint. Le cas échéant, le déploiement est mis en échec, même si un processus de déploiement se déroule par ailleurs sans difficulté. 

**Note**  
Le délai d'expiration par défaut d'un script dans un événement du cycle de vie est de 30 minutes. Vous pouvez remplacer le délai d'expiration par une autre valeur dans le AppSpec fichier. Pour de plus amples informations, veuillez consulter [Ajouter un AppSpec fichier pour un déploiement EC2/sur site](application-revisions-appspec-file.md#add-appspec-file-server).

Il n'est pas possible de contrôler l'ordre dans lequel les déploiements se produisent si plusieurs déploiements tentent de s'exécuter en même temps. 

Enfin, si le déploiement sur une instance échoue, Amazon EC2 Auto Scaling met immédiatement fin à l'instance. Lorsque cette première instance s'arrête, les autres déploiements en cours d’exécution échouent progressivement. Étant donné que l' CodeDeploy agent CodeDeploy dispose d'un délai d'une heure pour répondre aux déploiements en attente, le délai d'expiration de chaque instance peut prendre jusqu'à 60 minutes. 

Pour plus d'informations sur Amazon EC2 Auto Scaling, [consultez Under the hood CodeDeploy  : and Auto Scaling integration](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/).

## Les instances EC2 d'un groupe Amazon EC2 Auto Scaling ne se lancent pas et reçoivent l'erreur « Heartbeat Timeout »
<a name="troubleshooting-auto-scaling-heartbeat"></a>

Il se peut qu'un groupe Amazon EC2 Auto Scaling ne parvienne pas à lancer de nouvelles instances EC2, générant un message similaire au suivant : 

`Launching a new EC2 instance <instance-Id>. Status Reason: Instance failed to complete user's Lifecycle Action: Lifecycle Action with token<token-Id> was abandoned: Heartbeat Timeout`. 

Ce message indique généralement l'une des situations suivantes : 
+ Le nombre maximum de déploiements simultanés associés à un AWS compte a été atteint. Pour plus d'informations sur les limites, consultez [CodeDeploy quotas](limits.md). 
+ Le groupe Auto Scaling a essayé de lancer trop d'instances EC2 trop rapidement. Les appels d'API vers [RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html)ou [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)pour chaque nouvelle instance ont été limités.
+ Une application CodeDeploy a été supprimée avant que les groupes de déploiement associés ne soient mis à jour ou supprimés.

  Lorsque vous supprimez une application ou un groupe de déploiement, vous CodeDeploy tentez de nettoyer tous les hooks Amazon EC2 Auto Scaling qui y sont associés, mais certains hooks peuvent subsister. Si vous exécutez une commande pour supprimer un groupe de déploiement, les hooks restants sont renvoyés dans la sortie. Toutefois, si vous exécutez une commande pour supprimer une application, les hooks restants n'apparaissent pas dans la sortie.

  Par conséquent, la bonne pratique consiste à supprimer tous les groupes de déploiement associés à une application avant de supprimer l'application. Vous pouvez utiliser la sortie de la commande pour identifier les hooks du cycle de vie qui doivent être supprimés manuellement. 

Si vous recevez un message d'erreur « Heartbeat Timeout », vous pouvez déterminer si les hooks de cycle de vie restants en sont la cause et résoudre le problème en procédant comme suit :

1. Effectuez l’une des actions suivantes :
   + Appelez la [delete-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-group.html)commande pour supprimer le groupe de déploiement associé au groupe Auto Scaling à l'origine du délai d'expiration du rythme cardiaque.
   + Appelez la [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)commande avec une liste vide non nulle de noms de groupes Auto Scaling pour détacher tous les hooks du cycle de vie Auto CodeDeploy Scaling gérés par Auto Scaling.

     Par exemple, entrez la AWS CLI commande suivante :

     `aws deploy update-deployment-group --application-name my-example-app --current-deployment-group-name my-deployment-group --auto-scaling-groups`

     Autre exemple, si vous utilisez l' CodeDeploy API avec Java, appelez `UpdateDeploymentGroup` et définissez `autoScalingGroups` sur`new ArrayList<String>()`. Cela permet `autoScalingGroups` de définir une liste vide et de supprimer la liste existante. Ne l'utilisez pas`null`, ce qui est le cas par défaut, car cela reste tel `autoScalingGroups` quel, ce qui n'est pas ce que vous voulez.

   Examinez la sortie de l'appel. Si la sortie contient une `hooksNotCleanedUp` structure avec une liste des hooks du cycle de vie d'Amazon EC2 Auto Scaling, il reste des hooks du cycle de vie. 

1. Appelez la [describe-lifecycle-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)commande en spécifiant le nom du groupe Amazon EC2 Auto Scaling associé aux instances EC2 qui n'ont pas pu être lancées. Dans le résultat, recherchez l'un des éléments suivants :
   + Les noms des hooks du cycle de vie d'Amazon EC2 Auto Scaling correspondent à `hooksNotCleanedUp` la structure que vous avez identifiée à l'étape 1.
   + Noms des hooks du cycle de vie Amazon EC2 Auto Scaling contenant le nom du groupe de déploiement associé au groupe Auto Scaling défaillant.
   + Noms des hooks du cycle de vie d'Amazon EC2 Auto Scaling susceptibles d'avoir provoqué le délai d'expiration du déploiement. CodeDeploy 

1. Si un hook appartient à l'une des catégories répertoriées à l'étape 2, appelez la [delete-lifecycle-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)commande pour le supprimer. Spécifiez le groupe Amazon EC2 Auto Scaling et le hook du cycle de vie dans l'appel.
**Important**  
Supprimez uniquement les hooks qui posent problème, comme indiqué à l'étape 2. Si vous supprimez des hooks viables, vos déploiements risquent d' CodeDeploy échouer ou de ne pas être en mesure de déployer les révisions de votre application sur des instances EC2 redimensionnées.

1. Appelez la [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)commande [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)ou avec les noms de groupes Auto Scaling souhaités. CodeDeployréinstalle les hooks Auto Scaling avec de nouveaux. UUIDs

**Note**  
Si vous dissociez un groupe Auto Scaling d'un groupe de CodeDeploy déploiement, les déploiements en cours vers le groupe Auto Scaling risquent d'échouer et les nouvelles instances EC2 redimensionnées par le groupe Auto Scaling ne recevront pas les révisions de votre application. CodeDeploy Pour que Auto Scaling fonctionne à nouveau CodeDeploy, vous devez rattacher le groupe Auto Scaling au groupe de déploiement et appeler un nouveau groupe `CreateDeployment` pour démarrer un déploiement à l'échelle du parc.

## Des hooks de cycle de vie Amazon EC2 Auto Scaling mal adaptés peuvent entraîner l'arrêt ou l'échec des déploiements automatiques vers les groupes Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling-hooks"></a>

Amazon EC2 Auto Scaling CodeDeploy et utilisez des hooks de cycle de vie pour déterminer quelles révisions d'applications doivent être déployées sur quelles instances EC2 après leur lancement dans les groupes Amazon EC2 Auto Scaling. Les déploiements automatiques peuvent s'arrêter ou échouer si les hooks du cycle de vie et les informations les concernant ne correspondent pas exactement dans Amazon EC2 Auto Scaling et. CodeDeploy

Si les déploiements vers un groupe Amazon EC2 Auto Scaling échouent, vérifiez si les noms des crochets du cycle de vie dans Amazon EC2 Auto Scaling correspondent. CodeDeploy Si ce n'est pas le cas, utilisez ces appels de AWS CLI commande.

Tout d'abord, obtenez la liste des noms des hooks du cycle de vie pour le groupe Amazon EC2 Auto Scaling et le groupe de déploiement :

1. Appelez la [describe-lifecycle-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)commande en spécifiant le nom du groupe Amazon EC2 Auto Scaling associé au groupe de déploiement dans. CodeDeploy Dans la sortie, dans la liste `LifecycleHooks`, notez chaque valeur `LifecycleHookName`.

1. Appelez la [get-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-group.html)commande en spécifiant le nom du groupe de déploiement associé au groupe Amazon EC2 Auto Scaling. Dans la sortie, dans la `autoScalingGroups` liste, recherchez chaque élément dont le nom correspond au nom du groupe Amazon EC2 Auto Scaling, puis notez la valeur `hook` correspondante.

Comparez alors les deux ensembles de noms de hooks de cycle de vie. S'ils correspondent exactement, caractère par caractère, le problème est ailleurs. Vous pouvez essayer d'autres étapes de dépannage d'Amazon EC2 Auto Scaling décrites ailleurs dans cette section.

Toutefois, si les deux ensembles de noms de hooks de cycle de vie ne correspondent pas exactement, caractère par caractère, procédez comme suit :

1. Si des noms de hooks de cycle de vie figurent dans la sortie de la commande **describe-lifecycle-hooks** qui ne figurent pas également dans la sortie de la commande **get-deployment-group**, procédez comme suit :

   1. Pour chaque nom de hook du cycle de vie indiqué dans la sortie de **describe-lifecycle-hooks** commande, appelez la [delete-lifecycle-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)commande.

   1. Appelez la [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)commande en spécifiant le nom du groupe Amazon EC2 Auto Scaling d'origine. CodeDeploy crée de nouveaux hooks de cycle de vie de remplacement dans le groupe Amazon EC2 Auto Scaling et associe les crochets de cycle de vie au groupe de déploiement. Les déploiements automatiques devraient maintenant reprendre à mesure que de nouvelles instances sont ajoutées au groupe Amazon EC2 Auto Scaling. 

1. Si des noms de hooks de cycle de vie figurent dans la sortie de la commande **get-deployment-group**, mais ne figurent pas dans la sortie de la commande **describe-lifecycle-hooks**, procédez comme suit :

   1. Appelez la [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)commande, mais ne spécifiez pas le nom du groupe Amazon EC2 Auto Scaling d'origine.

   1. Appelez à nouveau la **update-deployment-group** commande, mais spécifiez cette fois le nom du groupe Amazon EC2 Auto Scaling d'origine. CodeDeploy recrée les hooks du cycle de vie manquants dans le groupe Amazon EC2 Auto Scaling. Les déploiements automatiques devraient maintenant reprendre à mesure que de nouvelles instances sont ajoutées au groupe Amazon EC2 Auto Scaling.

Une fois que les deux ensembles de noms de hooks du cycle de vie correspondent exactement, caractère par caractère, les révisions de l'application doivent être déployées à nouveau, mais uniquement sur les nouvelles instances au fur et à mesure qu'elles sont ajoutées au groupe Amazon EC2 Auto Scaling. Les déploiements ne sont pas effectués automatiquement sur des instances qui font déjà partie du groupe Amazon EC2 Auto Scaling.

## Erreur « Le déploiement a échoué car aucune instance n'a été trouvée pour votre groupe de déploiement »
<a name="troubleshooting-deployment-failed-because-no-instances-found"></a>

Lisez cette section si le message d' CodeDeploy erreur suivant s'affiche :

`The deployment failed because no instances were found for your deployment group. Check your deployment group settings to make sure the tags for your EC2 instances or Auto Scaling groups correctly identify the instances you want to deploy to, and then try again.`

Les causes possibles de cette erreur sont les suivantes :

1. Les paramètres de votre groupe de déploiement incluent des balises incorrectes pour les instances EC2, les instances sur site ou les groupes Auto Scaling. Pour résoudre ce problème, vérifiez que vos balises sont correctes, puis redéployez votre application.

1. Votre flotte s'est agrandie après le début du déploiement. Dans ce scénario, vous voyez des instances saines dans l'`InService`état de votre flotte, mais vous voyez également l'erreur ci-dessus. Pour résoudre ce problème, redéployez votre application.

1. Votre groupe Auto Scaling n'inclut aucune instance présente dans `InService` cet état. Dans ce scénario, lorsque vous essayez d'effectuer un déploiement à l'échelle du parc, le déploiement échoue avec le message d'erreur ci-dessus car il CodeDeploy faut qu'au moins une instance soit dans cet état. `InService` Il existe de nombreuses raisons pour lesquelles vous n'avez peut-être aucune instance dans l'`InService`État. Quelques-uns d'entre eux incluent :
   + Vous avez planifié (ou configuré manuellement) la taille du groupe Auto Scaling comme suit `0` :
   + Auto Scaling a détecté des instances EC2 défectueuses (par exemple, les instances EC2 présentaient des défaillances matérielles), les a donc toutes annulées, n'en laissant aucune dans l'`InService`état.
   + Au cours d'un événement de `0` scale-out de à`1`, a CodeDeploy déployé une révision précédemment réussie (appelée *dernière révision réussie*) qui était devenue défectueuse depuis le dernier déploiement. Cela a entraîné l'échec du déploiement sur l'instance redimensionnée, ce qui a entraîné l'annulation de l'instance par Auto Scaling, ne laissant aucune instance dans cet état. `InService`

     Si vous constatez qu'aucune instance n'est présente dans `InService` cet état, résolvez le problème comme décrit dans la procédure suivante,[To troubleshoot the error if there are no instances in the InService state](#ToTroubleshootIfNoInServiceInstances).

**Pour résoudre l'erreur s'il n'y a aucune instance dans l'état InService**

1. Dans la console Amazon EC2, vérifiez le paramètre **Capacité souhaitée.** S'il est égal à zéro, définissez-le sur un nombre positif. Attendez que l'instance existe`InService`, ce qui signifie que le déploiement a réussi. Vous avez résolu le problème et pouvez ignorer les étapes restantes de cette procédure de dépannage. Pour plus d'informations sur la définition du paramètre **Desired** Capacity, consultez la section [Setting capacity limits on your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html) dans le manuel *Amazon EC2 Auto Scaling User Guide*.

1. Si Auto Scaling continue d'essayer de lancer de nouvelles instances EC2 pour atteindre la capacité souhaitée mais ne parvient jamais à le faire évoluer, cela est généralement dû à un échec du hook du cycle de vie d'Auto Scaling. Résolvez ce problème comme suit :

   1. Pour savoir quel événement Auto Scaling Lifecycle Hook échoue, consultez la section [Vérification d'une activité de dimensionnement pour un groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) dans le guide de l'utilisateur Amazon EC2 Auto Scaling.

   1. Si le nom du hook défaillant est`CodeDeploy-managed-automatic-launch-deployment-hook-DEPLOYMENT_GROUP_NAME`, accédez au groupe de déploiement CodeDeploy, recherchez le groupe de déploiement et recherchez le déploiement ayant échoué lancé par Auto Scaling. Déterminez ensuite pourquoi le déploiement a échoué.

   1. Si vous comprenez pourquoi le déploiement a échoué (par exemple, des CloudWatch alarmes se sont produites) et que vous pouvez résoudre le problème sans modifier la révision, faites-le maintenant.

   1. Si, après enquête, vous déterminez que CodeDeploy la *dernière révision réussie* n'est plus saine et qu'il n'y a aucune instance saine dans votre groupe Auto Scaling, vous êtes dans un scénario de blocage du déploiement. Pour résoudre ce problème, vous devez corriger la mauvaise CodeDeploy révision en supprimant temporairement le hook CodeDeploy du cycle de vie du groupe Auto Scaling, puis en le réinstallant et en redéployant une nouvelle (bonne) révision. Pour obtenir des instructions, consultez :
      + [To fix the deployment deadlock issue (CLI)](#ToFixDeployDeadlockCLI)
      + [To fix the deployment deadlock issue (console)](#ToFixDeployDeadlockConsole)

**Pour résoudre le problème de blocage du déploiement (CLI)**

1. (Facultatif) Bloquez les CI/CD pipelines à l'origine de l' CodeDeploy erreur afin d'éviter des déploiements inattendus pendant que vous résolvez ce problème.

1. Prenez note de votre **DesiredCapacity**paramètre Auto Scaling actuel :

   `aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name ASG_NAME`

   Vous devrez peut-être revenir à ce chiffre à la fin de cette procédure.

1. Définissez le **DesiredCapacity**paramètre Auto Scaling sur`1`. Ceci est facultatif si la capacité souhaitée était supérieure `1` à la capacité initiale. En le réduisant à`1`, l'instance mettra moins de temps à provisionner et à déployer ultérieurement, ce qui accélère le dépannage. Si la capacité souhaitée par Auto Scaling était initialement définie sur`0`, vous devez l'augmenter à`1`. Cela est obligatoire. 

   aws autoscaling set-desired-capacity -- auto-scaling-group-name *ASG\$1NAME* --desired-capacity 1 
**Note**  
Les étapes restantes de cette procédure supposent que vous avez défini votre valeur **DesiredCapacity**sur`1`.

   À ce stade, Auto Scaling tente d'effectuer une mise à l'échelle jusqu'à une seule instance. Ensuite, comme le hook CodeDeploy ajouté est toujours présent, CodeDeploy essaie de se déployer ; le déploiement échoue ; Auto Scaling annule l'instance ; et Auto Scaling essaie de relancer une instance pour atteindre la capacité souhaitée d'une instance, mais échoue à nouveau. Vous êtes dans une boucle d'annulation/relance.

1. Désenregistrez le groupe Auto Scaling du groupe de déploiement :
**Avertissement**  
La commande suivante lancera une nouvelle instance EC2 sans logiciel. Avant d'exécuter la commande, assurez-vous qu'une `InService` instance Auto Scaling n'exécutant aucun logiciel est acceptable. Par exemple, assurez-vous que l'équilibreur de charge associé à l'instance n'envoie pas de trafic vers cet hôte sans logiciel.
**Important**  
Utilisez la CodeDeploy commande ci-dessous pour retirer le crochet. Ne supprimez pas le crochet via le service Auto Scaling, car le retrait ne sera pas reconnu par CodeDeploy. 

   `aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups`

   Après avoir exécuté cette commande, voici ce qui se produit :

   1. CodeDeploy désenregistre le groupe Auto Scaling du groupe de déploiement.

   1. CodeDeploy supprime le hook du cycle de vie Auto Scaling du groupe Auto Scaling.

   1. Le hook à l'origine de l'échec du déploiement n'étant plus présent, Auto Scaling annule l'instance EC2 existante et en lance immédiatement une nouvelle pour l'adapter à la capacité souhaitée. La nouvelle instance devrait bientôt passer à `InService` l'état. La nouvelle instance n'inclut aucun logiciel.

1. Attendez que l'instance EC2 entre dans l'`InService`état. Pour vérifier son état, utilisez la commande suivante :

   `aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ASG_NAME --query AutoScalingGroups[0].Instances[*].LifecycleState`

1. Ajoutez le hook à l'instance EC2 :
**Important**  
Utilisez la CodeDeploy commande ci-dessous pour ajouter le crochet. N'utilisez pas le service Auto Scaling pour ajouter le hook, car l'ajout ne sera pas reconnu par CodeDeploy. 

   `aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups ASG_NAME`

   Après avoir exécuté cette commande, voici ce qui se produit :

   1. CodeDeploy réinstalle le hook du cycle de vie Auto Scaling sur l'instance EC2

   1. CodeDeploy réenregistre le groupe Auto Scaling auprès du groupe de déploiement.

1. Créez un déploiement à l'échelle du parc à l'aide de l'Amazon S3 ou de GitHub la version dont vous savez qu'elle est saine et que vous souhaitez utiliser.

   Par exemple, si la révision est un fichier .zip dans un compartiment Amazon S3 appelé `my-revision-bucket` avec une clé d'objet de`httpd_app.zip`, entrez la commande suivante :

   `aws deploy create-deployment --application-name APPLICATION_NAME --deployment-group-name DEPLOYMENT_GROUP_NAME --revision "revisionType=S3,s3Location={bucket=my-revision-bucket,bundleType=zip,key=httpd_app.zip}"`

   Comme il existe désormais une `InService` instance dans le groupe Auto Scaling, ce déploiement devrait fonctionner et le message d'erreur « *Le déploiement a échoué car aucune instance n'a été trouvée pour votre groupe de déploiement* » ne devrait plus s'afficher.

1. Une fois le déploiement réussi, redimensionnez votre groupe Auto Scaling à sa capacité initiale, si vous l'avez déjà redimensionné :

   `aws autoscaling set-desired-capacity --auto-scaling-group-name ASG_NAME --desired-capacity ORIGINAL_CAPACITY`

**Pour résoudre le problème de blocage du déploiement (console)**

1. (Facultatif) Bloquez les CI/CD pipelines à l'origine de l' CodeDeploy erreur afin d'éviter des déploiements inattendus pendant que vous résolvez ce problème.

1. Accédez à la console Amazon EC2 et prenez note de votre paramètre de **capacité Auto Scaling Desired.** Vous devrez peut-être revenir à ce chiffre à la fin de cette procédure. Pour plus d'informations sur la recherche de ce paramètre, consultez la section [Définition des limites de capacité sur votre groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html).

1. Définissez le nombre d'instances EC2 souhaité comme suit : `1`

   Ceci est facultatif si la capacité souhaitée était supérieure `1` à la capacité initiale. En le réduisant à`1`, l'instance mettra moins de temps à provisionner et à déployer ultérieurement, ce qui accélère le dépannage. Si votre **capacité Auto Scaling Desired** était initialement définie sur`0`, vous devez l'augmenter à`1`. Cela est obligatoire. 
**Note**  
Les étapes restantes de cette procédure supposent que vous avez défini **la capacité souhaitée** sur`1`.

   1. Ouvrez la console Amazon EC2 à l'adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/), puis sélectionnez **Auto Scaling Groups** dans le volet de navigation.

   1. Choisissez la région appropriée.

   1. Accédez au groupe Auto Scaling problématique.

   1. Dans **Détails du groupe**, choisissez **Modifier**.

   1. Réglez **la capacité souhaitée** sur**1**.

   1. Choisissez **Mettre à jour**.

1. Désenregistrez le groupe Auto Scaling du groupe de déploiement :
**Avertissement**  
Les sous-étapes suivantes lanceront une nouvelle instance EC2 sans logiciel. Avant d'exécuter la commande, assurez-vous qu'une `InService` instance Auto Scaling n'exécutant aucun logiciel est acceptable. Par exemple, assurez-vous que l'équilibreur de charge associé à l'instance n'envoie pas de trafic vers cet hôte sans logiciel.

   1. Ouvrez la CodeDeploy console à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

   1. Choisissez la région appropriée.

   1. Dans le volet de navigation, choisissez **Applications**.

   1. Choisissez le nom de votre CodeDeploy application.

   1. Choisissez le nom de votre groupe CodeDeploy de déploiement.

   1. Choisissez **Modifier**.

   1. Dans **Configuration de l'environnement**, désélectionnez les groupes **Amazon EC2 Auto Scaling**.
**Note**  
La console ne vous permet pas d'enregistrer la configuration si aucune configuration d'environnement n'est définie. Pour contourner cette vérification, ajoutez temporairement un tag de `EC2` ou `On-premises` dont vous savez qu'il ne sera résolu à aucun hôte. Pour ajouter une balise, sélectionnez des **instances Amazon EC2** ou une **instance sur site**, puis ajoutez une balise **Key** of or. **EC2** **On-premises** Vous pouvez laisser le tag **Value** vide.

   1. Sélectionnez **Enregistrer les modifications**.

      Une fois ces sous-étapes terminées, voici ce qui se produit :

      1. CodeDeploy désenregistre le groupe Auto Scaling du groupe de déploiement.

      1. CodeDeploy supprime le hook du cycle de vie Auto Scaling du groupe Auto Scaling.

      1. Le hook à l'origine de l'échec du déploiement n'étant plus présent, Auto Scaling annule l'instance EC2 existante et en lance immédiatement une nouvelle pour l'adapter à la capacité souhaitée. La nouvelle instance devrait bientôt passer à `InService` l'état. La nouvelle instance n'inclut aucun logiciel.

1. Attendez que l'instance EC2 entre dans l'`InService`état. Pour vérifier son état :

   1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Dans le panneau de navigation, choisissez **Groupes Auto Scaling**.

   1. Choisissez votre groupe Auto Scaling.

   1. Dans le volet de contenu, choisissez l'onglet **Instance Management**.

   1. Sous **Instances**, assurez-vous que la colonne **Lifecycle** est indiquée à **InService**côté de l'instance.

1. Réenregistrez le groupe Auto Scaling auprès du groupe de CodeDeploy déploiement en utilisant la même méthode que celle que vous avez utilisée pour le supprimer :

   1. Ouvrez la CodeDeploy console à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

   1. Choisissez la région appropriée.

   1. Dans le volet de navigation, choisissez **Applications**.

   1. Choisissez le nom de votre CodeDeploy application.

   1. Choisissez le nom de votre groupe CodeDeploy de déploiement.

   1. Choisissez **Modifier**.

   1. Dans **Configuration de l'environnement**, sélectionnez les groupes **Amazon EC2 Auto Scaling** et sélectionnez votre groupe Auto Scaling dans la liste.

   1. Sous Instances **Amazon EC2 ou Instances** **sur site**, recherchez le tag que vous avez ajouté et supprimez-le.

   1. Décochez la case à côté des instances **Amazon EC2** **ou** des instances sur site. 

   1. Sélectionnez **Enregistrer les modifications**. 

   Cette configuration réinstalle le hook du cycle de vie dans le groupe Auto Scaling.

1. Créez un déploiement à l'échelle du parc à l'aide de l'Amazon S3 ou de GitHub la version dont vous savez qu'elle est saine et que vous souhaitez utiliser. 

   Par exemple, si la révision est un fichier .zip dans un compartiment Amazon S3 appelé `my-revision-bucket` avec une clé d'objet de`httpd_app.zip`, procédez comme suit :

   1. Dans la CodeDeploy console, sur la page **Groupe de déploiement**, choisissez **Créer un déploiement**.

   1. Pour **Type de révision**, choisissez **Mon application est stockée dans Amazon S3**.

   1. Pour **Emplacement de la révision**, sélectionnez`s3://my-revision-bucket/httpd_app.zip`.

   1. Pour le **type de fichier de révision**, sélectionnez`.zip`.

   1. Choisissez **Créer un déploiement**.

   Comme il existe désormais une `InService` instance dans le groupe Auto Scaling, ce déploiement devrait fonctionner et le message d'erreur « *Le déploiement a échoué car aucune instance n'a été trouvée pour votre groupe de déploiement* » ne devrait plus s'afficher.

1. Une fois le déploiement réussi, redimensionnez votre groupe Auto Scaling à sa capacité initiale, si vous l'avez déjà redimensionné :

   1. Ouvrez la console Amazon EC2 à l'adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/), puis sélectionnez **Auto Scaling Groups** dans le volet de navigation.

   1. Choisissez la région appropriée.

   1. Accédez à votre groupe Auto Scaling.

   1. Dans **Détails du groupe**, choisissez **Modifier**.

   1. **Rétablissez la capacité souhaitée** à sa valeur initiale.

   1. Choisissez **Mettre à jour**.