Solucionar problemas do Amazon EC2 Auto Scaling - AWS CodeDeploy

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 do Amazon EC2 Auto Scaling

Solução geral de problemas do Amazon EC2 Auto Scaling

As implantações em EC2 instâncias em um grupo do Amazon EC2 Auto Scaling podem falhar pelos seguintes motivos:

  • O Amazon EC2 Auto Scaling inicia e encerra EC2 instâncias continuamente. Se CodeDeploy não puder implantar automaticamente a revisão do seu aplicativo, o Amazon EC2 Auto Scaling inicia e encerra EC2 instâncias continuamente.

    Desassocie o grupo Amazon EC2 Auto Scaling do grupo de CodeDeploy implantação ou altere a configuração do seu grupo Amazon Auto EC2 Scaling para que o número desejado de instâncias corresponda ao número atual de instâncias (evitando assim que o Amazon Auto EC2 Scaling lance mais instâncias). EC2 Para obter mais informações, consulte Altere as configurações do grupo de implantação com CodeDeploy ou Escalabilidade manual para Amazon EC2 Auto Scaling.

  • O CodeDeploy agente não responde. O CodeDeploy agente pode não ser instalado se os scripts de inicialização (por exemplo, scripts cloud-init) executados imediatamente após a inicialização ou inicialização de uma EC2 instância levarem mais de uma hora para serem executados. CodeDeploy tem um tempo limite de uma hora para o CodeDeploy agente responder às implantações pendentes. Para resolver esse problema, mova seus scripts de inicialização para a revisão do CodeDeploy aplicativo.

  • Uma EC2 instância em um grupo do Amazon EC2 Auto Scaling é reinicializada durante uma implantação. Sua implantação pode falhar se uma EC2 instância for reinicializada durante uma implantação ou se o CodeDeploy agente for desligado durante o processamento de um comando de implantação. Para obter mais informações, consulte Encerrar ou reiniciar uma instância do Amazon EC2 Auto Scaling pode fazer com que as implantações falhem.

  • Várias revisões de aplicativos são implantadas simultaneamente na mesma EC2 instância em um grupo do Amazon Auto EC2 Scaling. A implantação de várias revisões de aplicativos na mesma EC2 instância em um grupo do Amazon EC2 Auto Scaling ao mesmo tempo pode falhar se uma das implantações tiver scripts que sejam executados por mais de alguns minutos. Não implante várias revisões de aplicativos nas mesmas EC2 instâncias em um grupo do Amazon EC2 Auto Scaling.

  • Uma implantação falha para novas EC2 instâncias que são lançadas como parte de um grupo do Amazon EC2 Auto Scaling. Nesse cenário, a execução dos scripts em uma implantação pode impedir o lançamento de EC2 instâncias no grupo Amazon EC2 Auto Scaling. (Outras EC2 instâncias no grupo Amazon EC2 Auto Scaling podem parecer estar funcionando normalmente.) Para resolver esse problema, verifique se todos os outros scripts são concluídos primeiro:

    • CodeDeploy o agente não está incluído no seu AMI: Se você usar o cfn-init comando para instalar o CodeDeploy agente ao iniciar uma nova instância, coloque o script de instalação do agente no final da cfn-init seção do seu AWS CloudFormation modelo.

    • CodeDeploy o agente está incluído em seu AMI: Configure o AMI para que o agente esteja em um Stopped estado quando a instância for criada e, em seguida, inclua um script para iniciar o agente como a etapa final em sua biblioteca de cfn-init scripts.

“CodeDeployRole não lhe dá permissão para realizar operações no seguinte AWS serviço: AmazonAutoScaling" erro

As implantações que usam um grupo do Auto Scaling criado com um modelo de execução exige as permissões a seguir. Elas são um acréscimo às permissões concedidas pela política AWSCodeDeployRole AWS gerenciada.

  • EC2:RunInstances

  • EC2:CreateTags

  • iam:PassRole

Você poderá receber esse erro se não tiver essas permissões. Para obter mais informaçõesTutorial: Use CodeDeploy para implantar um aplicativo em um grupo do Auto Scaling, consulte Criação de um modelo de lançamento para um grupo de Auto Scaling e Permissões no Guia do usuário do Amazon Auto EC2 Scaling.

As instâncias em um grupo do Amazon EC2 Auto Scaling são provisionadas e encerradas continuamente antes que uma revisão possa ser implantada.

Em alguns casos, um erro pode impedir uma implantação bem-sucedida em instâncias recém-provisionadas em um grupo do Amazon Auto EC2 Scaling. Os resultados são instâncias não íntegras e implantações sem sucesso. Como a implantação não pode ser executada ou concluída com êxito, as instâncias são encerradas logo depois de serem criadas. A configuração do grupo Amazon EC2 Auto Scaling então faz com que outro lote de instâncias seja provisionado para tentar atender ao requisito mínimo de hosts íntegros. Este lote também é encerrado, e o ciclo continua.

As possíveis causas incluem:

  • Falha nas verificações de saúde do grupo Amazon EC2 Auto Scaling.

  • Um erro na revisão de aplicativo.

Para contornar esse problema, siga estas etapas:

  1. Crie manualmente uma EC2 instância que não faça parte do grupo Amazon EC2 Auto Scaling. Marque a instância com uma tag de EC2 instância exclusiva.

  2. Adicione a nova instância ao grupo de implementação afetado.

  3. Implante uma nova revisão de aplicativo sem erros no grupo de implantação.

Isso faz com que o grupo Amazon EC2 Auto Scaling implemente a revisão do aplicativo em futuras instâncias no grupo Amazon Auto EC2 Scaling.

nota

Depois de confirmar que as implantações foram bem-sucedidas, exclua a instância que você criou para evitar cobranças contínuas em sua AWS conta.

Encerrar ou reiniciar uma instância do Amazon EC2 Auto Scaling pode fazer com que as implantações falhem

Se uma EC2 instância for iniciada por meio do Amazon EC2 Auto Scaling e a instância for encerrada ou reinicializada, as implantações dessa instância poderão falhar pelos seguintes motivos:

  • Durante uma implantação em andamento, um evento de escalabilidade ou qualquer outro evento de encerramento faz com que a instância se separe do grupo Amazon Auto Scaling EC2 e, em seguida, seja encerrada. Como a implantação não pode ser concluída, ela falha.

  • A instância é reinicializada, mas leva mais de cinco minutos para ser iniciada. CodeDeploy trata isso como um tempo limite. O serviço reprova todas as implantações atuais e futuras na instância.

Para resolver esse problema:

  • Em geral, verifique se todas as implantações foram concluídas antes que a instância seja encerrada ou reinicializada. Verifique se todas as implantações foram iniciadas após a reinicialização da instância.

  • As implantações podem falhar se você especificar uma Amazon Machine Image (AMI) baseada no Windows Server para uma configuração do Amazon EC2 Auto Scaling e usar EC2Config o serviço para definir o nome do computador da instância. Para corrigir esse problema, na base do Windows ServerAMI, na guia Geral de Propriedades do EC2 Serviço, desmarque Definir nome do computador. Depois de desmarcar essa caixa de seleção, esse comportamento é desativado para todas as novas instâncias do Amazon EC2 Auto Scaling do Windows Server iniciadas com essa base do Windows Server. AMI Para instâncias do Amazon EC2 Auto Scaling do Windows Server nas quais esse comportamento foi ativado, você não precisa desmarcar essa caixa de seleção. Basta reimplantar implementações com falha nessas instâncias depois que elas forem reinicializadas.

Evite associar vários grupos de implantação a um único grupo do Amazon EC2 Auto Scaling

Como melhor prática, você deve associar somente um grupo de implantação a cada grupo do Amazon EC2 Auto Scaling.

Isso ocorre porque, se o Amazon EC2 Auto Scaling escalar uma instância que tem ganchos associados a vários grupos de implantação, ele envia notificações para todos os ganchos de uma só vez. Isso faz com que várias implantações em cada instância sejam iniciadas ao mesmo tempo. Quando várias implantações enviam comandos ao CodeDeploy agente ao mesmo tempo, o tempo limite de cinco minutos entre um evento do ciclo de vida e o início da implantação ou o final do evento do ciclo de vida anterior pode ser atingido. Se isso acontecer, a implantação falhará, mesmo que um processo de implantação esteja em execução conforme o esperado.

nota

O tempo limite padrão para um script em um evento de ciclo de vida é de 30 minutos. Você pode alterar o tempo limite para um valor diferente no AppSpec arquivo. Para obter mais informações, consulte Adicionar um AppSpec arquivo para uma implantação EC2/local.

Não é possível controlar a ordem em que as implantações ocorrem quando mais de uma implantação tenta ser executada ao mesmo tempo.

Finalmente, se a implantação em qualquer instância falhar, o Amazon EC2 Auto Scaling encerra imediatamente a instância. Quando essa primeira instância for encerrada, as outras implantações em execução começarão a falhar. Como CodeDeploy o tempo limite é de uma hora para o CodeDeploy agente responder às implantações pendentes, pode levar até 60 minutos para que cada instância atinja o tempo limite.

Para obter mais informações sobre o Amazon EC2 Auto Scaling, consulte Under the hood: CodeDeploy and Auto Scaling integration.

EC2instâncias em um grupo do Amazon EC2 Auto Scaling falham ao iniciar e recebem o erro “Heartbeat Timeout”

Um grupo do Amazon EC2 Auto Scaling pode falhar ao iniciar novas EC2 instâncias, gerando uma mensagem semelhante à seguinte:

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.

Em geral, essa mensagem indica uma das seguintes situações:

  • O número máximo de implantações simultâneas associadas a uma AWS conta foi atingido. Para obter mais informações sobre limites de implantação, consulte CodeDeploy cotas.

  • O grupo Auto Scaling tentou iniciar muitas EC2 instâncias muito rapidamente. As API chamadas para RecordLifecycleActionHeartbeatou CompleteLifecycleActionpara cada nova instância foram limitadas.

  • Um aplicativo em CodeDeploy foi excluído antes que seus grupos de implantação associados fossem atualizados ou excluídos.

    Quando você exclui um aplicativo ou grupo de implantação, CodeDeploy tenta limpar todos os ganchos do Amazon EC2 Auto Scaling associados a ele, mas alguns ganchos podem permanecer. Se você executar um comando para excluir um grupo de implantação, os ganchos restantes serão retornados na saída. No entanto, se você executar um comando para excluir um aplicativo, os ganchos restantes não aparecerão na saída.

    Portanto, como prática recomendada, você deve excluir todos os grupos de implantação associados a um aplicativo antes de excluir esse aplicativo. É possível usar a saída do comando para identificar os ganchos de ciclo de vida que devem ser excluídos manualmente.

Se receber uma mensagem de erro "Heartbeat Timeout" (Tempo de vida de pulsação), você poderá determinar se os ganchos de ciclo de vida útil restantes são a causa e resolver o problema fazendo o seguinte:

  1. Execute um destes procedimentos:

    • Chame o delete-deployment-groupcomando para excluir o grupo de implantação associado ao grupo Auto Scaling que está causando o tempo limite do heartbeat.

    • Chame o update-deployment-groupcomando com uma lista vazia não nula de nomes de grupos do Auto Scaling para separar todos os ganchos do ciclo de vida do CodeDeploy Auto Scaling gerenciados.

      Por exemplo, digite o seguinte AWS CLI comando:

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

      Como outro exemplo, se você estiver usando o CodeDeploy API com Java, chame UpdateDeploymentGroup e autoScalingGroups defina comonew ArrayList<String>(). Isso configura o autoScalingGroups para uma lista vazia e remove a lista existente. Não use null, que é o padrão, pois isso deixa o autoScalingGroups como está, e isso não é o que você deseja.

    Examine a saída da chamada. Se a saída contiver uma hooksNotCleanedUp estrutura com uma lista de ganchos do ciclo de vida do Amazon EC2 Auto Scaling, haverá ganchos de ciclo de vida restantes.

  2. Chame o describe-lifecycle-hookscomando, especificando o nome do grupo Amazon EC2 Auto Scaling associado às instâncias que falharam EC2 na inicialização. Na saída, procure qualquer um dos seguintes:

    • Nomes de ganchos do ciclo de vida do Amazon EC2 Auto Scaling que correspondem à hooksNotCleanedUp estrutura que você identificou na etapa 1.

    • Nomes de ganchos do ciclo de vida do Amazon EC2 Auto Scaling que contêm o nome do grupo de implantação associado ao grupo de Auto Scaling que está falhando.

    • Nomes de ganchos do ciclo de vida do Amazon EC2 Auto Scaling que podem ter causado o tempo limite de pulsação da implantação. CodeDeploy

  3. Se um gancho se enquadrar em uma das categorias listadas na etapa 2, chame o delete-lifecycle-hookcomando para excluí-lo. Especifique o grupo e o gancho do ciclo de vida do Amazon EC2 Auto Scaling na chamada.

    Importante

    Exclua somente os hooks que estão causando problemas, conforme descrito na etapa 2. Se você excluir ganchos viáveis, suas implantações poderão falhar ou CodeDeploy talvez não consiga implantar suas revisões de aplicativos em instâncias escaláveis. EC2

  4. Chame o create-deployment-groupcomando update-deployment-groupou com os nomes de grupo do Auto Scaling desejados. CodeDeployreinstala os ganchos do Auto Scaling com novos. UUIDs

nota

Se você separar um grupo do Auto Scaling de CodeDeploy um grupo de implantação, qualquer implantação em andamento no grupo do Auto Scaling poderá falhar, e as EC2 novas instâncias que forem escaladas pelo grupo do Auto Scaling não receberão as revisões do seu aplicativo. CodeDeploy Para que o Auto Scaling funcione novamente CodeDeploy, você precisará reconectar o grupo do Auto Scaling ao grupo de implantação e chamar um novo para iniciar uma implantação em toda CreateDeployment a frota.

Ganchos incompatíveis do ciclo EC2 de vida do Amazon Auto Scaling podem fazer com que as implantações automáticas em grupos do Amazon EC2 Auto Scaling parem ou falhem

O Amazon EC2 Auto Scaling CodeDeploy usa ganchos de ciclo de vida para determinar quais revisões de aplicativos devem ser implantadas em quais instâncias EC2 após serem lançadas em grupos do Amazon Auto Scaling. EC2 As implantações automáticas podem parar ou falhar se os ganchos do ciclo de vida e as informações sobre esses ganchos não corresponderem exatamente ao Amazon Auto Scaling e. EC2 CodeDeploy

Se as implantações em um grupo do Amazon EC2 Auto Scaling estiverem falhando, veja se os nomes dos ganchos do ciclo de vida no Amazon EC2 Auto Scaling correspondem. CodeDeploy Caso contrário, use essas chamadas de AWS CLI comando.

Primeiro, obtenha a lista de nomes de ganchos de ciclo de vida tanto para o grupo Amazon Auto EC2 Scaling quanto para o grupo de implantação:

  1. Chame o describe-lifecycle-hookscomando, especificando o nome do grupo Amazon EC2 Auto Scaling associado ao grupo de implantação em. CodeDeploy Na saída, na lista LifecycleHooks, anote cada valor de LifecycleHookName.

  2. Chame o get-deployment-groupcomando, especificando o nome do grupo de implantação associado ao grupo Amazon EC2 Auto Scaling. Na saída, na autoScalingGroups lista, encontre cada item cujo valor de nome corresponda ao nome do grupo Amazon EC2 Auto Scaling e, em seguida, anote o valor correspondentehook.

Agora, compare os dois conjuntos de nomes de ganchos de ciclo de vida. Se eles corresponderem exatamente, caractere por caractere, então este não é o problema. Talvez você queira tentar outras etapas de solução de problemas do Amazon EC2 Auto Scaling descritas em outra parte desta seção.

No entanto, se os dois conjuntos de nomes de ganchos de ciclo de vida não corresponderem exatamente, caractere por caractere, faça o seguinte:

  1. Se houver nomes de ganchos de ciclo de vida na saída do comando describe-lifecycle-hooks que também não estão na saída do comando get-deployment-group, faça o seguinte:

    1. Para cada nome de gancho do ciclo de vida na saída do describe-lifecycle-hooks comando, chame o delete-lifecycle-hookcomando.

    2. Chame o update-deployment-groupcomando, especificando o nome do grupo original do Amazon EC2 Auto Scaling. CodeDeploy cria novos ganchos de ciclo de vida de substituição no grupo Amazon EC2 Auto Scaling e associa os ganchos de ciclo de vida ao grupo de implantação. As implantações automáticas agora devem ser retomadas à medida que novas instâncias são adicionadas ao grupo Amazon EC2 Auto Scaling.

  2. Se houver nomes de ganchos de ciclo de vida na saída do comando get-deployment-group que não estejam também na saída do comando describe-lifecycle-hooks, faça o seguinte:

    1. Chame o update-deployment-groupcomando, mas não especifique o nome do grupo original do Amazon EC2 Auto Scaling.

    2. Chame o update-deployment-group comando novamente, mas desta vez especifique o nome do grupo original do Amazon EC2 Auto Scaling. CodeDeploy recria os ganchos do ciclo de vida que faltam no grupo Amazon Auto EC2 Scaling. As implantações automáticas agora devem ser retomadas à medida que novas instâncias são adicionadas ao grupo Amazon EC2 Auto Scaling.

Depois de fazer com que os dois conjuntos de nomes de ganchos do ciclo de vida correspondam exatamente, caractere por caractere, as revisões do aplicativo devem ser implantadas novamente, mas somente em novas instâncias à medida que elas forem adicionadas ao grupo Amazon Auto EC2 Scaling. As implantações não ocorrem automaticamente em instâncias que já estão no grupo Amazon EC2 Auto Scaling.

Erro “A implantação falhou porque nenhuma instância foi encontrada para seu grupo de implantação”

Leia esta seção se você ver o seguinte CodeDeploy erro:

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.

As causas possíveis esse erro são:

  1. As configurações do seu grupo de implantação incluem tags para EC2 instâncias, instâncias locais ou grupos de Auto Scaling que não estão corretas. Para corrigir esse problema, verifique se suas tags estão corretas e reimplante seu aplicativo.

  2. Sua frota aumentou a escala horizontalmente após o início da implantação. Nesse cenário, você vê instâncias íntegras no estado InService da sua frota, mas também vê o erro acima. Para corrigir o problema, reimplante o aplicativo.

  3. Seu grupo do Auto Scaling não inclui nenhuma instância que esteja no estado InService. Nesse cenário, quando você tenta fazer uma implantação em toda a frota, a implantação falha com a mensagem de erro acima porque CodeDeploy precisa de pelo menos uma instância para estar no InService estado. Há muitos motivos pelos quais você pode não ter instâncias no estado InService. Alguns deles incluem:

    • Você programou (ou configurou manualmente) o tamanho do grupo do Auto Scaling para ser 0.

    • O Auto Scaling detectou EC2 instâncias defeituosas (por exemplo, as EC2 instâncias tinham falhas de hardware), então cancelou todas elas, sem deixar nenhuma no estado. InService

    • Durante um evento de expansão horizontal de 0 até1, CodeDeploy implantou uma revisão anteriormente bem-sucedida (chamada de última revisão bem-sucedida) que não estava íntegra desde a última implantação. Isso fez com que a implantação na instância escalonada falhasse, o que, por sua vez, fez com que o ajuste de escala automático cancelasse a instância, sem deixar nenhuma instância no estado InService.

      Se você achar que não tem instâncias no estado InService, solucione o problema conforme descrito no procedimento a seguir, To troubleshoot the error if there are no instances in the InService state.

Para solucionar o erro se não houver instâncias no estado InService
  1. No EC2 console da Amazon, verifique a configuração de capacidade desejada. Se for zero, defina-a como um número positivo. Aguarde até que a instância apareça como InService, o que significa que a implantação foi bem-sucedida. Você corrigiu o problema e pode pular as etapas restantes desse procedimento de solução de problemas. Para obter informações sobre como definir a configuração de capacidade desejada, consulte Definindo limites de capacidade em seu grupo de Auto Scaling no Guia do usuário do Amazon Auto EC2 Scaling.

  2. Se o Auto Scaling continuar tentando lançar novas EC2 instâncias para atingir a capacidade desejada, mas nunca conseguir atingir a escala horizontal, geralmente é devido a uma falha no ciclo de vida do Auto Scaling. Solucione esse problema da seguinte maneira:

    1. Para verificar qual evento de gancho do ciclo de vida do Auto Scaling está falhando, consulte Verificação de uma atividade de escalabilidade para um grupo de Auto Scaling no Guia do usuário do Amazon Auto Scaling. EC2

    2. Se o nome do gancho com falha forCodeDeploy-managed-automatic-launch-deployment-hook-DEPLOYMENT_GROUP_NAME, acesse CodeDeploy, encontre o grupo de implantação e encontre a implantação com falha que foi iniciada pelo Auto Scaling. Em seguida, investigue por que a implantação falhou.

    3. Se você entender por que a implantação falhou (por exemplo, CloudWatch alarmes estavam ocorrendo) e puder corrigir o problema sem alterar a revisão, faça isso agora.

    4. Se, após a investigação, você determinar que CodeDeploy a última revisão bem-sucedida não está mais íntegra e que não há nenhuma instância íntegra em seu grupo de Auto Scaling, você está em um cenário de impasse na implantação. Para resolver esse problema, você deve corrigir a CodeDeploy revisão incorreta removendo temporariamente o gancho de ciclo CodeDeploy de vida do grupo Auto Scaling e, em seguida, reinstalando o gancho e reimplantando uma nova (boa) revisão. Para obter instruções, consulte:

Para corrigir o problema de impasse na implantação () CLI
  1. (Opcional) Bloqueie os pipelines de CI/CD que estão causando o CodeDeploy erro para que implantações inesperadas não ocorram enquanto você corrige esse problema.

  2. Anote sua configuração atual do Auto Scaling DesiredCapacity:

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

    Talvez seja necessário reduzir para esse número no final deste procedimento.

  3. Defina sua configuração de Auto Scaling DesiredCapacitycomo. 1 Isso é opcional se a capacidade desejada for maior do que 1 no início. Ao reduzi-la para 1, a instância levará menos tempo para provisionar e implantar posteriormente, o que acelera a solução de problemas. Se a capacidade desejada do ajuste de escala automático foi originalmente definida como 0, você deve aumentá-la para 1. Isso é obrigatório.

    como escalonamento automático set-desired-capacity -- auto-scaling-group-name ASG_NAME --capacidade desejada 1

    nota

    As etapas restantes desse procedimento pressupõem que você tenha definido seu DesiredCapacity1.

    Nesse momento, o ajuste de escala automático tenta escalar para uma instância. Então, como o gancho CodeDeploy adicionado ainda está presente, CodeDeploy tenta implantar; a implantação falha; o Auto Scaling cancela a instância; e o Auto Scaling tenta relançar uma instância para atingir a capacidade desejada de uma, o que novamente falha. Você está em um ciclo de cancelamento e reinicialização.

  4. Cancele o registro do grupo do Auto Scaling do grupo de implantação:

    Atenção

    O comando a seguir iniciará uma nova EC2 instância sem nenhum software nela. Antes de executar o comando, verifique se uma instância InService do ajuste de escala automático que não executa nenhum software é aceitável. Por exemplo, certifique-se de que o balanceador de carga associado à instância não esteja enviando tráfego para esse host sem software.

    Importante

    Use o CodeDeploy comando mostrado abaixo para remover o gancho. Não remova o gancho por meio do serviço Auto Scaling, pois a remoção não será reconhecida pelo. CodeDeploy

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

    Depois que o comando é executado, ocorre o seguinte:

    1. CodeDeploy cancela o registro do grupo Auto Scaling do grupo de implantação.

    2. CodeDeploy remove o gancho do ciclo de vida do Auto Scaling do grupo Auto Scaling.

    3. Como o gancho que estava causando uma falha na implantação não está mais presente, o Auto Scaling cancela a EC2 instância existente e inicia imediatamente uma nova para escalar até a capacidade desejada. A nova instância deve entrar no estado InService em breve. A nova instância não inclui software.

  5. Aguarde até que a EC2 instância entre no InService estado. Para verificar seu estado, use o seguinte comando:

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

  6. Adicione o gancho de volta à EC2 instância:

    Importante

    Use o CodeDeploy comando mostrado abaixo para adicionar o gancho. Não use o serviço Auto Scaling para adicionar o gancho, pois a adição não será reconhecida pelo. CodeDeploy

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

    Depois que o comando é executado, ocorre o seguinte:

    1. CodeDeploy reinstala o gancho do ciclo de vida do Auto Scaling na instância EC2

    2. CodeDeploy registra novamente o grupo Auto Scaling com o grupo de implantação.

  7. Crie uma implantação em toda a frota com o Amazon S3 GitHub ou a revisão que você sabe que está íntegra e deseja usar.

    Por exemplo, se a revisão for um arquivo.zip em um bucket do Amazon S3 chamado my-revision-bucket com uma chave de objeto httpd_app.zip, digite o seguinte comando:

    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}"

    Como agora há uma instância InService no grupo do Auto Scaling, essa implantação deve funcionar e você não deve mais ver o erro A implantação falhou porque nenhuma instância foi encontrada para seu grupo de implantação.

  8. Depois que a implantação for bem-sucedida, escale seu grupo do Auto Scaling de volta para a capacidade original, caso você tenha escalado anteriormente:

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

Para corrigir o problema de impasse de implantação (console)
  1. (Opcional) Bloqueie os pipelines de CI/CD que estão causando o CodeDeploy erro para que implantações inesperadas não ocorram enquanto você corrige esse problema.

  2. Acesse o EC2 console da Amazon e anote a configuração de capacidade desejada do Auto Scaling. Talvez seja necessário reduzir para esse número no final deste procedimento. Para obter informações sobre como encontrar essa configuração, consulte Como definir limites de capacidade em seu grupo do Auto Scaling.

  3. Defina o número desejado de EC2 instâncias como1:

    Isso é opcional se a capacidade desejada for maior do que 1 no início. Ao reduzi-la para 1, a instância levará menos tempo para provisionar e implantar posteriormente, o que acelera a solução de problemas. Se a Capacidade desejada do ajuste de escala automático foi originalmente definida como 0, você deve aumentá-la para 1. Isso é obrigatório.

    nota

    As etapas restantes desse procedimento pressupõem que você tenha definido a capacidade desejada como 1.

    1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/e escolha Auto Scaling Groups no painel de navegação.

    2. Escolha a região apropriada.

    3. Acesse o grupo do Auto Scaling problemático.

    4. Em Detalhes do grupo, escolha Editar.

    5. Defina a Capacidade desejada como 1.

    6. Selecione Atualizar.

  4. Cancele o registro do grupo do Auto Scaling do grupo de implantação:

    Atenção

    As subetapas a seguir iniciarão uma nova EC2 instância sem nenhum software nela. Antes de executar o comando, verifique se uma instância InService do ajuste de escala automático que não executa nenhum software é aceitável. Por exemplo, certifique-se de que o balanceador de carga associado à instância não esteja enviando tráfego para esse host sem software.

    1. Abra o CodeDeploy console em https://console.aws.amazon.com/codedeploy/.

    2. Escolha a região apropriada.

    3. No painel de navegação, escolha Aplicativos.

    4. Escolha o nome do seu CodeDeploy aplicativo.

    5. Escolha o nome do seu grupo CodeDeploy de implantação.

    6. Selecione a opção Editar.

    7. Em Configuração do ambiente, desmarque os grupos do Amazon EC2 Auto Scaling.

      nota

      O console não permite que você salve a configuração se não houver uma configuração de ambiente definida. Para ignorar a verificação, adicione temporariamente uma tag de EC2 ou On-premises que você sabe que não será resolvida em nenhum host. Para adicionar uma tag, selecione EC2instâncias da Amazon ou instância local e adicione uma chave de tag de EC2 ouOn-premises. Você pode deixar a tag Value vazia.

    8. Escolha Salvar alterações.

      Depois de concluir essas subetapas, o seguinte vai acontecer:

      1. CodeDeploy cancela o registro do grupo Auto Scaling do grupo de implantação.

      2. CodeDeploy remove o gancho do ciclo de vida do Auto Scaling do grupo Auto Scaling.

      3. Como o gancho que estava causando uma falha na implantação não está mais presente, o Auto Scaling cancela a EC2 instância existente e inicia imediatamente uma nova para escalar até a capacidade desejada. A nova instância deve entrar no estado InService em breve. A nova instância não inclui software.

  5. Aguarde até que a EC2 instância entre no InService estado. Para verificar seu estado:

    1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

    2. No painel de navegação, escolha Groups Auto Scaling.

    3. Escolha seu grupo do Auto Scaling.

    4. No painel de conteúdo, escolha a guia Gerenciamento de instância.

    5. Em Instâncias, verifique se a coluna Ciclo de vida indica InServiceao lado da instância.

  6. Registre novamente o grupo Auto Scaling com CodeDeploy o grupo de implantação usando o mesmo método usado para removê-lo:

    1. Abra o CodeDeploy console em https://console.aws.amazon.com/codedeploy/.

    2. Escolha a região apropriada.

    3. No painel de navegação, escolha Aplicativos.

    4. Escolha o nome do seu CodeDeploy aplicativo.

    5. Escolha o nome do seu grupo CodeDeploy de implantação.

    6. Selecione a opção Editar.

    7. Em Configuração do ambiente, selecione grupos do Amazon EC2 Auto Scaling e selecione seu grupo do Auto Scaling na lista.

    8. Em EC2Instâncias da Amazon ou Instâncias locais, encontre a tag que você adicionou e remova-a.

    9. Desmarque a caixa de seleção ao lado de EC2Instâncias da Amazon ou Instâncias locais.

    10. Escolha Salvar alterações.

    Essa configuração reinstala o gancho do ciclo de vida no grupo do Auto Scaling.

  7. Crie uma implantação em toda a frota com o Amazon S3 GitHub ou a revisão que você sabe que está íntegra e deseja usar.

    Por exemplo, se a revisão for um arquivo.zip em um bucket do Amazon S3 chamado my-revision-bucket com uma chave de objeto de httpd_app.zip, faça o seguinte:

    1. No CodeDeploy console, na página Grupo de Implantação, escolha Criar implantação.

    2. Em Tipo de revisão, escolha Meu aplicativo está armazenado no Amazon S3.

    3. Para Local de revisão, escolha s3://my-revision-bucket/httpd_app.zip.

    4. Em Tipo de arquivo de revisão, selecione .zip.

    5. Escolha Criar implantação.

    Como agora há uma instância InService no grupo do Auto Scaling, essa implantação deve funcionar e você não deve mais ver o erro A implantação falhou porque nenhuma instância foi encontrada para seu grupo de implantação.

  8. Depois que a implantação for bem-sucedida, escale seu grupo do Auto Scaling de volta para a capacidade original, caso você tenha escalado anteriormente:

    1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/e escolha Auto Scaling Groups no painel de navegação.

    2. Escolha a região apropriada.

    3. Vá para seu grupo do Auto Scaling.

    4. Em Detalhes do grupo, escolha Editar.

    5. Configure a Capacidade desejada de volta ao valor original.

    6. Selecione Atualizar.