Solución de problemas del entorno de Elastic Beanstalk - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas del entorno de Elastic Beanstalk

Este capítulo brinda orientación para solucionar problemas con el entorno de Elastic Beanstalk. Proporciona la siguiente información.

  • Introducción a la herramienta AWS Systems Manager, además de un procedimiento para ejecutar un manual predefinido de Elastic Beanstalk que contiene recomendaciones y pasos para la solución de problemas.

  • Guía general sobre las acciones que puede tomar y los recursos que puede consultar si el estado del entorno empeora.

  • Consejos de solución de problemas más específicos por categoría temática.

nota

Si el estado del entorno cambia a rojo, le recomendamos que utilice primero la herramienta  AWS Systems Manager  que incluye manuales de procedimientos predefinidos para solucionar problemas de Elastic Beanstalk. Para obtener más información, consulte la Uso de la herramienta Systems Manager.

Uso de los runbooks de AWS Systems Manager Elastic Beanstalk

Puede usar Systems Manager para solucionar problemas en sus entornos de Elastic Beanstalk. Para ayudarlo a empezar rápidamente, Systems Manager brinda manuales de procedimientos de automatización predefinidos para Elastic Beanstalk. Un manual de procedimientos de automatización es un tipo de documento de Systems Manager que define las acciones que se deben realizar en las instancias del entorno y otros recursos de  AWS .

El documento AWSSupport-TroubleshootElasticBeanstalk es un manual de procedimientos de automatización diseñado para ayudar a identificar una serie de problemas comunes que pueden deteriorar el entorno de Elastic Beanstalk. Para ello, comprueba los componentes de su entorno, incluidos los siguientes: las EC2 instancias, la VPC, la AWS CloudFormation pila, los balanceadores de carga, los grupos de Auto Scaling y la configuración de red asociada a las reglas de los grupos de seguridad, las tablas de enrutamiento y. ACLs

También ofrece la opción de cargar archivos de registro agrupados desde su entorno a AWS Support.

Para obtener más información, consulte AWSSupport-TroubleshootElasticBeanstalk en la Referencia del manual de procedimientos de automatización de AWS Systems Manager .

Utilice Systems Manager para ejecutar el manual de procedimientos AWSSupport-TroubleshootElasticBeanstalk
nota

Ejecute este procedimiento en el mismo Región de AWS lugar en el que se encuentra el entorno de Elastic Beanstalk.

  1. Abra la consola de AWS Systems Manager.

  2. En el panel de navegación, en Administración de cambios, elija Automatización.

  3. Elija Ejecutar automatización.

  4. En la pestaña Propiedad de Amazon, en el cuadro de búsqueda de Documentos de automatización, introduzca AWSSupport-TroubleshootElasticBeanstalk.

  5. Seleccione la AWSSupport-TroubleshootElasticBeanstalktarjeta y, a continuación, elija Siguiente.

  6. Seleccione Ejecutar.

  7. En la sección Parámetros de entrada:

    1. En el AutomationAssumeRolemenú desplegable, seleccione el ARN del rol que permite a Systems Manager realizar acciones en su nombre.

    2. Para ApplicationName, introduzca el nombre de la aplicación Elastic Beanstalk.

    3. En Nombre del entorno, introduzca el entorno de Elastic Beanstalk.

    4. (Opcional) Para S3 UploaderLink, introduzca un enlace si un ingeniero de AWS soporte le ha proporcionado un enlace S3 para la recopilación de registros.

  8. Elija Ejecutar.

    Si se produce un error en alguno de los pasos, seleccione el enlace situado en la columna ID del paso en el que se produjo el error. Esto muestra una página de Detalles de ejecución para el paso. La VerificationErrorMessagesección mostrará un resumen de los pasos que requieren atención. Por ejemplo, IAMPermissionCheck podría mostrar un mensaje de advertencia. En este caso, puede comprobar que el rol seleccionado en el AutomationAssumeRolemenú desplegable tiene los permisos necesarios.

Una vez completados correctamente todos los pasos, el resultado muestra los pasos de solución de problemas y las recomendaciones para restaurar el entorno a un estado correcto.

Guía general para la solución de problemas del entorno de Elastic Beanstalk

Los mensajes de error pueden aparecer en la página Eventos en la consola, en los registros o en la página Estado. También puede tomar medidas para recuperarse de un entorno degradado provocado por un cambio reciente. Si el estado de su entorno cambia a Rojo, pruebe lo siguiente:

  • Si una operación de su entorno devuelve un error que contiene el textoThe stack stack_id associated with environment environment-ID is in stack-status state, consulte Recuperación del entorno de Elastic Beanstalk de un estado no válido para obtener ayuda para solucionar problemas.

  • Si una operación en su entorno devuelve un error que contiene el textoEnvironment environment-name associated CloudFormation stack stack_arn does not exist, cierre el entorno y cree otro.

  • Revise los eventos recientes del entorno. Los mensajes de Elastic Beanstalk sobre los problemas de implementación, carga y configuración suelen aparecer aquí.

  • Revise el historial de cambios reciente del entorno. El historial de cambios enumera todos los cambios de configuración realizados en los entornos e incluye otra información, como qué usuario de IAM realizó cambios y qué parámetros de configuración se establecieron.

  • Obtenga los logs para las ver las entradas recientes de los archivos log. Los logs del servidor web contienen información sobre solicitudes entrantes y errores.

  • Conéctese a una instancia y compruebe los recursos del sistema.

  • Restaure una versión operativa anterior de la aplicación.

  • Deshaga los últimos cambios de configuración o restaure una configuración guardada.

  • Implemente un nuevo entorno. Si el entorno parece estar en buen estado, realice un intercambio de CNAME para dirigir el tráfico al nuevo entorno y siga depurando el anterior.

Entornos que acceden a secretos y parámetros con variables de entorno

Evento: la implementación de la instancia no pudo obtener uno o más secretos

Este mensaje indica que Elastic Beanstalk no ha podido recuperar uno o más de los secretos especificados durante la implementación de la aplicación.

  • Compruebe que existan los recursos especificados por los valores del ARN en la configuración de la variable de entorno.

  • Confirme que su rol de perfil de instancia de EC2 Elastic Beanstalk tiene los permisos de IAM necesarios para acceder a los recursos.

  • Si este evento se desencadenó a través de la RestartAppServer operación, una vez que se haya solucionado el problema, vuelva a intentar la RestartAppServer llamada para resolverlo.

  • Si el evento se activó a través de una UpdateEnvironment llamada, vuelva a intentar la UpdateEnvironment operación.

Para ver ejemplos de estos comandos, consulte los AWS CLI ejemplos de Elastic Beanstalk. Para obtener más información sobre las acciones de la API para estas operaciones, consulte la referencia de la AWS Elastic Beanstalk API.

Evento: el despliegue de una instancia detectó uno o más valores de entorno multilínea, que no son compatibles con esta plataforma

Las variables multilínea no se admiten en las plataformas Amazon Linux 2, excepto en las plataformas Docker y Docker administradas por ECS. Para ver las opciones disponibles para continuar, consulte. Valores de líneas múltiples

Evento: CreateEnvironment falla cuando se especifica un secreto

Cuando se CreateEnvironment produce un error y las variables de entorno son secretas, hay que abordar el problema subyacente y utilizarlas UpdateEnvironment para completar la configuración del entorno. No lo useRestartAppServer, ya que no bastará con activar el entorno en esta situación. Para ver ejemplos de estos comandos, consulte los AWS CLI ejemplos de Elastic Beanstalk. Para obtener más información sobre las acciones de la API para estas operaciones, consulte la referencia de la AWS Elastic Beanstalk API.

Creación del entorno y lanzamiento de instancias

Evento: error al lanzar el entorno

Este evento se produce cuando Elastic Beanstalk intenta lanzar un entorno y encuentra errores en el proceso. Los eventos anteriores de la página Events (Eventos) le indicarán la causa del problema.

Evento: operación de crear entorno completa, pero con tiempos de espera de comandos. Intente aumentar el periodo de tiempo de espera.

Su aplicación puede tardar mucho tiempo en implementarse si utiliza archivos de configuración que ejecutan comandos en la instancia, descargan archivos grandes o instalan paquetes. Aumente el tiempo de espera de los comandos para dar más tiempo a la aplicación para que empiece a ejecutarse durante las implementaciones.

Evento: No se pudieron crear los siguientes recursos: [AWSEBInstanceLaunchWaitCondition]

Este mensaje indica que las EC2 instancias de Amazon de su entorno no comunicaron a Elastic Beanstalk que se habían lanzado correctamente. Esto puede ocurrir si las instancias no disponen de conectividad a Internet. Si configuró el entorno para lanzar las instancias en una subred de VPC privada, asegúrese de que la subred tiene un NAT que permita que las instancias se conecten a Elastic Beanstalk.

Evento: se requiere un rol de servicio en esta región. Agregue una opción de Rol de servicio al entorno.

Elastic Beanstalk utiliza un rol de servicio para supervisar los recursos del entorno y permitir las actualizaciones administradas de la plataforma. Para obtener más información, consulte Administración de roles de servicio de Elastic Beanstalk.

Implementaciones

Problema: la aplicación deja de estar disponible durante las implementaciones

Como Elastic Beanstalk utiliza un proceso de actualización “drop-in”, podría haber algunos segundos de inactividad. Utilice las implementaciones continuas para minimizar el efecto de las implementaciones en los entornos de producción.

Evento: No se pudo crear la versión de la AWS aplicación Elastic Beanstalk

Puede que el paquete de código fuente de la aplicación sea demasiado grande o que haya alcanzado la cuota de versiones de la aplicación.

Evento: operación de actualización de entorno completa, pero con tiempo de espera de los comandos. Intente aumentar el periodo de tiempo de espera.

Su aplicación puede tardar mucho tiempo en implementarse si utiliza archivos de configuración que ejecutan comandos en la instancia, descargan archivos grandes o instalan paquetes. Aumente el tiempo de espera de los comandos para dar más tiempo a la aplicación para que empiece a ejecutarse durante las implementaciones.

Estado

Evento: el uso de la CPU supera el 95,00 %

Intente ejecutar más instancias o elija un tipo de instancia distinto.

Evento: Elastic Load Balancer awseb: myapp no tiene ninguna instancia en buen estado

Si la aplicación parece funcionar, asegúrese de que la URL de comprobación de estado de la aplicación está configurada correctamente. De lo contrario, consulte la pantalla de estado y los registros del entorno para obtener más información.

Evento: Elastic Load Balancer awseb - No se encuentra myapp

Es posible que se haya eliminado el balanceador de carga de su entorno. out-of-band Realice únicamente cambios en los recursos del entorno con las opciones de configuración y extensibilidad proporcionadas por Elastic Beanstalk. Vuelva a crear el entorno o lance uno nuevo.

Evento: error al lanzar la EC2 instancia. Esperando el lanzamiento de una nueva EC2 instancia...

Es posible que el tipo de instancia del entorno tenga poca disponibilidad o que se haya alcanzado la cuota de instancias de la cuenta. Consulta el panel de estado del servicio para asegurarte de que el servicio Elastic Compute Cloud (Amazon EC2) esté en verde o solicita un aumento de cuota.

Configuración

Evento: la pila stack_id asociada al entorno environment-ID está en stack-status estado

La AWS CloudFormation pila subyacente de su entorno puede tener el estado *_FAILED. Este estado debe corregirse para poder continuar con las operaciones de Elastic Beanstalk en su entorno. Para obtener más información, consulte Recuperación del entorno de Elastic Beanstalk de un estado no válido.

Evento: no puede configurar un entorno de Elastic Beanstalk con valores para la opción Elastic Load Balancing Target y la opción Application Healthcheck URL

La opción Target del espacio de nombres aws:elb:healthcheck ya no está disponible. Elimine la opción Target de su entorno e intente actualizar de nuevo.

Evento: el ELB no se puede conectar a varias subredes en la misma zona de disponibilidad

Este mensaje puede aparecer si intenta mover un balanceador de carga entre subredes de la misma zona de disponibilidad. Para cambiar las subredes del balanceador, debe sacar el balanceador de carga de la zona o zonas de disponibilidad originales y volver a incluirlo con las subredes deseadas. Durante el proceso, todas las instancias se migrarán de una instancia a otra AZs, lo que provocará un tiempo de inactividad significativo. En lugar de ello, considere la posibilidad de crear un nuevo entorno y realizar un intercambio de CNAME.

Solución de problemas con contenedores de Docker

Evento: error al extraer la imagen de Docker :latest: nombre de repositorio no válido (), solo se admite [a-z0-9-_.]. Siga los registros para obtener más detalles.

Marque la sintaxis del archivo dockerrun.aws.json con un validador JSON. Compruebe también si el contenido de dockerfile se ajusta a los requisitos descritos en Preparación de la imagen de Docker para implementarla en Elastic Beanstalk.

Evento: no se encuentra ninguna directiva EXPOSE en Dockerfile, anular implementación

El archivo Dockerfile o dockerrun.aws.json no declara el puerto del contenedor. Utilice la instrucción EXPOSE (Dockerfile) o el bloque Ports (archivo dockerrun.aws.json) para exponer un puerto para el tráfico entrante.

Evento: no se pudieron descargar las credenciales repository de autenticación de bucket name

dockerrun.aws.jsonProporciona un bucket and/or S3 de pares de EC2 claves no válido para el .dockercfg archivo. O bien, el perfil de la instancia no tiene GetObject autorización para el bucket de S3. Compruebe que el .dockercfg archivo contiene un bucket y un EC2 key pair de S3 válidos. Conceda permisos para la acción s3:GetObject al rol de IAM en el perfil de instancia. Para obtener más información, consulte Administración de perfiles de instancia de Elastic Beanstalk.

Evento: error en ejecución de actividad, porque: ADVERTENCIA: archivo de configuración de autenticación no válido

El archivo de autenticación (config.json) no tiene un formato correcto. Consulte Uso de imágenes de un repositorio privado en Elastic Beanstalk

Preguntas frecuentes

Pregunta: ¿Cómo puedo cambiar la URL de mi aplicación de myapp.us-west-2.elasticbeanstalk.com a www.myapp.com?

En un servidor DNS, registre un registro CNAME como www.mydomain.com CNAME mydomain.elasticbeanstalk.com.

Pregunta: ¿Cómo puedo especificar una zona de disponibilidad específica para mi aplicación de Elastic Beanstalk?

Puede elegir una zona de disponibilidad específica mediante la CLI APIs, el complemento Eclipse o el complemento Visual Studio. Para obtener instrucciones sobre cómo usar la consola de Elastic Beanstalk para especificar una zona de disponibilidad, consulte Auto Scaling de las instancias del entorno de Elastic Beanstalk.

Pregunta: ¿Cómo puedo cambiar el tipo de instancia del entorno?

Para cambiar el tipo de instancia del entorno, vaya a la página de configuración del entorno y elija Edit (Edición de) en la categoría de configuración Instances (Instancias). Luego, seleccione un nuevo tipo de instancia y haga clic en Apply (Aplicar) para actualizar el entorno. Después de esto, Elastic Beanstalk termina todas las instancias en ejecución y las reemplaza por instancias nuevas.

Pregunta: ¿Cómo puedo determinar si alguien ha realizado cambios de configuración en un entorno?

Para ver esta información, en el panel de navegación de la consola de Elastic Beanstalk seleccione Change history (Historial de cambios) para visualizar una lista de cambios de configuración de todos los entornos. Esta lista incluye la fecha y la hora del cambio, el parámetro de configuración y el valor al que se cambió, y el usuario de IAM que realizó el cambio. Para obtener más información, consulte Historial de cambios.

Pregunta: ¿Puedo evitar que los volúmenes de Amazon EBS se eliminen al terminar las instancias?

Las instancias de su entorno utilizan Amazon EBS para el almacenamiento; sin embargo, el volumen raíz se elimina cuando Auto Scaling termina una instancia. No se recomienda almacenar el estado u otros datos de las instancias. Si es necesario, puede evitar que los volúmenes se eliminen con AWS CLI: $ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false tal y como se describe en la AWS CLI Referencia.

Pregunta: ¿Cómo elimino la información personal de mi aplicación de Elastic Beanstalk?

AWS los recursos que utiliza la aplicación de Elastic Beanstalk pueden almacenar información personal. Cuando termina un entorno, Elastic Beanstalk termina los recursos que creó. También se terminan los recursos que agregó a través de los archivos de configuración. Sin embargo, si creó AWS recursos fuera del entorno de Elastic Beanstalk y los asoció a la aplicación, es posible que tenga que comprobar manualmente que la información personal que la aplicación pueda haber almacenado no se conserva. En esta guía para desarrolladores, siempre que se explica la creación de recursos adicionales, también mencionamos cuándo debe considerar eliminarlos.

Errores comunes

En este tema se muestran mensajes de error comunes encontrados al utilizar la CLI de EB y sus posibles soluciones. Si detecta un mensaje de error que no se muestra aquí, utilice los enlaces de comentarios para informarnos de él.

ERROR: Se ha producido un error al administrar el comando de git. Código de error: 128 Error: fatal: No es un nombre de objeto HEAD válido

Causa: este mensaje de error aparece cuando se ha inicializado un repositorio Git, pero aún no se ha validado. La CLI de EB busca la revisión HEAD cuando la carpeta del proyecto contiene un repositorio Git.

Solución: añada los archivos de su carpeta de proyecto al área de ensayo y realice la validación:

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

ERROR: Esta rama no tiene un entorno predeterminado. Debe especificar un entorno escribiendo «eb status my-env-name» o establecer un entorno predeterminado escribiendo «eb use». my-env-name

Causa: cuando crea una nueva ramificación en git, esta no se asocia a un entorno de Elastic Beanstalk de forma predeterminada.

Solución: ejecute eb list para ver una lista de los entornos disponibles. Después ejecute eb use env-name para usar alguno de los entornos disponibles.

ERROR: 2.0+ Platforms require a service role. Puede proporcionar uno con la opción --service-role

Causa: si especifica un nombre de entorno con eb create (por ejemplo, eb create my-env), la CLI de EB no intentará crear un rol de servicio por usted. Si no dispone del rol de servicio predeterminado, se muestra el error anterior.

Solución: ejecute eb create sin un nombre de entorno y siga las instrucciones para crear el rol de servicio predeterminado.

Errores de implementación

La implementación de Elastic Beanstalk podría responder con una respuesta 404 (si la aplicación no se pudo iniciar) o 500 (si la aplicación falla durante el tiempo de ejecución). Para solucionar muchos problemas comunes, puede utilizar la CLI de EB para comprobar el estado de la implementación, ver sus registros, acceder a la EC2 instancia con SSH o abrir la página de la consola de AWS administración de su entorno de aplicaciones.

Para utilizar la CLI de EB para ayudar a resolver los problemas de su implementación
  1. Ejecute eb status para ver el estado de su implementación actual y el estado de sus EC2 hosts. Por ejemplo:

    $ 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
    nota

    El uso del modificador --verbose proporciona información sobre el estado de las instancias en ejecución. Sin él, eb status mostrará solo información general acerca de su entorno.

  2. Ejecute eb health para ver información sobre el estado de su entorno:

    $ 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

    El ejemplo anterior muestra un entorno con cinco instancias en las que la implementación de la versión “v2” produjo un error en la tercera instancia. Después de un error en la implementación, la versión se restablece a la última versión correcta, que en este caso es “Sample Application” de la primera implementación. Para obtener más información, consulte Uso de la CLI de EB para supervisar el estado del entorno.

  3. Ejecute eb logs para descargar y ver los registros asociados con la implementación de su aplicación.

    $ eb logs
  4. Ejecuta eb ssh para conectarte con la EC2 instancia en la que se ejecuta tu aplicación y examínala directamente. En la instancia, su aplicación implementada puede encontrarse en el directorio /opt/python/current/app y su entorno Python se encontrará en /opt/python/run/venv/.

  5. Ejecuteeb console para ver el entorno de aplicaciones en la consola de administración de AWS. Puede utilizar la interfaz web para examinar distintos aspectos de su implementación, incluida la configuración, el estado, los eventos y los registros de la aplicación. También puede descargar las versiones de la aplicación actuales o anteriores que ha implementado en el servidor.