AWS CloudFormation: como excluir uma stack sem apagar a instância EC2

Olá pessoal!

Ao excluir uma stack do AWS CloudFormation, uma instância EC2 criada por ela normalmente também é excluída. Para preservar essa instância, defina o atributo DeletionPolicy com o valor Retain no template YAML.

Essa configuração permite remover a stack e manter o recurso disponível. É útil quando uma instância precisa continuar em uso após o encerramento do gerenciamento pela stack.

Como configurar DeletionPolicy: Retain

O atributo deve ficar na definição do recurso, no mesmo nível de Type e Properties. Veja este trecho de exemplo:

Resources:
MinhaInstancia:
Type: AWS::EC2::Instance
DeletionPolicy: Retain
Properties:
ImageId: ami-xxxxxxxxxxxxxxxxx
InstanceType: t3.micro
Tags:
- Key: Name
Value: servidor-aplicacao

O código é um trecho para adaptar ao seu template. Substitua o ImageId por uma AMI (Amazon Machine Image ou Imagem de Máquina da Amazon) válida na região utilizada e mantenha as configurações de rede, segurança e demais propriedades exigidas pelo ambiente.

Se a stack já existe, atualize-a com o atributo e aguarde a conclusão da atualização antes de solicitar a exclusão.

O que acontece com a instância

Com DeletionPolicy: Retain, a instância permanece após a exclusão da stack e deixa de ser gerenciada por ela. Os custos aplicáveis continuam existindo enquanto o recurso for mantido.

A configuração também vale quando a definição do recurso é removida do template durante uma atualização. Entretanto, ela não controla a retenção de um recurso substituído por outro em uma atualização.

E quando uma atualização substitui a instância?

Para preservar a instância antiga quando uma alteração exige sua substituição, utilize UpdateReplacePolicy: Retain:

Resources:
MinhaInstancia:
Type: AWS::EC2::Instance
DeletionPolicy: Retain
UpdateReplacePolicy: Retain
Properties:
ImageId: ami-xxxxxxxxxxxxxxxxx
InstanceType: t3.micro

Os atributos atendem a situações diferentes: DeletionPolicy controla a retenção na exclusão; UpdateReplacePolicy controla o destino do recurso antigo quando ocorre uma substituição.

Nesse segundo cenário, o CloudFormation cria a nova instância e mantém a anterior fora do gerenciamento da stack, com possíveis custos adicionais. A configuração não impede que a substituição aconteça.

Cuidados antes de excluir a stack

A retenção é configurada por recurso. Portanto, revise também os demais componentes do template: preservar a instância não significa preservar automaticamente todos os recursos necessários ao seu funcionamento.

Antes da exclusão, registre o ID da instância, confira suas dependências e defina quem ficará responsável por administrá-la. A retenção também deve fazer parte do planejamento de custos e de backup.

Para maiores informações, consulte a documentação oficial dos atributos DeletionPolicy e UpdateReplacePolicy e para complementar a organização dos recursos, veja também o post que escrevi sobre como definir tags para instâncias EC2 no YAML.

Até a próxima!

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.