Sobre implantações azuis/verdes - AWS CloudFormation

Sobre implantações azuis/verdes

Este tópico fornece uma visão geral de como realizar implantações azuis/verdes com o CloudFormation. Ele também explica como preparar seu modelo do CloudFormation para implantações azuis/verdes.

Como funciona

Ao usar o CloudFormation para executar implantações azuis/verdes do ECS via CodeDeploy, você começa criando um modelo de pilha que define os recursos para seus ambientes de aplicativo azul e verde, incluindo a especificação das configurações de roteamento de tráfego e de estabilização a serem usadas. Em seguida, você cria uma pilha com base nesse modelo. Isso gera sua aplicação azul (atual). O CloudFormation cria somente os recursos azuis durante a criação da pilha. Os recursos para uma implantação verde não são criados até que sejam necessários.

Depois, se em uma futura atualização de pilha você atualizar os recursos de definição de tarefa ou do conjunto de tarefas no aplicativo azul, o CloudFormation fará o seguinte:

  • Gerará todos os recursos de ambiente do aplicativo verde necessários

  • Deslocará o tráfego com base nos parâmetros de roteamento de tráfego especificados

  • Excluirá os recursos azuis

Se ocorrer um erro em qualquer ponto antes da implantação verde ser finalizada com êxito, o CloudFormation reverterá a pilha para seu estado anterior ao início de toda a implantação verde.

Atualizações de recursos que iniciam implantações verdes

Quando você executa uma atualização de pilha que atualiza determinadas propriedades de recursos do ECS, o CloudFormation inicia um processo de implantação verde. Os recursos que iniciam esse processo são:

No entanto, se as atualizações desses recursos não envolverem alterações de propriedade que exijam substituição, uma implantação ecológica não será iniciada. Para ter mais informações, consulte Compreender atualização de comportamentos de recursos da pilha.

É importante observar que não é possível combinar atualizações para os recursos acima com atualizações para outros recursos na mesma operação de atualização de pilha. Se precisar atualizar os recursos listados e outros recursos na mesma pilha, você terá duas opções:

  • Execute duas operações de atualização de pilha separadas: uma que inclua somente as atualizações para os recursos acima e uma atualização de pilha separada que inclua alterações em quaisquer outros recursos.

  • Remova as seções Hooks e Transform do modelo e execute a atualização da pilha. Neste caso, o CloudFormation não executará uma implantação verde.

Preparar seu modelo para executar implantações azul/verde do ECS

Para permitir implantações azul/verde em sua pilha, inclua as seções a seguir no modelo de pilha antes de executar uma atualização dela.

  • Adicione uma referência à transformação AWS::CodeDeployBlueGreen ao modelo:

    "Transform": [ "AWS::CodeDeployBlueGreen" ],
  • Adicione uma seção Hooks que invoque o hook AWS::CodeDeploy::BlueGreen e especifique as propriedades para a implantação. Para ter mais informações, consulte Sintaxe do hook AWS::CodeDeploy::BlueGreen.

  • Na seção Resources, defina os recursos azuis e verdes para a implantação.

É possível adicionar essas seções ao criar o modelo pela primeira vez (ou seja, antes de criar a pilha) ou adicioná-las a um modelo existente antes de executar uma atualização de pilha. Se você especificar a implantação azul/verde para uma nova pilha, o CloudFormation criará somente os recursos azuis durante a criação. Os recursos para a implantação verde não serão criados até que sejam necessários durante uma atualização da pilha.

Modelar sua implantação azul/verde usando recursos do CloudFormation

Para executar a implantação azul/verde do CodeDeploy no ECS, o modelo do CloudFormation deverá incluir os recursos que modelam sua implantação, como um serviço do Amazon ECS e um balanceador de carga. Para mais detalhes sobre o que esses recursos representam, consulte Antes de iniciar uma implantação do Amazon ECS no Guia do usuário do AWS CodeDeploy.

Requisito Recurso Obrigatório/opcional Inicia a implantação azul/verde se substituído?
Cluster do Amazon ECS AWS::ECS::Cluster Opcional. O cluster padrão pode ser usado. Não
Serviço do Amazon ECS AWS::ECS::Service Obrigatório. Não
Application ou Network Load Balancer AWS::ECS::Service LoadBalancer Obrigatório. Não
Listener de produção AWS::ElasticLoadBalancingV2::Listener Obrigatório. Não
Listener de teste AWS::ElasticLoadBalancingV2::Listener Opcional. Não
Dois grupos de destino AWS::ElasticLoadBalancingV2::TargetGroup Obrigatório. Não
Definição de tarefa do Amazon ECS AWS::ECS::TaskDefinition Obrigatório. Sim
Contêiner para seu aplicativo do Amazon ECS AWS::ECS::TaskDefinition ContainerDefinition Name Obrigatório. Não
Porta para o conjunto de tarefas de substituição AWS::ECS::TaskDefinition PortMapping ContainerPort Obrigatório. Não

Conjuntos de alterações

É altamente recomendável que você crie um conjunto de alterações antes de executar uma atualização de pilha que iniciará uma implantação verde. Isso permite que você veja as alterações que serão feitas na pilha antes da execução da atualização da pilha. Esteja ciente de que as alterações de recursos podem não ser listadas na ordem em que serão executadas durante a atualização da pilha. Para ter mais informações, consulte Atualizar pilhas do CloudFormation usando conjuntos de alterações.

Monitorar eventos da pilha

É possível visualizar os eventos da pilha gerados em cada etapa da implantação do ECS na guia Events (Eventos) da página Stack (Pilha) e usando a AWS CLI. Para ter mais informações, consulte Monitorar o progresso da pilha.

Permissões do IAM para implantações azuis/verdes

Para que o CloudFormation execute com sucesso as implantações azul/verde, você deve ter as seguintes permissões do CodeDeploy:

  • codedeploy:Get*

  • codedeploy:CreateCloudFormationDeployment

Para obter mais informações, consulte Ações, recursos e chaves de condição do CodeDeploy na Referência de autorização do serviço.