

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
<a name="troubleshooting-auto-scaling"></a>

**Topics**
+ [Solução de problemas gerais do Amazon EC2 Auto Scaling](#troubleshooting-auto-scaling-general)
+ [“CodeDeployRole não lhe dá permissão para realizar operações no seguinte AWS serviço: AmazonAutoScaling" erro](#troubleshooting-auto-scaling-permissions-error)
+ [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](#troubleshooting-auto-scaling-provision-termination-loop)
+ [O encerramento ou a reinicialização de uma instância do Amazon EC2 Auto Scaling pode causar falhas nas implantações](#troubleshooting-auto-scaling-reboot)
+ [Evite associar vários grupos de implantação a um único grupo de Amazon EC2 Auto Scaling](#troubleshooting-multiple-depgroups)
+ [As instâncias do EC2 em um grupo Amazon EC2 Auto Scaling falham ao ser iniciadas e recebem o erro "Heartbeat Timeout"](#troubleshooting-auto-scaling-heartbeat)
+ [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.](#troubleshooting-auto-scaling-hooks)
+ [Erro “A implantação falhou porque nenhuma instância foi encontrada para seu grupo de implantação”](#troubleshooting-deployment-failed-because-no-instances-found)

## Solução de problemas gerais do Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling-general"></a>

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](deployment-groups-edit.md) ou [Escalabilidade manual do Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html).
+ **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 sua revisão de aplicativo CodeDeploy.
+ **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 obter 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](#troubleshooting-auto-scaling-reboot).
+ **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 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
<a name="troubleshooting-auto-scaling-permissions-error"></a>

 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](tutorials-auto-scaling-group.md), [Criação de um modelo de execução para um grupo do Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) e [Permissões](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html#launch-templates-permissions) 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
<a name="troubleshooting-auto-scaling-provision-termination-loop"></a>

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.

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

1. 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
<a name="troubleshooting-auto-scaling-reboot"></a>

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 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 o serviço EC2 Config 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
<a name="troubleshooting-multiple-depgroups"></a>

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 obter mais informações, consulte [Adicionar um AppSpec arquivo para uma implantação EC2/local](application-revisions-appspec-file.md#add-appspec-file-server).

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 CodeDeploy hood: and Auto Scaling](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/) integration.

## As instâncias do EC2 em um grupo Amazon EC2 Auto Scaling falham ao ser iniciadas e recebem o erro "Heartbeat Timeout"
<a name="troubleshooting-auto-scaling-heartbeat"></a>

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](limits.md). 
+ O grupo do Auto Scaling tentou iniciar muitas instâncias do EC2 muito rapidamente. As chamadas de API para [RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html)ou [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)para 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-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-group.html)comando para excluir o grupo de implantação associado ao grupo Auto Scaling que está causando o tempo limite do heartbeat.
   + Chame o [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando 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 como`new 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. 

1. Chame o [describe-lifecycle-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)comando, 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 pulsação da implantação. CodeDeploy 

1. Se um gancho se enquadrar em uma das categorias listadas na etapa 2, chame o [delete-lifecycle-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)comando 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.

1. Chame o [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)comando [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)ou 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.
<a name="troubleshooting-auto-scaling-hooks"></a>

O Amazon EC2 Auto CodeDeploy Scaling usa 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-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)comando, 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`.

1. Chame o [get-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-group.html)comando, 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-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)comando.

   1. Chame o [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando, 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. 

1. 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-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando, mas não especifique o nome do grupo original do Amazon EC2 Auto Scaling.

   1. 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 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”
<a name="troubleshooting-deployment-failed-because-no-instances-found"></a>

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.

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

1. 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](#ToTroubleshootIfNoInServiceInstances).

**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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html) no *Guia do usuário do Amazon EC2 Auto Scaling*.

1. 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) no Guia do usuário do Amazon EC2 Auto Scaling.

   1. Se o nome do gancho com falha for`CodeDeploy-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.

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

   1. 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:
      + [To fix the deployment deadlock issue (CLI)](#ToFixDeployDeadlockCLI)
      + [To fix the deployment deadlock issue (console)](#ToFixDeployDeadlockConsole)

**Para corrigir o problema de impasse de implantação (CLI)**

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

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

1. Defina sua configuração de Auto Scaling **DesiredCapacity**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. 

   escalonamento automático da AWS set-desired-capacity -- --desired-capacity 1 auto-scaling-group-name *ASG\$1NAME* 
**nota**  
As etapas restantes desse procedimento pressupõem que você tenha definido seu **DesiredCapacity**`1`.

   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.

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

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

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

1. 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`

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

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

1. 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*.

1. 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 CI/CD pipelines que estão causando o CodeDeploy erro para que implantações inesperadas não ocorram enquanto você corrige esse problema.

1. 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html).

1. 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/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

   1. Escolha a região apropriada.

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

   1. Em **Detalhes do grupo**, escolha **Editar**.

   1. Defina a **Capacidade desejada** como **1**.

   1. Selecione **Atualizar**.

1. 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/](https://console.aws.amazon.com/codedeploy/).

   1. Escolha a região apropriada.

   1. No painel de navegação, escolha **Aplicativos**.

   1. Escolha o nome do seu CodeDeploy aplicativo.

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

   1. Escolha **Editar**.

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

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

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

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

1. 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/](https://console.aws.amazon.com/ec2/).

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

   1. Escolha seu grupo do Auto Scaling.

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

   1. Em **Instâncias**, verifique se a coluna **Ciclo de vida** indica **InService**ao lado da instância.

1. 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/](https://console.aws.amazon.com/codedeploy/).

   1. Escolha a região apropriada.

   1. No painel de navegação, escolha **Aplicativos**.

   1. Escolha o nome do seu CodeDeploy aplicativo.

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

   1. Escolha **Editar**.

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

   1. Em **Instâncias do Amazon EC2** ou **Instâncias on-premises**, encontre a tag que você adicionou e remova-a.

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

   1. Escolha **Salvar alterações**. 

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

1. 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**.

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

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

   1. Em **Tipo de arquivo de revisão**, selecione `.zip`.

   1. 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*.

1. 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/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

   1. Escolha a região apropriada.

   1. Vá para seu grupo do Auto Scaling.

   1. Em **Detalhes do grupo**, escolha **Editar**.

   1. Configure a **Capacidade desejada** de volta ao valor original.

   1. Selecione **Atualizar**.