Solucionar problemas com o ambiente Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solucionar problemas com o ambiente Elastic Beanstalk

Este capítulo fornece orientações para a solução de problemas com o ambiente do Elastic Beanstalk. Ele fornece as informações a seguir.

  • Uma introdução à ferramenta AWS Systems Manager, além de um procedimento para executar um runbook predefinido do Elastic Beanstalk que gera recomendações e etapas de solução de problemas.

  • Orientação geral sobre ações que você poderá tomar e recursos que poderá visualizar se o status do seu ambiente se deteriorar.

  • Dicas de solução de problemas mais específicas por categoria de assunto.

nota

Se a integridade do seu ambiente mudar para vermelho, recomendamos usar primeiro a ferramenta  AWS Systems Manager , que inclui runbooks predefinidos para solucionar problemas do Elastic Beanstalk. Para obter mais informações, consulte o Usar a ferramenta Systems Manager.

Usando runbooks do AWS Systems Manager Elastic Beanstalk

Você pode usar o Systems Manager para solucionar problemas em seus ambientes do Elastic Beanstalk. Para ajudar você a começar rapidamente, o Systems Manager fornece runbooks de automação predefinidos para o Elastic Beanstalk. Um runbook de automação é um tipo de documento do Systems Manager que define ações a serem executadas nas instâncias e em outros recursos da  AWS  do seu ambiente.

O documento AWSSupport-TroubleshootElasticBeanstalk é um runbook de automação desenvolvido para ajudar a identificar vários problemas comuns que podem degradar seu ambiente do Elastic Beanstalk. Para fazer isso, ele verifica os componentes do seu ambiente, incluindo os seguintes: EC2 instâncias, VPC, AWS CloudFormation pilha, balanceadores de carga, grupos de Auto Scaling e configuração de rede associada a regras de grupos de segurança, tabelas de rotas e. ACLs

Ele também oferece a opção de fazer upload de arquivos de log agrupados do seu ambiente para o AWS Support.

Para obter mais informações, consulte AWSSupport-TroubleshootElasticBeanstalk na Referência do runbook do AWS Systems Manager  Automation.

Usar o Systems Manager para executar o runbook do AWSSupport-TroubleshootElasticBeanstalk
nota

Execute esse procedimento no mesmo Região da AWS local em que seu ambiente do Elastic Beanstalk está localizado.

  1. Abra o console do AWS Systems Manager.

  2. No painel de navegação, em Gerenciamento de alterações, escolha Automação.

  3. Escolha Execute automation.

  4. Na guia Pertencente à Amazon, na caixa de pesquisa Documentos de automação, insira AWSSupport-TroubleshootElasticBeanstalk.

  5. Selecione o AWSSupport-TroubleshootElasticBeanstalkcartão e escolha Avançar.

  6. Selecione Executar.

  7. Na seção Parâmetros de entrada:

    1. No menu AutomationAssumeRolesuspenso, selecione o ARN da função que permite que o Systems Manager execute ações em seu nome.

    2. ApplicationNameEm, insira o nome do aplicativo Elastic Beanstalk.

    3. Em Nome do ambiente, insira o ambiente do Elastic Beanstalk.

    4. (Opcional) Para o S3 UploaderLink, insira um link se um AWS Support Engineer tiver fornecido um link do S3 para a coleta de registros.

  8. Escolha Executar.

    Se alguma das etapas falhar, selecione o link na coluna ID da etapa da etapa que falhou. Fazer isso exibe uma página Detalhes da execução para a etapa. A VerificationErrorMessageseção exibirá um resumo das etapas que requerem atenção. Por exemplo, IAMPermissionCheck pode exibir uma mensagem de aviso. Nesse caso, você pode verificar se a função selecionada no AutomationAssumeRolemenu suspenso tem as permissões necessárias.

Depois que todas as etapas forem concluídas com êxito, o resultado fornecerá etapas de solução de problemas e recomendações para restaurar seu ambiente a um estado íntegro.

Orientação geral para solução de problemas no ambiente Elastic Beanstalk

As mensagens de erro podem ser exibidas na página Eventos no console, em logs ou na página Integridade. Você também pode tomar medidas para se recuperar de um ambiente degradado causado por uma alteração recente. Se a integridade do seu ambiente mudar para vermelho, tente o seguinte:

  • Se uma operação em seu ambiente retornar um erro contendo o textoThe stack stack_id associated with environment environment-ID is in stack-status state, consulte Recuperando seu ambiente do Elastic Beanstalk de um estado inválido para obter ajuda para solução de problemas.

  • Se uma operação em seu ambiente retornar um erro que contenha o textoEnvironment environment-name associated CloudFormation stack stack_arn does not exist, encerre seu ambiente e crie outro.

  • Analise os eventos recentes do ambiente. As mensagens do Elastic Beanstalk sobre problemas de implantação, carregamento e configuração geralmente aparecem aqui.

  • Analise o recente histórico de alterações do ambiente. O histórico de alterações lista todas as alterações de configuração feitas nos seus ambientes e inclui outras informações, como qual usuário do IAM fez alterações e quais parâmetros de configuração foram definidos.

  • Extraia os logs para visualizar as entradas recentes do arquivo de log. Os logs do servidor Web contêm informações sobre as solicitações de entrada e os erros.

  • Conecte-se a uma instância e verifique os recursos do sistema.

  • Reverta para uma versão anterior válida da aplicação.

  • Desfaça as alterações de configuração recentes ou restaure uma configuração salva.

  • Implante um novo ambiente. Se ele parecer íntegro, execute uma troca de CNAME para rotear o tráfego para o novo ambiente e continuar depurando o anterior.

Ambientes que acessam segredos e parâmetros com variáveis de ambiente

Evento: falha na implantação da instância ao obter um ou mais segredos

Essa mensagem indica que o Elastic Beanstalk não conseguiu buscar um ou mais dos segredos especificados durante a implantação do seu aplicativo.

  • Verifique se os recursos especificados pelos valores do ARN na configuração da variável de ambiente existem.

  • Confirme se sua função de perfil da instância do EC2 Elastic Beanstalk tem as permissões necessárias do IAM para acessar os recursos.

  • Se esse evento foi acionado por meio da RestartAppServer operação, depois que o problema for corrigido, tente fazer a RestartAppServer chamada novamente para resolver o problema.

  • Se o evento foi acionado por meio de uma UpdateEnvironment chamada, repita a UpdateEnvironment operação.

Para ver exemplos desses comandos, veja AWS CLI exemplos do Elastic Beanstalk. Para obter mais informações sobre as ações da API para essas operações, consulte a Referência AWS Elastic Beanstalk da API.

Evento: a implantação da instância detectou um ou mais valores de ambiente de várias linhas, que não são compatíveis com essa plataforma

As variáveis de várias linhas não são compatíveis com as plataformas Amazon Linux 2, exceto as plataformas Docker gerenciadas pelo Docker e pelo ECS. Para ver as opções disponíveis para continuar, consulteValores de várias linhas.

Evento: CreateEnvironment falha quando um segredo é especificado

Quando uma CreateEnvironment falha e você tem segredos como variáveis de ambiente, você precisa resolver o problema subjacente e usá-lo UpdateEnvironment para concluir a configuração do ambiente. Não useRestartAppServer, pois não será suficiente para melhorar o meio ambiente nessa situação. Para ver exemplos desses comandos, veja AWS CLI exemplos do Elastic Beanstalk. Para obter mais informações sobre as ações da API para essas operações, consulte a Referência AWS Elastic Beanstalk da API.

Criação de ambiente e execução de instâncias

Evento: falha ao executar o ambiente

Este evento ocorre quando o Elastic Beanstalk tenta executar um ambiente e encontra falhas nesse processo. Os eventos anteriores na página Eventos irão alertá-lo para a causa raiz do problema.

Evento: operação de criação do ambiente concluída, mas com tempos limites de comando excedidos. Tente aumentar o tempo limite.

A implantação do seu aplicativo poderá levar muito tempo se você usar arquivos de configuração que executam comandos na instância, fizer download de arquivos grandes ou instalar pacotes. Aumente o tempo limite do comando para dar ao aplicativo mais tempo para iniciar a execução durante as implantações.

Evento: Falha na criação dos seguintes recursos: [AWSEBInstanceLaunchWaitCondition]

Essa mensagem indica que as EC2 instâncias da Amazon do seu ambiente não comunicaram ao Elastic Beanstalk que foram lançadas com sucesso. Isso pode ocorrer se as instâncias não têm conectividade com a Internet. Se você configurou o ambiente para executar instâncias em uma sub-rede da VPC privada, a sub-rede precisará ter um NAT para permitir que as instâncias se conectem ao Elastic Beanstalk.

Evento: um perfil de serviço é necessário nessa região. Adicione uma opção de perfil de serviço ao ambiente.

O Elastic Beanstalk usa uma função de serviço para monitorar os recursos no ambiente e oferecer suporte às atualizações gerenciadas da plataforma. Consulte Gerenciar funções de serviço do Elastic Beanstalk para obter mais informações.

Implantações

Problema: o aplicativo fica indisponível durante as implantações

Como o Elastic Beanstalk usa um processo de atualização "drop-in", pode haver alguns segundos de tempo de inatividade. Use as implantações contínuas para minimizar o efeito das implantações em seus ambientes de produção.

Evento: Falha ao criar a versão do aplicativo AWS Elastic Beanstalk

Seu pacote de origem do aplicativo pode ser muito grande ou você pode ter atingido a cota de versões do aplicativo.

Evento: operação de atualização do ambiente concluída, mas com tempos limites de comando excedidos. Tente aumentar o tempo limite.

A implantação do seu aplicativo poderá levar muito tempo se você usar arquivos de configuração que executam comandos na instância, fizer download de arquivos grandes ou instalar pacotes. Aumente o tempo limite do comando para dar ao aplicativo mais tempo para iniciar a execução durante as implantações.

Integridade

Evento: utilização da CPU excede 95%

Tente executar mais instâncias ou escolher outro tipo de instância.

Evento: Elastic Load Balancer awseb- myapp não tem instâncias íntegras

Se o aplicativo parece estar funcionando, verifique se o URL de verificação de integridade do aplicativo está configurado corretamente. Caso contrário, verifique os logs de ambiente e tela de integridade para obter mais informações.

Evento: Elastic Load Balancer awseb - Não pode ser encontrado myapp

O balanceador de carga do seu ambiente pode ter sido removido out-of-band. Somente faça alterações nos recursos do ambiente com as opções de configuração e extensibilidade fornecidas pelo Elastic Beanstalk. Reconstrua o ambiente ou inicie um novo.

Evento: falha na inicialização da EC2 instância. Aguardando a inicialização de uma nova EC2 instância...

A disponibilidade para o tipo de instância do seu ambiente pode estar baixa ou você pode ter atingido a cota de instâncias da sua conta. Verifique o painel de integridade do serviço para garantir que o serviço Elastic Compute Cloud (Amazon EC2) seja ecológico ou solicite um aumento de cota.

Configuração

Evento: A pilha stack_id associada ao ambiente environment-ID está no stack-status estado

A AWS CloudFormation pilha subjacente do seu ambiente pode estar no status *_FAILED. Esse status deve ser corrigido para continuar as operações do Elastic Beanstalk em seu ambiente. Para obter mais informações, consulte Recuperando seu ambiente do Elastic Beanstalk de um estado inválido.

Evento: você não pode configurar um ambiente do Elastic Beanstalk com valores para as ambas as opções, Elastic Load Balancing Target (Destino do balanceamento de carga elástico) e Application Healthcheck URL (URL para verificação de integridade da aplicação)

A opção Target no namespace aws:elb:healthcheck está obsoleta. Remova o namespace da opção Target de seu ambiente e tente atualizar novamente.

Evento: o ELB não pode ser conectado a várias sub-redes na mesma AZ

Esta mensagem poderá ser visualizada se você tentar mover um load balancer entre sub-redes na mesma zona de disponibilidade. A alteração de sub-redes no load balancer requer movê-lo para fora da(s) zona(s) de disponibilidade original(is) e, em seguida, de volta à original com as sub-redes desejadas. Durante o processo, todas as suas instâncias serão migradas entre elas AZs, causando um tempo de inatividade significativo. Em vez disso, considere criar um novo ambiente e executar uma troca CNAME.

Solução de problemas de contêineres do Docker

Evento: falha ao extrair imagem do Docker: mais recentes: nome do repositório inválido (), apenas [a-z0-9-_.] são permitidos. Siga os logs para obter mais detalhes.

Verifique a sintaxe do arquivo dockerrun.aws.json usando um validador JSON. Verifique também o conteúdo do dockerfile em relação aos requisitos descritos em Preparar a imagem do Docker para implantação no Elastic Beanstalk

Evento: Nenhuma diretiva EXPOSE encontrada no Dockerfile, abortar a implantação

O arquivo Dockerfile ou dockerrun.aws.json não declara a porta do contêiner. Use a instrução EXPOSE (Dockerfile) ou Ports bloco (arquivo dockerrun.aws.json) para expor uma porta do tráfego de entrada.

Evento: falha ao baixar as credenciais repository de autenticação do bucket name

O dockerrun.aws.json fornece um bucket and/or S3 de par de EC2 chaves inválido para o .dockercfg arquivo. Ou o perfil da instância não tem GetObject autorização para o bucket do S3. Verifique se o .dockercfg arquivo contém um bucket e um par de EC2 chaves válidos do S3. Conceda permissões da ação s3:GetObject à função do IAM no perfil da instância. Para detalhes, consulte Gerenciar perfis de instância do Elastic Beanstalk

Evento: Falha na execução de atividade, porque: AVISO: arquivo de configuração de autorização inválido

Seu arquivo de autenticação (config.json) não está formatado corretamente. Consulte Usar imagens de um repositório privado no Elastic Beanstalk

Perguntas frequentes

Pergunta: Como posso alterar o URL do meu aplicativo de myapp.us-west-2.elasticbeanstalk.com para www.myapp.com?

Em um servidor DNS, registre um registro CNAME, como www.mydomain.com CNAME mydomain.elasticbeanstalk.com.

Pergunta: Como especifico uma zona de disponibilidade exclusiva para minha aplicação do Elastic Beanstalk?

Você pode escolher uma zona de disponibilidade específica usando a CLI APIs, o plug-in Eclipse ou o plug-in do Visual Studio. Para obter instruções sobre como usar o console do Elastic Beanstalk para especificar uma zona de disponibilidade, consulte Auto Scaling de suas instâncias do ambiente do Elastic Beanstalk.

Pergunta: Como posso alterar o tipo de instância do meu ambiente?

Para alterar o tipo de instância do ambiente, acesse a página de configuração do ambiente e escolha Edit (Editar) na categoria de configuração Instances (Instâncias). Selecione um novo tipo de instância e escolha Apply (Aplicar) para atualizar o ambiente. Depois disso, o Elastic Beanstalk encerra todas as instâncias em execução e as substitui por novas.

Pergunta: Como determino se alguém fez alterações de configuração em um ambiente?

Para ver essas informações, no painel de navegação do console do Elastic Beanstalk, escolha Change history (Alterar histórico) para exibir uma lista de alterações de configuração para todos os ambientes. Essa lista inclui a data e a hora da alteração, o parâmetro de configuração e o valor para o qual ele foi alterado e o usuário do IAM que fez a alteração. Para obter mais informações, consulte Histórico de alterações.

Pergunta: posso impedir que os volumes do Amazon EBS sejam excluídos quando as instâncias são encerradas?

As instâncias do ambiente usam o Amazon EBS para armazenamento; no entanto, o volume raiz é excluído quando uma instância é encerrada pelo Auto Scaling. Nós não recomendamos que você armazene o estado ou outros dados em suas instâncias. Se necessário, você pode evitar que os volumes sejam excluídos com AWS CLI: $ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false conforme descrito na AWS CLI Referência.

Pergunta: como faço para excluir informações pessoais da aplicação do Elastic Beanstalk?

AWS os recursos que seu aplicativo Elastic Beanstalk usa podem armazenar informações pessoais. Quando um ambiente é encerrado, o Elastic Beanstalk encerra os recursos que ele criou. Os recursos que você adicionou usando os arquivos de configuração também são encerrados. No entanto, se você criou AWS recursos fora do seu ambiente do Elastic Beanstalk e os associou ao seu aplicativo, talvez seja necessário verificar manualmente se as informações pessoais que seu aplicativo pode ter armazenado não foram retidas. Ao longo deste guia do desenvolvedor, sempre que discutimos a criação de recursos adicionais, também mencionamos quando você deve pensar em excluí-los.

Erros comuns

Este tópico lista as mensagens de erro comuns encontradas ao usar a EB CLI e as possíveis soluções. Se você encontrar uma mensagem de erro que não aparece aqui, use os links Feedback para relatá-la.

ERRO: Ocorreu um erro ao usar o comando git. Código do erro: 128 Erro: fatal: Não é um nome de objeto válido HEAD

Causa: essa mensagem de erro aparece quando você inicializou um repositório Git, mas ainda não confirmou. A EB CLI procura a revisão HEAD quando a pasta do seu projeto contém um repositório Git.

Solução: adicione os arquivos na pasta do seu projeto à área de preparação e confirme:

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

ERRO: Esta ramificação não tem um ambiente padrão. Você deve especificar um ambiente digitando “eb status my-env-name" ou definir um ambiente padrão digitando “eb use my-env-name”.

Causa: ao criar uma nova ramificação em git, ela não é anexada a um ambiente Elastic Beanstalk por padrão.

Solução: execute eb list para ver uma lista dos ambientes disponíveis. Em seguida, execute eb use env-name para usar um dos ambientes disponíveis.

ERRO: Plataformas 2.0+ exigem um perfil de serviço. Você pode fornecer uma com a opção --service-role

Causa: se você especificar um nome de ambiente com eb create (por exemplo, eb create my-env), a EB CLI não tentará criar uma função de serviço para você. Se você não tem a função de serviço padrão, o erro acima é mostrado.

Solução: execute eb create sem um nome de ambiente e siga os prompts para criar a função de serviço padrão.

Erros de implantação

Sua implantação do Elastic Beanstalk pode responder com uma resposta 404 (se o aplicativo falhar na inicialização) ou 500 (se o aplicativo falhar durante o tempo de execução). Para solucionar muitos problemas comuns, você pode usar a CLI do EB para verificar o status da sua implantação, visualizar seus registros, obter acesso à EC2 sua instância com SSH ou abrir a página do console de gerenciamento AWS do seu ambiente de aplicativos.

Para usar a EB CLI para ajudar a solucionar problemas de implantação
  1. Corra eb status para ver o status de sua implantação atual e a integridade de seus EC2 hosts. Por exemplo:

    $ 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

    O uso do switch --verbose fornece informações sobre o status das suas instâncias em execução. Sem ele, o eb status imprime somente informações gerais sobre seu ambiente.

  2. Execute eb health para visualizar informações de integridade do seu ambiente:

    $ 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

    O exemplo acima mostra um ambiente com cinco instâncias em que a implantação da versão "v2" falhou na terceira instância. Após uma implantação com falha, a versão esperada será redefinida para a última versão bem-sucedida que, neste caso, é o "Aplicativo de exemplo" da primeira implantação. Consulte Usar a EB CLI para monitorar a integridade do ambiente para obter mais informações.

  3. Execute eb logs para fazer download e visualizar os logs associados à implantação do aplicativo.

    $ eb logs
  4. Execute eb ssh para se conectar com a EC2 instância que está executando seu aplicativo e examine-a diretamente. Na instância, o aplicativo implantado está no diretório /opt/python/current/app, e seu ambiente Python está em /opt/python/run/venv/.

  5. Execute eb console para visualizar o ambiente da aplicação no Console de Gerenciamento da AWS. Você pode usar a interface da Web para examinar facilmente diversos aspectos da implantação, incluindo configuração, status, eventos e logs do aplicativo. Você também pode fazer download das versões atuais ou anteriores do aplicativo que você implantou no servidor.