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

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

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

    Desassocie o grupo Amazon EC2 Auto Scaling do grupo de implantação ou altere CodeDeploy a configuração do seu grupo Amazon EC2 Auto Scaling para que o número desejado de instâncias corresponda ao número atual de instâncias (evitando assim que o Amazon EC2 Auto Scaling lance mais instâncias do EC2). Para obter mais informações, consulte Altere as configurações do grupo de implantação com CodeDeploy ou Escalabilidade manual do 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 instância do EC2 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 instância do EC2 em um grupo do Amazon EC2 Auto Scaling é reinicializada durante uma implantação. Sua implantação pode falhar se uma instância do EC2 for reinicializada durante uma implantação ou se o CodeDeploy agente for desligado durante o processamento de um comando de implantação. Para ter mais informações, consulte O encerramento ou a reinicialização de uma instância do Amazon EC2 Auto Scaling pode causar falhas nas implantações.

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

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

    • CodeDeploy o agente não está incluído na sua 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 na sua AMI: configure a 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 etapa final na 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ções, consulte Tutorial: Use CodeDeploy para implantar um aplicativo em um grupo do Auto Scaling, Criação de um modelo de execução para um grupo do Auto Scaling e Permissões no Manual do usuário do Amazon EC2 Auto Scaling.

As instâncias em um grupo de Amazon EC2 Auto Scaling são continuamente provisionadas e encerradas 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 Amazon EC2 Auto 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 fará 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 integridade do Amazon EC2 Auto Scaling.

  • Um erro na revisão de aplicativo.

Para contornar esse problema, siga estas etapas:

  1. Crie manualmente uma instância do EC2 que não faça parte do grupo Amazon EC2 Auto Scaling. Marque a instância com uma tag de instância do EC2 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 do Amazon EC2 Auto Scaling implante a revisão do aplicativo em futuras instâncias do grupo do Amazon EC2 Auto 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.

O encerramento ou a reinicialização de uma instância do Amazon EC2 Auto Scaling pode causar falhas nas implantações

Se uma instância do EC2 for iniciada através do Amazon EC2 Auto Scaling e, depois, for encerrada ou reinicializada, as implantações nessa instância poderão falhar pelos seguintes motivos:

  • Durante uma implantação em andamento, um evento de dimensionamento ou qualquer outro evento de encerramento faz com que a instância se separe do grupo do Amazon EC2 Auto Scaling e 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 poderão falhar se você especificar uma imagem de máquina da Amazon (AMI) de base do Windows Server para uma configuração do Amazon EC2 Auto Scaling e usar o serviço EC2Config para definir o nome do computador da instância. Para corrigir esse problema, na AMI base do Windows Server, na guia Geral de Propriedades do serviço EC2, desmarque Definir o nome do computador. Depois que você desmarcar a caixa de seleção, esse comportamento será desabilitado para todas as novas instâncias do Amazon EC2 Auto Scaling no Windows Server executadas com essa AMI base do Windows Server. Para as instâncias do Amazon EC2 Auto Scaling no Windows Server em que esse comportamento esteja habilitado, 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 de Amazon EC2 Auto Scaling

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

Isso porque, se o Amazon EC2 Auto Scaling aumentar verticalmente a escala de uma instância que tem hooks associados a vários grupos de implantação, ela enviará notificações para todos os hooks 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 ter 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.

Por fim, se a implantação em qualquer instância falhar, o Amazon EC2 Auto Scaling encerrará essa instância imediatamente. 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: and CodeDeploy Auto Scaling integration.

As instâncias do EC2 em um grupo Amazon EC2 Auto Scaling falham ao ser iniciadas e recebem o erro "Heartbeat Timeout"

Um grupo Amazon EC2 Auto Scaling pode falhar ao inicializar novas instâncias do EC2, 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 do Auto Scaling tentou iniciar muitas instâncias do EC2 muito rapidamente. As chamadas de API 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 qualquer gancho do Amazon EC2 Auto Scaling associado 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, insira 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 a 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 estrutura hooksNotCleanedUp com uma lista de ganchos do ciclo de vida de Amazon EC2 Auto Scaling, os ganchos do ciclo de vida restantes são provavelmente a causa do erro.

  2. Chame o describe-lifecycle-hookscomando, especificando o nome do grupo Amazon EC2 Auto Scaling associado às instâncias do EC2 que falharam 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 à estrutura hooksNotCleanedUp 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 do 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 aceleraçã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 do Amazon EC2 Auto Scaling e o gancho do ciclo de vida 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 consigam implantar suas revisões de aplicativos em instâncias escaláveis do 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 novas instâncias do EC2 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 do ciclo de vida do Amazon EC2 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 e o uso de ganchos de ciclo de vida para determinar quais revisões de aplicativos devem ser implantadas em quais instâncias do EC2 após serem lançadas em grupos do Amazon EC2 Auto Scaling. 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 EC2 Auto Scaling e. 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 dos nomes de ganchos do ciclo de vida para o grupo de Amazon EC2 Auto Scaling e 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 lista autoScalingGroups, localize cada item cujo valor de nome corresponda ao nome do grupo de Amazon EC2 Auto Scaling e depois anote o valor de hook correspondente.

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. Você pode tentar outras etapas de solução de problemas do Amazon EC2 Auto Scaling descritas em outras partes 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 serão agora retomadas à medida que novas instâncias forem adicionadas ao grupo de 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 de ciclo de vida que faltam no grupo Amazon EC2 Auto Scaling. As implantações automáticas serão agora retomadas à medida que novas instâncias forem adicionadas ao grupo de 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 de aplicativos deverão ser reimplantadas, mas apenas nas novas instâncias à medida que elas forem adicionadas ao grupo de Amazon EC2 Auto Scaling. As implantações não ocorrem automaticamente para as instâncias que já estão no grupo do 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. Suas configurações de grupo de implantação incluem tags para instâncias do EC2, instâncias on-premises ou grupos do 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 ajusta de escala automático detectou instâncias defeituosas do EC2 (por exemplo, as instâncias do EC2 tiveram 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 console do Amazon EC2, 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 do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.

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

    1. Para verificar qual evento de gancho do ciclo de vida do ajuste de escala automático está falhando, consulte Como verificar uma ação de escala em um grupo do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.

    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 de 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.

    escalonamento automático da AWS set-desired-capacity -- auto-scaling-group-name ASG_NAME --desired-capacity 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 instância do EC2 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 hook que estava causando uma falha na implantação não está mais presente, o ajuste de escala automático cancela a instância EC2 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. Espere que a instância EC2 entre em um estado InService. 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 hook de volta à instância do EC2:

    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 do 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 console do Amazon EC2 e anote a configuração de Capacidade desejada do ajuste de escala automático. 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 instâncias do EC2 como 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.

    nota

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

    1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha Grupos do Auto Scaling 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 instância do EC2 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 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 instâncias do Amazon EC2 ou instância on-premises e adicione uma chave de tag de EC2 ou On-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 hook que estava causando uma falha na implantação não está mais presente, o ajuste de escala automático cancela a instância EC2 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. Espere que a instância EC2 entre em um estado InService. Para verificar seu estado:

    1. Abra o console do Amazon EC2 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 Instâncias do Amazon EC2 ou Instâncias on-premises, encontre a tag que você adicionou e remova-a.

    9. Desmarque a caixa de seleção ao lado de Instâncias do Amazon EC2 ou Instâncias on-premises.

    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 console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha Grupos do Auto Scaling 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.