Compreender atualização de comportamentos de recursos da pilha
Quando você envia uma atualização, o CloudFormation atualiza os recursos com base nas diferenças entre o que você envia e o modelo atual da pilha. Os recursos que não foram alterados funcionam sem interrupção durante o processo de atualização. Para recursos atualizados, o CloudFormation usa um dos seguintes comportamentos de atualização:
- Atualizações sem interrupções
-
O CloudFormation atualiza o recurso sem interromper a operação do recurso e sem alterar o ID físico do recurso. Por exemplo, se você atualizar determinadas propriedade de um recurso AWS::CloudTrail::Trail, o CloudFormation atualiza a trilha sem interrupções.
- Atualizações com alguma interrupção
-
O CloudFormation atualiza o recurso com interrupções. Por exemplo, se você atualizar determinadas propriedades de um recurso AWS::EC2::Instance, a instância poderá ter alguma interrupção enquanto o CloudFormation e o Amazon EC2 reconfiguram a instância.
- Substituição
-
O CloudFormation recria o recurso durante uma atualização, o que também gera um novo ID físico. Normalmente o CloudFormation cria o recurso de substituição primeiro, altera as referências de outros recursos dependentes para apontar para o recurso substituto e, em seguida, exclui o recurso antigo. Por exemplo, se você atualizar a propriedade
AvailabilityZonede um tipo de recurso AWS::EC2::Instance, o CloudFormation cria um novo recurso e substitui o recurso de instância do EC2 atual pela nova.Se você estiver adicionando ou removendo uma propriedade que requer substituição, isso também acionará uma atualização. Essa atualização acontecerá mesmo se o valor real da propriedade não mudar.
O método que o CloudFormation usa depende da propriedade que você atualiza para um determinado tipo de recurso. O comportamento da atualização de cada propriedade é descrito na Referência de tipos de propriedades e recursos da AWS.
Dependendo do comportamento da atualização, você pode decidir quando modificar os recursos para reduzir o impacto dessas alterações em seu aplicativo. Especificamente, você pode planejar quando os recursos devem ser substituídos durante uma atualização. Por exemplo, se você atualizar a propriedade Port de um tipo de recurso AWS::RDS::DBInstance, o CloudFormation substituirá a instância de banco de dados criando uma nova instância de banco de dados com a configuração de porta atualizada e excluirá a instância de banco de dados antiga. Antes da atualização, você pode planejar executar as seguintes atividades para se preparar para a substituição do banco de dados:
-
Faça um snapshot dos bancos de dados atuais.
-
Prepare uma estratégia de como os aplicativos que usam essa instância de banco de dados irão lidar com uma interrupção enquanto a instância de banco de dados está sendo substituída.
-
Verifique se os aplicativos que usam a instância de banco de dados consideram a configuração da porta atualizada e todas as outras atualizações que você tiver feito.
-
Use o DB snapshot para restaurar os bancos de dados na nova instância de banco de dados.
Este exemplo não abrange todos os casos, tendo a intenção de dar uma ideia do que é necessário planejar quando um recurso for substituído durante uma atualização.
nota
Se o modelo incluir uma ou mais pilhas aninhadas, o CloudFormation também iniciará uma atualização de cada pilha aninhada. Isso é necessário para determinar se as pilhas aninhadas foram modificadas. O CloudFormation atualiza apenas os recursos nas pilhas aninhadas que têm alterações especificadas nos modelos correspondentes.