Résolution des problèmes liés à votre environnement Elastic Beanstalk - AWS Elastic Beanstalk

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ésolution des problèmes liés à votre environnement Elastic Beanstalk

Ce chapitre fournit des conseils pour résoudre les problèmes liés à votre environnement Elastic Beanstalk. Il fournit les informations suivantes.

  • Présentation de l'outil AWS Systems Manager, ainsi qu'une procédure pour exécuter un runbook Elastic Beanstalk prédéfini qui fournit des étapes de dépannage et des recommandations.

  • Des conseils généraux sur les mesures que vous pouvez prendre et les ressources que vous pouvez consulter si l'état de votre environnement se dégrade.

  • Des conseils de résolution des problèmes plus spécifiques par catégorie de sujet.

Note

Si l'état de votre environnement passe au rouge, nous vous recommandons d'utiliser d'abord l'outil AWS Systems Manager qui inclut des runbooks prédéfinis pour résoudre les problèmes liés à Elastic Beanstalk. Pour en savoir plus, consultez le Utilisation de l'outil Systems Manager.

Utilisation des AWS Systems Manager runbooks Elastic Beanstalk

Vous pouvez utiliser Systems Manager pour résoudre les problèmes de vos environnements Elastic Beanstalk. Pour vous aider à démarrer rapidement, Systems Manager fournit des runbooks d'automatisation prédéfinis pour Elastic Beanstalk. Un runbook d'automatisation est un type de document Systems Manager qui définit les actions à effectuer sur les instances de votre environnement et d'autres ressources AWS .

Le document AWSSupport-TroubleshootElasticBeanstalk est un runbook d'automatisation conçu pour aider à identifier un certain nombre de problèmes courants susceptibles de dégrader votre environnement Elastic Beanstalk. Pour ce faire, il vérifie les composants de votre environnement, notamment les suivants : les EC2 instances, le VPC, la AWS CloudFormation pile, les équilibreurs de charge, les groupes Auto Scaling et la configuration réseau associée aux règles des groupes de sécurité, aux tables de routage et. ACLs

Il fournit également la possibilité de charger des fichiers journaux groupés depuis votre environnement vers AWS Support.

Pour plus d’informations, consultez AWSSupport-TroubleshootElasticBeanstalk dans la référence AWS Systems Manager Automation runbook.

Utilisation de Systems Manager pour exécuter le runbook AWSSupport-TroubleshootElasticBeanstalk
Note

Exécutez cette procédure Région AWS là où se trouve votre environnement Elastic Beanstalk.

  1. Ouvrez la console AWS Systems Manager.

  2. Dans le panneau de navigation, dans la section Gestion des modifications, choisissez Automatisation.

  3. Choisissez Execute automation (Exécuter l’automatisation).

  4. Dans l'onglet Appartenant à Amazon, dans le champ de recherche de Document d'automatisation, saisissez AWSSupport-TroubleshootElasticBeanstalk.

  5. Sélectionnez la AWSSupport-TroubleshootElasticBeanstalkcarte, puis choisissez Next.

  6. Sélectionnez Exécuter.

  7. Dans la section Paramètres d'entrée :

    1. Dans le menu AutomationAssumeRoledéroulant, sélectionnez l'ARN du rôle qui permet à Systems Manager d'effectuer des actions en votre nom.

    2. Pour ApplicationName, entrez le nom de l'application Elastic Beanstalk.

    3. Dans Nom de l'environnement, saisissez l'environnement Elastic Beanstalk.

    4. (Facultatif) Pour S3 UploaderLink, entrez un lien si un ingénieur AWS Support vous a fourni un lien S3 pour la collecte des journaux.

  8. Sélectionnez Execute (Exécuter).

    Si l'une des étapes échoue, sélectionnez le lien situé sous la colonne ID d'étape correspondant à l'étape qui a échoué. Cela affiche la page Détails de l'exécution pour l'étape. La VerificationErrorMessagesection affichera un résumé des étapes qui nécessitent une attention particulière. Par exemple, IAMPermissionCheck peut afficher un message d'avertissement. Dans ce cas, vous pouvez vérifier que le rôle sélectionné dans le AutomationAssumeRolemenu déroulant dispose des autorisations nécessaires.

Une fois que toutes les étapes ont été effectuées avec succès, le résultat fournit des étapes de dépannage et des recommandations pour rétablir l'état de votre environnement.

Conseils généraux pour résoudre les problèmes liés à votre environnement Elastic Beanstalk

Des messages d'erreur peuvent s'afficher sur la page Événements de la console, dans les journaux ou sur la page État. Vous pouvez également prendre des mesures pour récupérer un environnement dégradé causé par une modification récente. Si l'intégrité de votre environnement passe au Rouge, essayez les éléments suivants :

  • Si une opération sur votre environnement renvoie une erreur contenant le texteThe stack stack_id associated with environment environment-ID is in stack-status state, consultez l'aide à la résolution Restaurer votre environnement Elastic Beanstalk à partir d'un état non valide des problèmes.

  • Si une opération sur votre environnement renvoie une erreur contenant le texteEnvironment environment-name associated CloudFormation stack stack_arn does not exist, fermez votre environnement et créez-en un autre.

  • Consultez les événements récents de l'environnement. Les messages d'Elastic Beanstalk sur les problèmes de déploiement, de charge et de configuration s'affichent souvent ici.

  • Examinez l'historique des modifications d'environnement récents. L'historique des modifications répertorie toutes les modifications apportées à la configuration de vos environnements et inclut d'autres informations, telles que l'utilisateur IAM ayant apporté les modifications et les paramètres de configuration définis.

  • Extrayez des journaux afin d'afficher de récentes entrées du fichier journal. Les journaux de serveur web contiennent des informations sur les erreurs et les demandes entrantes.

  • Connectez-vous à une instance et vérifiez les ressources du système.

  • Restaurez sur une version de travail précédente de l'application.

  • Annulez les récentes modifications de configuration ou restaurez une configuration sauvegardée.

  • Déployez un nouvel environnement. Si l'environnement s'avère sain, effectuez un échange CNAME pour acheminer le trafic vers le nouvel environnement et continuer à déboguer l'ancien.

Environnements qui accèdent aux secrets et aux paramètres à l'aide de variables d'environnement

Événement : le déploiement de l'instance n'a pas réussi à obtenir un ou plusieurs secrets

Ce message indique qu'Elastic Beanstalk n'a pas pu récupérer un ou plusieurs des secrets spécifiés lors du déploiement de votre application.

  • Vérifiez que les ressources spécifiées par les valeurs ARN dans la configuration de vos variables d'environnement existent.

  • Vérifiez que votre rôle de profil d'instance EC2 Elastic Beanstalk dispose des autorisations IAM requises pour accéder aux ressources.

  • Si cet événement a été déclenché par l'RestartAppServeropération, une fois le problème résolu, relancez l'RestartAppServerappel pour le résoudre.

  • Si l'événement a été déclenché par un UpdateEnvironment appel, recommencez l'UpdateEnvironmentopération.

Pour des exemples de ces commandes, consultez les AWS CLI exemples d'Elastic Beanstalk. Pour plus d'informations sur les actions d'API associées à ces opérations, consultez la référence des AWS Elastic Beanstalk API.

Événement : le déploiement de l'instance a détecté une ou plusieurs valeurs d'environnement multilignes, qui ne sont pas prises en charge pour cette plate-forme

Les variables multilignes ne sont pas prises en charge sur les plateformes Amazon Linux 2, à l'exception des plateformes Docker et Docker gérées par ECS. Pour connaître les options disponibles pour continuer, consultezValeurs multilignes.

Événement : CreateEnvironment échoue lorsqu'un secret est spécifié

En cas d'CreateEnvironmentéchec et que vous avez des secrets en tant que variables d'environnement, vous devez résoudre le problème sous-jacent, puis l'utiliser UpdateEnvironment pour terminer la configuration de l'environnement. Ne pas utiliserRestartAppServer, car cela ne suffira pas à améliorer l'environnement dans cette situation. Pour des exemples de ces commandes, consultez les AWS CLI exemples d'Elastic Beanstalk. Pour plus d'informations sur les actions d'API associées à ces opérations, consultez la référence des AWS Elastic Beanstalk API.

Création de l'environnement et lancements d'instance

Événement : Échec du lancement de l'environnement

Cet événement se produit lorsque Elastic Beanstalk tente de lancer un environnement et rencontre des défaillances ce faisant. Les événements précédents sur la page Événements vous alertent de la cause racine de ce problème.

Événement : L'opération de création de l'environnement est terminée, mais avec des délais de commande. Essayez d'augmenter le délai d'expiration.

Le déploiement de votre application peut prendre beaucoup de temps si vous utilisez des fichiers de configuration qui exécutent des commandes sur l'instance, téléchargent des fichiers volumineux ou installent des packages. Augmentez le délai de commande afin que votre application dispose de plus de temps pour commencer son exécution pendant les déploiements.

Événement : La ou les ressources suivantes n'ont pas pu être créées : [AWSEBInstanceLaunchWaitCondition]

Ce message indique que les EC2 instances Amazon de votre environnement n'ont pas indiqué à Elastic Beanstalk qu'elles avaient été lancées avec succès. Cette erreur peut se produire si ces instances n'ont pas de connectivité Internet. Si vous avez configuré votre environnement pour lancer des instances sur un sous-réseau VPC privé, vérifiez que ce sous-réseau possède un NAT pour permettre aux instances de se connecter à Elastic Beanstalk.

Événement : Une fonction du service est requise dans cette région. Veuillez ajouter une option Fonction du service à l'environnement.

Elastic Beanstalk utilise un rôle de service pour surveiller les ressources de votre environnement et prendre en charge les mises à jour de la plateforme gérée. Pour plus d’informations, consultez Gestion des rôles de service Elastic Beanstalk.

Déploiements

Problème : L'application devient indisponible pendant les déploiements

Un temps d'arrêt de quelques secondes est possible, car Elastic Beanstalk utilise un processus de mise à niveau par remplacement direct. Utilisez des propagations de déploiements pour minimiser l'impact des déploiements sur vos environnements de production.

Événement : Impossible de créer la version de l'application AWS Elastic Beanstalk

L'ensemble de sources de votre application est peut-être trop volumineux ou vous avez peut-être atteint le quota des versions d'application.

Événement : L'opération de mise à jour de l'environnement est terminée, mais avec des délais de commande. Essayez d'augmenter le délai d'expiration.

Le déploiement de votre application peut prendre beaucoup de temps si vous utilisez des fichiers de configuration qui exécutent des commandes sur l'instance, téléchargent des fichiers volumineux ou installent des packages. Augmentez le délai de commande afin que votre application dispose de plus de temps pour commencer son exécution pendant les déploiements.

Santé

Événement : L'utilisation de l'UC dépasse 95 %

Essayez d'exécuter davantage d'instances ou choisissez un type d'instance différent.

Événement : Elastic Load Balancer awseb- myapp ne possède aucune instance saine

Si votre application semble fonctionner, assurez-vous que l'URL de vérification de l'état de votre application est correctement configurée. Sinon, consultez l'écran Health et les journaux de l'environnement pour obtenir plus d'informations.

Événement : Elastic Load Balancer awseb- introuvable myapp

L'équilibreur de charge de votre environnement a peut-être été supprimé. out-of-band Ne modifiez les ressources de votre environnement qu'avec les options de configuration et l'extensibilité fournies par Elastic Beanstalk. Recréez votre environnement ou lancez-en un nouveau.

Événement : échec du lancement de l'EC2 instance. En attente du lancement d'une nouvelle EC2 instance...

La disponibilité du type d'instance de votre environnement peut être faible ou vous avez peut-être atteint le quota d'instances de votre compte. Consultez le tableau de bord de santé du service pour vous assurer que le service Elastic Compute Cloud (Amazon EC2) est vert, ou demandez une augmentation de quota.

Configuration

Événement : La pile stack_id associée à l'environnement environment-ID est en stack-status état

La AWS CloudFormation pile sous-jacente de votre environnement peut avoir le statut *_FAILED. Ce statut doit être corrigé afin de poursuivre les opérations d'Elastic Beanstalk dans votre environnement. Pour de plus amples informations, veuillez consulter Restaurer votre environnement Elastic Beanstalk à partir d'un état non valide.

Événement : Vous ne pouvez pas configurer un environnement Elastic Beanstalk avec des valeurs pour les options Elastic Load Balancing Target (Cible Elastic Load Balancing) et Application Healthcheck URL (URL de vérification de l'état de l'application)

L'option Target dans l'espace de noms aws:elb:healthcheck est obsolète. Supprimez l'option Target de votre environnement et essayez à nouveau de mettre à jour.

Événement : l'ELB ne peut pas être attaché à plusieurs sous-réseaux dans la même zone de disponibilité

Ce message s'affiche si vous tentez de déplacer un équilibreur de charge entre des sous-réseaux d'une même zone de disponibilité. La modification de sous-réseaux sur l'équilibreur de charge nécessite de le faire sortir en dehors des zones de disponibilité, puis de le réintégrer dans la zone de disponibilité d'origine avec les sous-réseaux souhaités. Au cours du processus, toutes vos instances seront migrées entre elles AZs, ce qui entraînera des temps d'arrêt importants. Pensez plutôt à créer un nouvel environnement et effectuez un échange CNAME.

Résolution des problèmes de conteneurs Docker

Événement : Échec de l'extraction de l'image Docker : la plus récente : Nom de référentiel () non valide, seulement [a-z0-9-_.] sont autorisés. Consultez les journaux pour plus d'informations.

Vérifiez la syntaxe du fichier dockerrun.aws.json à l'aide d'un validateur JSON. Vérifiez également le contenu dockerfile par rapport aux conditions décrites dans Préparation de votre image Docker pour le déploiement sur Elastic Beanstalk

Événement : Aucune directive EXPOSE trouvée dans le Dockerfile, abandon du déploiement

Le Dockerfile ou le fichier dockerrun.aws.json ne déclare pas le port de conteneur. Utilisez l'instruction EXPOSE (Dockerfile) ou le bloc Ports (fichier dockerrun.aws.json) pour exposer un port pour le trafic entrant.

Événement : Impossible de télécharger les informations d'authentification repository depuis bucket name

dockerrun.aws.jsonFournit un compartiment and/or S3 à paires de EC2 clés non valide pour le .dockercfg fichier. Ou bien, le profil d'instance n'est pas GetObject autorisé pour le compartiment S3. Vérifiez que le .dockercfg fichier contient un compartiment S3 et une paire de EC2 clés valides. Accordez des autorisations pour l'action s3:GetObject au rôle IAM dans le profil d'instance. Pour obtenir des détails, consultez Gestion des profils d'instance Elastic Beanstalk

Événement : L'exécution de l'activité a échoué, car : AVERTISSEMENT : Fichier de configuration d'authentification non valide

Le format de votre fichier d'authentification (config.json) n'est pas correct. Consultez Utilisation d'images provenant d'un dépôt privé dans Elastic Beanstalk.

FAQ

Question : Comment remplacer l'URL de mon application myapp.us-west-2.elasticbeanstalk.com par www.myapp.com ?

Dans un serveur DNS, enregistrez un enregistrement CNAME tel que www.mydomain.com CNAME mydomain.elasticbeanstalk.com.

Question : Comment spécifier une zone de disponibilité spécifique pour mon application Elastic Beanstalk ?

Vous pouvez sélectionner une zone de disponibilité spécifique à l'aide de la CLI APIs, du plugin Eclipse ou du plugin Visual Studio. Pour de plus amples informations sur l'utilisation de la console Elastic Beanstalk pour spécifier une zone de disponibilité, veuillez consulter Auto Scaling de vos instances d'environnement Elastic Beanstalk.

Question : Comment modifier le type d'instance de mon environnement ?

Pour modifier le type d'instance de votre environnement, accédez à la page de configuration de l'environnement et sélectionnez Edit (Modifier) dans la catégorie de configuration Instances. Ensuite, sélectionnez un nouveau type d'instance, puis choisissez Apply (Appliquer) pour mettre à jour votre environnement. Après cela, Elastic Beanstalk résilie toutes les instances en cours d'exécution et les remplace par de nouvelles.

Question : Comment déterminer si quelqu'un a apporté des modifications de configuration à un environnement ?

Pour afficher ces informations, dans le volet de navigation de la console Elastic Beanstalk, sélectionnez Change history (Historique des modifications) pour afficher la liste des modifications de configuration de tous les environnements. Cette liste inclut la date et l'heure de la modification, le paramètre de configuration modifié et sa nouvelle valeur, ainsi que l'utilisateur IAM qui a effectué la modification. Pour plus d'informations, consultez Historique des modifications.

Question : Puis-je éviter que les volumes Amazon EBS soient supprimés lorsque les instances sont mises hors service ?

Les instances de votre environnement utilisent Amazon EBS pour le stockage. Toutefois, le volume racine est supprimé lorsqu'une instance est résiliée par Auto Scaling. Nous vous recommandons de ne pas stocker les données d'état ou d'autres informations dans vos instances. Si nécessaire, vous pouvez empêcher la suppression de volumes avec le AWS CLI : $ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false comme décrit dans la AWS CLI référence.

Question : Comment supprimer des informations personnelles de mon application Elastic Beanstalk ?

AWS les ressources utilisées par votre application Elastic Beanstalk peuvent stocker des informations personnelles. Lorsque vous arrêtez un environnement, Elastic Beanstalk arrête les ressources qu'il a créées. Les ressources que vous avez ajoutées à l'aide de fichiers de configuration sont également résiliées. Toutefois, si vous avez créé AWS des ressources en dehors de votre environnement Elastic Beanstalk et que vous les avez associées à votre application, vous devrez peut-être vérifier manuellement que les informations personnelles que votre application a pu stocker ne sont pas conservées. Tout au long de ce manuel du développeur, chaque fois que nous abordons la création de ressources supplémentaires, nous mentionnons également le moment auquel vous devez envisager de les supprimer.

Erreurs courantes

Cette rubrique répertorie les messages d'erreur courants rencontrés lors de l'utilisation de l'interface de ligne de commande EB et les solutions possibles. Si vous rencontrez un message d'erreur qui n'est pas présenté ici, utilisez les liens Feedback pour nous en faire part.

ERREUR : une erreur s'est produite lors de la gestion de la commande git. Code d'erreur : 128 Erreur : fatale : nom d'objet non valide HEAD

Cause : Ce message d'erreur s'affiche lorsque vous avez initialisé un dépôt Git mais que vous ne l'avez pas encore validé. L'interface de ligne de commande EB cherche la révision HEAD lorsque votre dossier de projet contient un référentiel Git.

Solution : ajoutez les fichiers dans votre dossier de projet à la zone intermédiaire et valides :

~/my-app$ git add . ~/my-app$ git commit -m "First commit"

ERREUR : Cette branche ne possède pas d'environnement par défaut. Vous devez soit spécifier un environnement en saisissant « eb status my-env-name », soit définir un environnement par défaut en tapant « eb use my-env-name ».

Cause : lorsque vous créez une branche dans git, elle n'est pas attachée à un environnement Elastic Beanstalk par défaut.

Solution : exécutez eb list pour afficher une liste des environnements disponibles. Exécutez ensuite eb use env-name pour utiliser l'un des environnements disponibles.

ERREUR : Les plateformes 2.0+ nécessitent un rôle de service. Vous pouvez en fournir un avec l'option --service-role

Cause : si vous spécifiez un nom d'environnement avec eb create (par exemple, eb create my-env), l'interface de ligne de commande EB n'essaie pas de créer un rôle de service pour vous. Si vous n'avez pas le rôle de service par défaut, l'erreur ci-dessus s'affiche.

Solution : exécutez eb create sans un nom d'environnement et suivez les instructions pour créer le rôle du service par défaut.

Erreurs de déploiement

Votre déploiement d'Elastic Beanstalk peut répondre par une réponse 404 (si votre application ne démarre pas) ou 500 (si votre application échoue pendant l'exécution). Pour résoudre de nombreux problèmes courants, vous pouvez utiliser l'interface de ligne de commande EB pour vérifier l'état de votre déploiement, consulter ses journaux, accéder à votre EC2 instance via SSH ou ouvrir la page de console de AWS gestion de votre environnement d'application.

Pour utiliser l'interface de ligne de commande EB pour aider à dépanner votre déploiement
  1. Exécutez eb status pour voir l'état de votre déploiement actuel et l'état de santé de vos EC2 hôtes. Par exemple :

    $ eb status --verbose Environment details for: python_eb_app Application name: python_eb_app Region: us-west-2 Deployed Version: app-150206_035343 Environment ID: e-wa8u6rrmqy Platform: 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7 Tier: WebServer-Standard- CNAME: python_eb_app.elasticbeanstalk.com Updated: 2015-02-06 12:00:08.557000+00:00 Status: Ready Health: Green Running instances: 1 i-8000528c: InService
    Note

    L'utilisation du commutateur --verbose fournit des informations sur l'état de vos instances en cours d'exécution. Sans cela, eb status imprimera uniquement des informations générales sur votre environnement.

  2. Exécutez eb health afin d'afficher des informations d'intégrité sur votre environnement :

    $ eb health --refresh elasticBeanstalkExa-env Degraded 2016-03-28 23:13:20 WebServer Ruby 2.1 (Puma) total ok warning degraded severe info pending unknown 5 2 0 2 1 0 0 0 instance-id status cause Overall Degraded Incorrect application version found on 3 out of 5 instances. Expected version "Sample Application" (deployment 1). i-d581497d Degraded Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1). i-d481497c Degraded Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1). i-136e00c0 Severe Instance ELB health has not been available for 5 minutes. i-126e00c1 Ok i-8b2cf575 Ok instance-id r/sec %2xx %3xx %4xx %5xx p99 p90 p75 p50 p10 Overall 646.7 100.0 0.0 0.0 0.0 0.003 0.002 0.001 0.001 0.000 i-dac3f859 167.5 1675 0 0 0 0.003 0.002 0.001 0.001 0.000 i-05013a81 161.2 1612 0 0 0 0.003 0.002 0.001 0.001 0.000 i-04013a80 0.0 - - - - - - - - - i-3ab524a1 155.9 1559 0 0 0 0.003 0.002 0.001 0.001 0.000 i-bf300d3c 162.1 1621 0 0 0 0.003 0.002 0.001 0.001 0.000 instance-id type az running load 1 load 5 user% nice% system% idle% iowait% i-d581497d t2.micro 1a 25 mins 0.16 0.1 7.0 0.0 1.7 91.0 0.1 i-d481497c t2.micro 1a 25 mins 0.14 0.1 7.2 0.0 1.6 91.1 0.0 i-136e00c0 t2.micro 1b 25 mins 0.0 0.01 0.0 0.0 0.0 99.9 0.1 i-126e00c1 t2.micro 1b 25 mins 0.03 0.08 6.9 0.0 2.1 90.7 0.1 i-8b2cf575 t2.micro 1c 1 hour 0.05 0.41 6.9 0.0 2.0 90.9 0.0 instance-id status id version ago deployments i-d581497d Deployed 2 v2 9 mins i-d481497c Deployed 2 v2 7 mins i-136e00c0 Failed 2 v2 5 mins i-126e00c1 Deployed 1 Sample Application 25 mins i-8b2cf575 Deployed 1 Sample Application 1 hour

    L'exemple ci-dessus illustre un environnement avec cinq cas où le déploiement de la version « v2 » a échoué sur la troisième instance. Après un échec de déploiement, la version attendue revient sur la dernière version qui a abouti, ce qui dans ce cas correspond à « Exemple d'Application » depuis le premier déploiement. Pour plus d’informations, consultez Utilisation de l'interface de ligne de commande EB pour surveiller l'intégrité de l'environnement.

  3. Exécutez eb logs pour télécharger et afficher les journaux associés au déploiement de votre application.

    $ eb logs
  4. Exécutez eb ssh pour vous connecter à l' EC2 instance qui exécute votre application et examinez-la directement. Sur l'instance, votre application déployée est disponible dans le répertoire /opt/python/current/app et votre environnement Python se trouve dans /opt/python/run/venv/.

  5. Exécutez eb console pour afficher l'environnement de votre application sur la console de gestion AWS. Vous pouvez utiliser l'interface web afin d'examiner facilement les différents aspects de votre déploiement, y compris les journaux, les événements, l'état et la configuration de votre application. Vous pouvez également télécharger les versions d'application actuelles ou passées que vous avez déployées sur le serveur.