

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

# Integração com outros AWS serviços
<a name="integrations-aws"></a>

CodeDeploy está integrado aos seguintes AWS serviços:


|  |  | 
| --- |--- |
| Amazon CloudWatch |  [A Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/) é um serviço de monitoramento dos recursos da AWS nuvem e dos aplicativos em que você executa AWS. Você pode usar CloudWatch a Amazon para coletar e rastrear métricas, coletar e monitorar arquivos de log e definir alarmes. CodeDeploy suporta as seguintes CloudWatch ferramentas:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  CodeDeploy oferece suporte ao [Amazon EC2 Auto Scaling](https://aws.amazon.com/autoscaling). Esse AWS serviço pode iniciar automaticamente instâncias do Amazon EC2 com base nos critérios que você especificar, por exemplo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html) Você pode escalar um grupo de instâncias do Amazon EC2 sempre que precisar delas e depois usá-las CodeDeploy para implantar revisões de aplicativos nelas automaticamente. O Amazon EC2 Auto Scaling encerra essas instâncias do Amazon EC2 quando elas não são mais necessárias. Saiba mais: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon Elastic Container Service |   Você pode usar CodeDeploy para implantar um aplicativo em contêineres do Amazon ECS como um conjunto de tarefas. CodeDeploy executa uma blue/green implantação instalando uma versão atualizada do aplicativo como um novo conjunto de tarefas de substituição. CodeDeploy redireciona o tráfego de produção do conjunto de tarefas original do aplicativo para o conjunto de tarefas de substituição. O conjunto de tarefas original é encerrado após uma implantação bem-sucedida. Para obter mais informações sobre o Amazon ECS, consulte [Amazon Elastic Container Service](https://aws.amazon.com/ecs/).  Você pode gerenciar a forma como o tráfego é transferido para o conjunto de tarefas atualizado durante uma implantação escolhendo uma configuração canária, linear ou all-at-once linear. Para obter mais informações sobre implantações do Amazon ECS, consulte [Implantações em uma plataforma de computação do Amazon ECS](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/deployment-steps-ecs.html).   | 
| AWS CloudTrail |  CodeDeploy está integrado com [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/). Esse serviço captura chamadas de API feitas por ou em nome de CodeDeploy sua AWS conta e entrega os arquivos de log para um bucket do Amazon S3 que você especificar. CloudTrailcaptura chamadas de API do CodeDeploy console, de CodeDeploy comandos por meio do AWS CLI ou CodeDeploy APIs diretamente do. Usando as informações coletadas pelo CloudTrail, você pode determinar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html) Saiba mais: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Cloud9 |  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/)é um ambiente de desenvolvimento integrado (IDE) on-line e baseado em nuvem que você pode usar para escrever, executar, depurar e implantar código usando apenas um navegador de uma máquina conectada à Internet. AWS Cloud9 inclui um editor de código, depurador, terminal e ferramentas essenciais, como o e o Git. AWS CLI  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html) Para obter mais informações sobre AWS Cloud9, consulte [O que é AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcom.html) e [Como começar a usar AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/get-started.html).  | 
| AWS CodePipeline |  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para lançar seu software em um processo de entrega contínua. Você pode usar o AWS CodePipeline para definir seu próprio processo de lançamento, para que o serviço crie, teste e implante seu código toda vez que houver uma mudança de código. Por exemplo, você pode ter três grupos de implantação para um aplicativo: Beta, Gamma e Prod. Você pode configurar um pipeline de forma que, cada vez que houver uma mudança no código-fonte, as atualizações sejam implantadas em cada grupo de implantação, uma a uma. Você pode configurar AWS CodePipeline para usar CodeDeploy para implantar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  Você pode criar o CodeDeploy aplicativo, a implantação e o grupo de implantação para usar em uma ação de implantação em um estágio antes de criar o pipeline ou no assistente **Create Pipeline**. Saiba mais: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Modelo de aplicativo sem servidor |  AWS O Serverless Application Model (AWS SAM) é um modelo para definir aplicativos sem servidor. Ele se estende CloudFormation para fornecer uma forma simplificada de definir AWS Lambda funções, tabelas do Amazon API Gateway APIs e do Amazon DynamoDB exigidas por um aplicativo sem servidor. Se você já usa o AWS SAM, pode adicionar preferências de implantação para começar a usar CodeDeploy para gerenciar a forma como o tráfego é deslocado durante a implantação de um aplicativo AWS Lambda. Para obter mais informações, consulte [AWS Serveless Application Model](https://github.com/awslabs/serverless-application-model).  | 
| Elastic Load Balancing |  CodeDeploy suporta o [Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html), um serviço que distribui o tráfego de entrada do aplicativo em várias instâncias do Amazon EC2.  Para CodeDeploy implantações, os balanceadores de carga também evitam que o tráfego seja roteado para instâncias quando elas não estão prontas, estão sendo implantadas no momento ou não são mais necessárias como parte de um ambiente. Saiba mais: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codedeploy/latest/userguide/integrations-aws.html)  | 

**Topics**
+ [Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md)
+ [Integrating CodeDeploy with Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)

# Integração CodeDeploy com o Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling"></a>

CodeDeploy oferece suporte ao Amazon EC2 Auto Scaling AWS , um serviço que lança instâncias do Amazon EC2 automaticamente de acordo com as condições definidas por você. Essas condições podem incluir limites excedidos em um intervalo de tempo especificado para utilização da CPU, leituras ou gravações de disco ou tráfego de rede de entrada ou saída. O Amazon EC2 Auto Scaling encerra as instâncias quando elas não são mais necessárias. Para obter mais informações, consulte [O que é o Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html) no *Guia do usuário do Amazon EC2 Auto Scaling*.

Quando novas instâncias do Amazon EC2 são lançadas como parte de um grupo do Amazon EC2 Auto Scaling CodeDeploy , você pode implantar suas revisões nas novas instâncias automaticamente. Você também pode coordenar implantações com instâncias do Amazon EC2 Auto Scaling registradas CodeDeploy com balanceadores de carga do Elastic Load Balancing. Para obter mais informações, consulte [Integração CodeDeploy com o Elastic Load Balancing](integrations-aws-elastic-load-balancing.md) e [Configure um balanceador de carga no Elastic Load Balancing para implantações do Amazon CodeDeploy EC2](deployment-groups-create-load-balancer.md).

**nota**  
Lembre-se de que você pode ter problemas se associar vários grupos de implantação a um único grupo do Amazon EC2 Auto Scaling. Se uma implantação falhar, por exemplo, a instância começará a ser desligada, mas as outras implementações que estavam em execução poderão demorar uma hora para atingirem o tempo limite. Para obter mais informações, consulte [Evite associar vários grupos de implantação a um único grupo de Amazon EC2 Auto Scaling](troubleshooting-auto-scaling.md#troubleshooting-multiple-depgroups) [Under the hood: CodeDeploy and Amazon EC2 Auto](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/) Scaling integration.

**Topics**
+ [Implantação de CodeDeploy aplicativos em grupos do Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-deploy)
+ [Ativar implantações de encerramento durante eventos de redução da escala horizontal do Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable)
+ [Como o Amazon EC2 Auto Scaling funciona com CodeDeploy](#integrations-aws-auto-scaling-behaviors)
+ [Usando uma AMI personalizada com o CodeDeploy Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-custom-ami)

## Implantação de CodeDeploy aplicativos em grupos do Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-deploy"></a>

Para implantar uma revisão CodeDeploy do aplicativo em um grupo do Amazon EC2 Auto Scaling:

1. Crie ou localize um perfil de instância do IAM que permita que o grupo do Amazon EC2 Auto Scaling funcione com o Amazon S3. Para obter mais informações, consulte [Etapa 4: criar um perfil de instância do IAM para as suas instâncias do Amazon EC2](getting-started-create-iam-instance-profile.md).
**nota**  
Você também pode usar CodeDeploy para implantar revisões de GitHub repositórios para grupos do Amazon EC2 Auto Scaling. Embora as instâncias do Amazon EC2 ainda exijam um perfil de instância do IAM, o perfil não precisa de nenhuma permissão adicional para ser implantado a partir de um GitHub repositório. 

1. Crie ou use um grupo do Amazon EC2 Auto Scaling, especificando o perfil de instância do IAM no modelo ou na configuração de execução. Para obter mais informações, consulte [Perfil do IAM para aplicativos que são executados em instâncias do Amazon EC2](https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html).

1. Crie ou localize uma função de serviço que permita CodeDeploy criar um grupo de implantação que contenha o grupo Amazon EC2 Auto Scaling.

1. Crie um grupo de implantação com CodeDeploy, especificando o nome do grupo Amazon EC2 Auto Scaling, a função do serviço e algumas outras opções. Para acessar mais informações, consulte [Criar um grupo de implantação para uma implantação no local (console)](deployment-groups-create-in-place.md) ou [Criar um grupo de implantação para uma implantação no local (console)](deployment-groups-create-in-place.md).

1. Use CodeDeploy para implantar sua revisão no grupo de implantação que contém o grupo Amazon EC2 Auto Scaling.

Para obter mais informações, consulte [Tutorial: Use CodeDeploy para implantar um aplicativo em um grupo do Auto Scaling](tutorials-auto-scaling-group.md).

## Ativar implantações de encerramento durante eventos de redução da escala horizontal do Auto Scaling
<a name="integrations-aws-auto-scaling-behaviors-hook-enable"></a>

Uma *implantação de encerramento* é um tipo de CodeDeploy implantação que é ativada automaticamente quando ocorre um evento de expansão do Auto [Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in). CodeDeploy executa a implantação de encerramento logo antes do serviço Auto Scaling encerrar a instância. Durante uma implantação de encerramento, CodeDeploy não implanta nada. Em vez disso, ele gera eventos de ciclo de vida, que você pode fazer hook com seus próprios scripts para ativar a funcionalidade de encerramento personalizada. Por exemplo, você pode fazer hook do evento de ciclo de vida `ApplicationStop` em um script que encerra a aplicação, normalmente antes da instância ser encerrada. 

Para obter uma lista dos eventos do ciclo de vida que são CodeDeploy gerados durante uma implantação de encerramento, consulte. [Disponibilidade de hooks de eventos de ciclo de vida](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability) 

Se a implantação de encerramento falhar por qualquer motivo, CodeDeploy permitirá que o encerramento da instância continue. Isso significa que a instância será encerrada mesmo que CodeDeploy não tenha executado o conjunto completo (ou nenhum) dos eventos do ciclo de vida até a conclusão.

Se você não habilitar implantações de encerramento, o serviço Auto Scaling ainda encerrará as instâncias do Amazon EC2 quando ocorrer CodeDeploy um evento de escalabilidade, mas não gerará eventos de ciclo de vida.

**nota**  
Independentemente de você ativar ou não implantações de encerramento, se o serviço Auto Scaling encerrar uma instância do Amazon EC2 enquanto a implantação estiver em andamento, poderá ocorrer CodeDeploy uma condição de corrida entre os eventos do ciclo de vida gerados pelo Auto Scaling e os serviços. CodeDeploy Por exemplo, o evento de `Terminating` ciclo de vida (gerado pelo serviço Auto Scaling) pode substituir `ApplicationStart` o evento (gerado pela implantação). CodeDeploy Nesse cenário, você pode enfrentar uma falha no encerramento da instância do Amazon EC2 ou na CodeDeploy implantação.

**Para permitir a execução CodeDeploy de implantações de rescisão**
+ Marque a caixa de seleção **Adicionar um hook de encerramento aos grupos do Auto Scaling** ao criar ou atualizar o grupo de implantação. Para obter instruções, consulte [Criar um grupo de implantação para uma implantação no local (console)](deployment-groups-create-in-place.md) ou [Crie um grupo de implantação para uma blue/green implantação EC2/local (console)](deployment-groups-create-blue-green.md).

  Ativar essa caixa de seleção faz CodeDeploy com que um [gancho de ciclo de vida do Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) seja instalado nos grupos do Auto Scaling que você especifica ao criar ou atualizar seu grupo de implantação. CodeDeploy Esse hook é chamado de *hook de encerramento* e permite implantações de encerramento.

**Depois que o hook de encerramento é instalado, um evento de redução da escala horizontal (encerramento) ocorre da seguinte forma:**

1. O serviço de Auto Scaling (ou simplesmente o Auto Scaling) determina que uma redução da escala horizontal precisa ocorrer e entra em contato com o serviço EC2 para encerrar uma nova instância do EC2.

1. O serviço EC2 começa a encerrar a instância do EC2. A instância se move para o estado `Terminating` e depois para o estado `Terminating:Wait`. 

1. Durante`Terminating:Wait`, o Auto Scaling executa todos os ganchos do ciclo de vida conectados ao grupo Auto Scaling, incluindo o gancho de terminação instalado pelo. CodeDeploy

1. O gancho de terminação envia uma notificação para a [fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) que é pesquisada por. CodeDeploy

1. Ao receber a notificação, CodeDeploy analisa a mensagem, realiza alguma validação e executa uma [implantação de encerramento](#integrations-aws-auto-scaling-behaviors-hook-enable).

1. Enquanto a implantação de encerramento está em execução, CodeDeploy envia pulsações a cada cinco minutos para o Auto Scaling para que ele saiba que a instância ainda está sendo trabalhada.

1. Até o momento, a instância do EC2 ainda está no estado `Terminating:Wait` (ou possivelmente no estado `Warmed:Pending:Wait`, se você tiver ativado [Pools de aquecimento de grupos do Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/warm-pool-instance-lifecycle.html)).

1. Quando a implantação é concluída, CodeDeploy indica ao Auto Scaling `CONTINUE` o processo de encerramento do EC2, independentemente de a implantação de encerramento ter sido bem-sucedida ou falhada.

## Como o Amazon EC2 Auto Scaling funciona com CodeDeploy
<a name="integrations-aws-auto-scaling-behaviors"></a>

Quando você cria ou atualiza um grupo de CodeDeploy implantação para incluir um grupo do Auto Scaling, CodeDeploy acessa o grupo do Auto Scaling usando a função de CodeDeploy serviço e, em seguida, instala os ganchos do [ciclo de vida do Auto Scaling nos grupos do Auto](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) Scaling.

**nota**  
Os *ganchos de ciclo de vida do Auto Scaling* são diferentes dos eventos de *ciclo de vida (também chamados de ganchos de eventos* *de ciclo* de vida) gerados e descritos neste guia. CodeDeploy [AppSpec seção 'ganchos'](reference-appspec-file-structure-hooks.md)

Os ganchos do ciclo de vida do Auto Scaling que são instalados são: CodeDeploy 
+ **Um gancho de lançamento** — Esse gancho notifica CodeDeploy que um evento de expansão do Auto [Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-out) está em andamento e CodeDeploy que precisa iniciar uma implantação de lançamento.

  Durante uma *implantação de lançamento*, CodeDeploy:
  + Implanta uma revisão da aplicação na instância com aumento da escala horizontal.
  + Gera eventos do ciclo de vida para indicar o progresso da implantação. Você pode fazer hook desses eventos do ciclo de vida em seus próprios scripts para ativar a funcionalidade de inicialização personalizada. Para obter mais informações, consulte a tabela em [Disponibilidade de hooks de eventos de ciclo de vida](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability).

  O hook de inicialização e a implantação de inicialização associada estão sempre ativados e não podem ser desativados.
+ **Um gancho de terminação** — Esse gancho opcional notifica CodeDeploy que um evento de [escalonamento do Auto Scaling está em](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in) andamento e CodeDeploy que precisa iniciar uma implantação de terminação.

  Durante uma *implantação de encerramento*, CodeDeploy gera eventos de ciclo de vida para indicar o progresso do desligamento da instância. Para obter mais informações, consulte [Ativar implantações de encerramento durante eventos de redução da escala horizontal do Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable).

**Topics**
+ [Depois de CodeDeploy instalar os ganchos de ciclo de vida, como eles são usados?](#integrations-aws-auto-scaling-behaviors-hook-usage)
+ [Como CodeDeploy nomeia os grupos do Amazon EC2 Auto Scaling](#integrations-aws-auto-scaling-behaviors-naming)
+ [Ordem de execução de eventos de gancho do ciclo de vida personalizados](#integrations-aws-auto-scaling-behaviors-hook-order)
+ [Eventos de aumento de escala durante uma implantação](#integrations-aws-auto-scaling-behaviors-mixed-environment)
+ [Eventos de redução da escala horizontal durante uma implantação](#integrations-aws-auto-scaling-behaviors-scale-in)
+ [Ordem dos eventos nos scripts AWS CloudFormation cfn-init](#integrations-aws-auto-scaling-behaviors-event-order)

### Depois de CodeDeploy instalar os ganchos de ciclo de vida, como eles são usados?
<a name="integrations-aws-auto-scaling-behaviors-hook-usage"></a>

Depois que os ganchos do ciclo de vida de lançamento e encerramento são instalados, eles são usados durante os eventos de expansão e CodeDeploy expansão de grupos do Auto Scaling, respectivamente.

**Um evento de aumento da escala horizontal (inicialização) ocorre da seguinte forma:**

1. O serviço de auste de escala automático (ou simplesmente ajuste de escala automático) determina que um evento de aumento de escala horizontal precisa ocorrer e entra em contato com o serviço EC2 para iniciar uma nova instância do EC2.

1. O serviço do EC2 inicia uma nova instância do EC2. A instância se move para o estado `Pending` e depois para o estado `Pending:Wait`. 

1. Durante`Pending:Wait`, o Auto Scaling executa todos os ganchos do ciclo de vida conectados ao grupo Auto Scaling, incluindo o gancho de lançamento instalado pelo. CodeDeploy

1. O gancho de lançamento envia uma notificação para a [fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) que é pesquisada por. CodeDeploy

1. Ao receber a notificação, CodeDeploy analisa a mensagem, realiza alguma validação e inicia uma [implantação de lançamento](#launch-deployment).

1. Enquanto a implantação de lançamento está em execução, CodeDeploy envia pulsações a cada cinco minutos para o Auto Scaling para que ele saiba que a instância ainda está sendo trabalhada.

1. Até o momento, a instância do EC2 ainda está no estado `Pending:Wait`.

1. Quando a implantação for concluída, CodeDeploy indica ao Auto Scaling `CONTINUE` um `ABANDON` ou o processo de inicialização do EC2, dependendo se a implantação foi bem-sucedida ou falhou.
   + Se CodeDeploy indicado`CONTINUE`, o Auto Scaling continua o processo de inicialização, aguardando a conclusão de outros ganchos ou colocando a instância no estado `Pending:Proceed` e depois no estado. `InService`
   + **Se CodeDeploy indicado`ABANDON`, o Auto Scaling encerra a instância do EC2 e reinicia o procedimento de inicialização, se necessário, para atender ao número desejado de instâncias, conforme definido na configuração de Capacidade Desejada do Auto Scaling.**

**Um evento de redução da escala horizontal (encerramento) ocorre da seguinte forma:**

Consulte [Ativar implantações de encerramento durante eventos de redução da escala horizontal do Auto Scaling](#integrations-aws-auto-scaling-behaviors-hook-enable).

### Como CodeDeploy nomeia os grupos do Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-behaviors-naming"></a>

 

Durante blue/green as implantações em uma plataforma de computação EC2/local, você tem duas opções para adicionar instâncias ao seu ambiente substituto (verde):
+  Use instâncias já existentes ou que você cria manualmente. 
+  Use as configurações de um grupo do Amazon EC2 Auto Scaling especificado para definir e criar instâncias em um novo grupo do Amazon EC2 Auto Scaling. 

 Se você escolher a segunda opção, CodeDeploy provisiona um novo grupo do Amazon EC2 Auto Scaling para você. Ele usa a seguinte convenção para nomear o grupo: 

```
CodeDeploy_deployment_group_name_deployment_id
```

Por exemplo, se uma implantação com ID `10` implantar um grupo de implantação denominado `alpha-deployments`, o grupo provisionado do Amazon EC2 Auto Scaling se chamará `CodeDeploy_alpha-deployments_10`. Para obter mais informações, consulte [Crie um grupo de implantação para uma blue/green implantação EC2/local (console)](deployment-groups-create-blue-green.md) e [GreenFleetProvisioningOption](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GreenFleetProvisioningOption.html).

### Ordem de execução de eventos de gancho do ciclo de vida personalizados
<a name="integrations-aws-auto-scaling-behaviors-hook-order"></a>

Você pode adicionar seus próprios ganchos de ciclo de vida aos grupos do Amazon EC2 Auto Scaling nos quais são implantados. CodeDeploy No entanto, a ordem na qual esses eventos de gancho de ciclo de vida personalizados são executados não pode ser predeterminada em relação aos eventos CodeDeploy padrão do ciclo de vida de implantação. Por exemplo, se você adicionar um gancho de ciclo de vida personalizado chamado `ReadyForSoftwareInstall` a um grupo do Amazon EC2 Auto Scaling, não poderá saber de antemão se ele será executado antes do primeiro ou depois do último evento de ciclo de vida de implantação padrão. CodeDeploy

Para saber como adicionar ganchos do ciclo de vida personalizados em um grupo do Amazon EC2 Auto Scaling, consulte [Adição de ganchos de ciclo de vida](https://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks) no *Guia do usuário do Amazon EC2 Auto Scaling*.

### Eventos de aumento de escala durante uma implantação
<a name="integrations-aws-auto-scaling-behaviors-mixed-environment"></a>

Se um evento de aumento da escala horizontal do Auto Scaling ocorrer enquanto uma implantação estiver em andamento, as novas instâncias serão atualizadas com a revisão da aplicação que foi implantada anteriormente, não com a revisão da aplicação mais recente. Se a implantação for bem-sucedida, as instâncias antigas e as instâncias recém-aumentadas em escala hospedarão diferentes revisões de aplicativos. Para atualizar as instâncias com a revisão mais antiga, inicia CodeDeploy automaticamente uma implantação subsequente (imediatamente após a primeira) para atualizar todas as instâncias desatualizadas. Se você quiser alterar esse comportamento padrão para que as instâncias desatualizadas do EC2 sejam deixadas na revisão mais antiga, consulte [Automatic updates to outdated instances](deployment-groups-configure-advanced-options.md#auto-updates-outdated-instances).

Se você quiser suspender os processos de escalabilidade horizontal do Amazon EC2 Auto Scaling enquanto as implantações estão ocorrendo, você pode fazer isso por meio de uma configuração no script que é usada para balanceamento de `common_functions.sh` carga com. CodeDeploy Se `HANDLE_PROCS=true`, os seguintes eventos do Auto Scaling serão suspensos automaticamente durante o processo de implantação: 
+ AZRebalance
+ AlarmNotification
+ ScheduledActions
+ ReplaceUnhealthy

**Importante**  
Somente CodeDeployDefault o. OneAtATime a configuração de implantação oferece suporte a essa funcionalidade.

Para obter mais informações sobre como usar `HANDLE_PROCS=true` para evitar problemas de implantação ao usar o Amazon EC2 Auto Scaling[, consulte Aviso importante AutoScaling sobre](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb#important-notice-about-handling-autoscaling-processes) como lidar com [aws-codedeploy-samples](https://github.com/awslabs/aws-codedeploy-samples)processos em on. GitHub

### Eventos de redução da escala horizontal durante uma implantação
<a name="integrations-aws-auto-scaling-behaviors-scale-in"></a>

Se um grupo de Auto Scaling começar a escalar enquanto uma CodeDeploy implantação estiver em andamento nesse grupo de Auto Scaling, poderá ocorrer uma condição de corrida entre o processo de encerramento (incluindo os eventos do ciclo de vida da implantação de CodeDeploy encerramento) e outros eventos do ciclo de vida na instância de encerramento. CodeDeploy A implantação nessa instância específica pode falhar se a instância for encerrada antes da conclusão de todos os eventos CodeDeploy do ciclo de vida. Além disso, a CodeDeploy implantação geral pode ou não falhar, dependendo de como você definiu sua configuração de **mínimo de hosts íntegros** em sua configuração de implantação.

### Ordem dos eventos nos scripts AWS CloudFormation cfn-init
<a name="integrations-aws-auto-scaling-behaviors-event-order"></a>

Se você usar `cfn-init` (ou `cloud-init`) para executar scripts em instâncias Linux recém-provisionadas, suas implantações poderão falhar, a menos que você controle estritamente a ordem de eventos que ocorrerem após a inicialização da instância.

Essa ordem deve ser:

1. A instância recém-provisionada é iniciada.

1. Todos os scripts de inicialização `cfn-init` são executados até a conclusão.

1. O CodeDeploy agente começa.

1. A última revisão de aplicativo é implantada na instância.

Se a ordem dos eventos não for cuidadosamente controlada, o CodeDeploy agente poderá iniciar uma implantação antes que todos os scripts terminem de ser executados. 

Para controlar a ordem dos eventos, use uma destas práticas recomendadas: 
+ Instale o CodeDeploy agente por meio de um `cfn-init` script, colocando-o depois de todos os outros scripts.
+ Inclua o CodeDeploy agente em uma AMI personalizada e use um `cfn-init` script para iniciá-la, colocando-a depois de todos os outros scripts.

Para obter mais informações sobre o uso do `cfn-init`, consulte [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html) no *Guia do usuário do AWS CloudFormation *.

## Usando uma AMI personalizada com o CodeDeploy Amazon EC2 Auto Scaling
<a name="integrations-aws-auto-scaling-custom-ami"></a>

Existem duas opções para especificar a AMI base a ser usada quando novas instâncias do Amazon EC2 são iniciadas em um grupo do Amazon EC2 Auto Scaling:
+ Você pode especificar uma AMI personalizada básica que já tenha o CodeDeploy agente instalado. Como o agente já está instalado, essa opção inicia novas instâncias do Amazon EC2 com mais rapidez do que a outra opção. No entanto, essa opção oferece uma maior probabilidade de que as implantações iniciais das instâncias do Amazon EC2 falhem, especialmente se CodeDeploy o agente estiver desatualizado. Se você escolher essa opção, recomendamos que você atualize regularmente o CodeDeploy agente em sua AMI personalizada básica.
+ Você pode especificar uma AMI básica que não tenha o CodeDeploy agente instalado e tenha o agente instalado à medida que cada nova instância é executada em um grupo do Amazon EC2 Auto Scaling. Embora essa opção inicie novas instâncias do Amazon EC2 mais devagar do que a outra opção, com ela, são maiores as chances de que as implantações iniciais das instâncias sejam bem-sucedidas. Essa opção usa a versão mais recente do agente do CodeDeploy.

# Integração CodeDeploy com o Elastic Load Balancing
<a name="integrations-aws-elastic-load-balancing"></a>

Durante CodeDeploy as implantações, um balanceador de carga impede que o tráfego da Internet seja roteado para instâncias quando elas não estão prontas, estão sendo implantadas no momento ou não são mais necessárias como parte de um ambiente. A função exata que o balanceador de carga desempenha, no entanto, depende se ele é usado em uma blue/green implantação ou em uma implantação local.

**nota**  
O uso de balanceadores de carga do Elastic Load Balancing é obrigatório nas blue/green implantações e opcional nas implantações locais.

## Tipos de Elastic Load Balancing
<a name="integrations-aws-elastic-load-balancing-types"></a>

O Elastic Load Balancing fornece três tipos de balanceadores de carga que podem ser usados em CodeDeploy implantações: Classic Load Balancers, Application Load Balancers e Network Load Balancers.

Classic Load Balancer  
Rotas e balanceamentos de carga na camada de transporte (TCP/SSL) or the application layer (HTTP/HTTPS). Ele oferece suporte a uma VPC.  
Os Classic Load Balancers não são compatíveis com implantações do Amazon ECS.

Application Load Balancer  
Roteia e carrega equilíbrios na camada do aplicativo (HTTP/HTTPS) e é compatível com roteamento baseado em trajeto. Ele pode encaminhar solicitações para portas em cada instância do EC2 ou instância de contêiner na sua nuvem privada virtual (VPC).  
 Os grupos de destino do Application Load Balancer devem ter um tipo de destino `instance` para implantações em instâncias do EC2 e `IP` para implantações do Fargate. Para obter mais informações, consulte [Tipo de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-type). 

Network Load Balancer  
Roteia e faz o balanceamento de carga na camada de transporte (camada 4 do TCP/UDP) com base nas informações de endereço extraídas do cabeçalho do pacote TCP, e não do conteúdo do pacote. Os balanceadores de carga de rede podem lidar com picos de tráfego, reter o IP de origem do cliente e usar um IP fixo para a vida útil do balanceador de carga. 

Para saber mais sobre os load balancers do Elastic Load Balancing, consulte os seguintes tópicos:
+ [O que é Elastic Load Balancing?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [O que é um Classic Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)
+ [O que é um Application Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [O que é um Network Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)

## Implantações em azul/verde
<a name="integrations-aws-elastic-load-balancing-blue-green"></a>

O redirecionamento do tráfego da instância por trás de um load balancer do Elastic Load Balancing é fundamental para as implantações. CodeDeploy blue/green 

Durante uma blue/green implantação, o balanceador de carga permite que o tráfego seja roteado para as novas instâncias em um grupo de implantação no qual a revisão mais recente do aplicativo foi implantada (o ambiente substituto), de acordo com as regras especificadas, e então bloqueia o tráfego das instâncias antigas em que a revisão anterior do aplicativo estava sendo executada (o ambiente original).

Após as instâncias em um ambiente de substituição serem registradas em um ou mais balanceadores de carga, o registro das instâncias do ambiente original é cancelado e, se você escolher, as instâncias são encerradas.

Para uma blue/green implantação, você pode especificar um ou mais grupos-alvo do Classic Load Balancers, do Application Load Balancer ou do Network Load Balancer no seu grupo de implantação. Você usa o CodeDeploy console ou adiciona AWS CLI os balanceadores de carga a um grupo de implantação.

Para obter mais informações sobre balanceadores de carga em blue/green implantações, consulte os tópicos a seguir:
+ [Configure um balanceador de carga no Elastic Load Balancing para implantações do Amazon CodeDeploy EC2](deployment-groups-create-load-balancer.md)
+ [Criar um aplicativo para uma blue/green implantação (console)](applications-create-blue-green.md)
+ [Crie um grupo de implantação para uma blue/green implantação EC2/local (console)](deployment-groups-create-blue-green.md)

## Implantações no local
<a name="integrations-aws-elastic-load-balancing-in-place"></a>

Em uma implantação no local, um balanceador de carga impede que o tráfego da Internet seja direcionado para uma instância durante o processo, tornando-a novamente disponível para tráfego assim que essa implantação é concluída.

Se o load balancer não for usado durante uma implantação, o tráfego da Internet ainda poderá ser direcionado para uma instância durante o processo de implantação. Como resultado, seus clientes poderão encontrar aplicativos web quebrados, incompletos ou desatualizados. Quando você usa um load balancer do Elastic Load Balancing com uma implantação local, as instâncias em um grupo de implantação são canceladas do load balancer, atualizadas com a revisão mais recente do aplicativo e, em seguida, registradas novamente no load balancer como parte do mesmo grupo de implantação após a implantação ser bem-sucedida. CodeDeploy aguardará até 1 hora para que a instância fique íntegra por trás do balanceador de carga. Se a instância não for marcada como íntegra pelo balanceador de carga durante o período de espera, CodeDeploy ela passa para a próxima instância ou falha na implantação, com base na configuração de implantação.

Para uma implantação no local, você pode especificar um ou mais grupos de destino do Classic Load Balancers, do Application Load Balancer ou do Network Load Balancer. Você pode especificar os balanceadores de carga como parte da configuração do grupo de implantação ou usar um script fornecido por CodeDeploy para implementar os balanceadores de carga.

### Especificar o balanceador de carga de implantação no local usando um grupo de implantação
<a name="integrations-aws-elastic-load-balancing-in-place-deployment-group"></a>

Para adicionar balanceadores de carga a um grupo de implantação, você usa o CodeDeploy console ou AWS CLI. Para obter informações sobre como especificar um load balancer em um grupo de implantação para as implantações no local, consulte os seguintes tópicos:
+ [Criar um aplicativo para uma implantação no local (console)](applications-create-in-place.md)
+ [Criar um grupo de implantação para uma implantação no local (console)](deployment-groups-create-in-place.md)
+ [Configure um balanceador de carga no Elastic Load Balancing para implantações do Amazon CodeDeploy EC2](deployment-groups-create-load-balancer.md)

### Especificar o balanceador de carga de implantação no local usando um script
<a name="integrations-aws-elastic-load-balancing-in-place-script"></a>

Use as etapas do procedimento a seguir para usar scripts de ciclo de vida de implantação para configurar o balanceamento de carga para implantações no local.
**nota**  
Você deve usar CodeDeployDefault o. OneAtATime configuração de implantação somente quando você está usando um script para configurar um balanceador de carga para uma implantação local. Não há suporte para execuções simultâneas, e o. CodeDeployDefault OneAtATime a configuração garante uma execução serial dos scripts. Para obter mais informações sobre configurações de implantação, consulte [Trabalhando com configurações de implantação em CodeDeploy](deployment-configurations.md).

No repositório CodeDeploy Samples em GitHub, fornecemos instruções e amostras que você pode adaptar para usar os balanceadores de carga do CodeDeploy Elastic Load Balancing. Esses repositórios incluem três scripts de amostra — `register_with_elb.sh`, `deregister_from_elb.sh` e `common_functions.sh` — que fornecem todo o código necessário para você poder trabalhar. Basta editar os espaços reservados nesses três scripts e fazer referência a eles no seu arquivo `appspec.yml`.

Para configurar implantações no local CodeDeploy com instâncias do Amazon EC2 registradas nos balanceadores de carga do Elastic Load Balancing, faça o seguinte:

1. Baixe as amostras para o tipo de balanceador de carga que deseja usar para uma implantação no local:
   + [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)
   + [Application Load Balancer[ ou Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) (o mesmo script pode ser usado para ambos os tipos)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)

1. Certifique-se de que cada uma de suas instâncias de destino do Amazon EC2 tenha o AWS CLI instalado. 

1. Certifique-se de cada uma das suas instâncias de destino do Amazon EC2 tenha um perfil de instância do IAM conectado pelo menos com as permissões elasticloadbalancing:\$1 e autoscaling:\$1.

1. Inclua no diretório do código-fonte do seu aplicativo os scripts de evento de ciclo de vida de implantação (`register_with_elb.sh`, `deregister_from_elb.sh` e `common_functions.sh`).

1. Em `appspec.yml` Para a revisão do aplicativo, forneça instruções CodeDeploy para executar o `register_with_elb.sh` script durante o **ApplicationStart**evento e o `deregister_from_elb.sh` script durante o **ApplicationStop**evento.

1. Se a instância fizer parte de um grupo do Amazon EC2 Auto Scaling, você poderá ignorar essa etapa.

   No script`common_functions.sh`:
   + Se estiver usando o [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb), especifique os nomes dos balanceadores de carga do Elastic Load Balancing em `ELB_LIST=""` e faça as alterações necessárias nas outras configurações de implantação no arquivo.
   + Se estiver usando o [Application Load Balancer[ ou o Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2), especifique os nomes dos grupos de destino do Elastic Load Balancing em `TARGET_GROUP_LIST=""` e faça as alterações necessárias nas outras configurações de implantação no arquivo.

1. Forneça o código-fonte do seu aplicativo, o `appspec.yml` e os scripts de evento de ciclo de vida de implantação em uma revisão de aplicativo e faça o upload da revisão. Implante a revisão nas instâncias do Amazon EC2. Durante a implantação, os scripts de evento de ciclo de vida de implantação cancelarão o registro da instância do Amazon EC2 no balanceador de carga, aguardará a drenagem da conexão e depois registrará novamente a instância do Amazon EC2 no balanceador de carga após a conclusão da implantação.