Entenda o tempo de implantação de pilha
Quando você cria, atualiza ou exclui uma pilha, o CloudFormation provisiona cada recurso em seu modelo e relata que a operação da pilha está concluída quando seus recursos estão prontos para atender ao tráfego. Este tópico descreve como o CloudFormation provisiona uma pilha, o que afeta a duração de uma operação de pilha e como você pode reduzir o tempo de implantação.
Tópicos
Como o CloudFormation provisiona uma pilha
O CloudFormation lê as dependências entre os recursos em seu modelo. Um recurso que faz referência a outro recurso, por meio de Ref, Fn::GetAtt ou DependsOn, é provisionado após o recurso ao qual ele faz referência. Recursos que não têm dependências entre si são provisionados em paralelo.
Para cada recurso, o CloudFormation aplica a configuração do recurso e então confirma que o recurso está pronto para atender ao tráfego. O CloudFormation avança assim que cada recurso está pronto, para que os recursos dependentes comecem o mais cedo possível. Como resultado, pilhas com cadeias de dependência mais longas apresentam a maior melhoria. Quando cada recurso na pilha estiver pronto, o CloudFormation informará que a operação da pilha foi concluída.
Esse comportamento se aplica automaticamente às operações de pilha. Você não precisa alterar os modelos ou definir parâmetros.
O que afeta o tempo de implantação
- Cadeias de dependência
-
A maior cadeia de recursos que dependem uns dos outros define o tempo mínimo para uma operação de pilha. Os recursos que não fazem parte dessa cadeia são provisionados paralelamente e geralmente não aumentam o tempo total.
- Recursos que demoram mais para ficarem prontos
-
Workloads que incluem recursos como instâncias de banco de dados do Amazon RDS, balanceadores de carga do Elastic Load Balancing, gateways NAT ou distribuições do Amazon CloudFront passam a maior parte do tempo de implantação esperando que esses recursos estejam prontos para atender ao tráfego.
- Saídas que referenciam atributos de recursos
-
Se uma saída de pilha fizer referência a um atributo de recurso, por exemplo, com
Fn::GetAtt, o CloudFormation esperará até que o valor do atributo esteja disponível antes de concluir a operação de pilha. Essa espera pode adicionar tempo à operação.
Maneiras de reduzir o tempo de implantação
-
Utilize o modo expresso para iteração de desenvolvimento. O modo expresso conclui as operações de pilha assim que o CloudFormation aplica a configuração do recurso, e os recursos continuam ficando prontos em segundo plano. Para obter mais informações, consulte Modo Expresso.
-
Agrupe os recursos conforme a frequência com que eles mudam. Coloque os recursos que demoram mais para ficarem prontos, como bancos de dados, em pilhas separadas dos recursos que você atualiza com frequência. As atualizações na pilha frequentemente alterada, então, não incluem os recursos de execução mais longa.
-
Remova as dependências que você não precisa. Declare
DependsOnsomente quando um recurso precisar aguardar outro recurso. Menos dependências permitem que o CloudFormation provisione mais recursos em paralelo. -
Faça referência aos atributos dos recursos nas saídas somente quando precisar deles. Saídas que referenciam atributos de recursos podem estender uma operação de pilha até que esses valores estejam disponíveis.