Implante pilhas do AWS CloudFormation mais rapidamente com o modo expresso
Com o modo expresso do CloudFormation, você pode concluir as operações da pilha assim que o CloudFormation aplicar a configuração dos recursos, sem precisar esperar que os recursos se estabilizem totalmente. Use o modo expresso para criar, atualizar e excluir pilhas de forma significativamente mais rápida durante fluxos de trabalho de desenvolvimento iterativos.
O modo expresso é compatível com todos os modelos do CloudFormation existentes. Você não precisa fazer nenhuma alteração no modelo para usar o modo expresso.
Quando usar o modo expresso
Utilize o modo expresso para fluxos de trabalho de desenvolvimento e iteração, nos quais a velocidade é mais importante do que esperar pela estabilização completa dos recursos. Use o modo expresso quando:
-
Você faz iterações nas alterações dos modelos durante o desenvolvimento.
-
Você deseja obter um feedback mais rápido sobre se as configurações dos seus recursos estão válidas.
-
Você não precisa esperar que os recursos estejam totalmente operacionais para seguir em frente.
Para implantações em produção nas quais é necessário verificar se os recursos estão totalmente estabilizados e operacionais antes de considerar a implantação concluída, utilize o modo de implantação padrão.
Como funciona o modo expresso
No modo de implantação padrão, o CloudFormation aguarda até que cada recurso atinja um estado totalmente estabilizado antes de considerar o recurso como concluído. Por exemplo, ao criar uma instância do Amazon EC2, o CloudFormation aguarda até que a instância esteja nesse estado running.
No modo expresso, o CloudFormation normalmente considera uma operação de recurso concluída assim que a chamada à API para criar, atualizar ou excluir o recurso for bem-sucedida. Na maioria dos casos, o CloudFormation não aguarda até que o recurso atinja seu estado operacional final.
Isso significa que, após a conclusão de uma operação de pilha no modo expresso:
-
Os recursos ainda podem estar sendo inicializados ou propagando alterações.
-
Os recursos podem ainda não estar prontos para atender ao tráfego ou aceitar conexões.₢
-
Operações de exclusão ainda podem estar em andamento.
Como o CloudFormation lida com dependências no modo expresso
O modo expresso respeita as dependências de recursos definidas no seu modelo. Se um recurso fizer referência ao ID ou a um atributo de outro recurso (por meio de Ref ou Fn::GetAtt), o CloudFormation verifica se a configuração do recurso referenciado foi aplicada antes de iniciar o recurso dependente. Se um recurso dependente sofrer uma falha temporária porque um recurso referenciado não está pronto, o CloudFormation tenta novamente a operação.
Recursos que não têm dependências entre si podem ser executados em paralelo.
O modo expresso não altera a ordem de dependência dos seus recursos. Isso muda quando a operação da pilha é concluída.
Introdução ao modo expresso
Você pode usar o modo expresso com a AWS Command Line Interface (AWS CLI), o AWS Cloud Development Kit (AWS CDK) (AWS CDK), o console do CloudFormation e os conjuntos de alterações. As seções a seguir descrevem como habilitar o modo expresso por meio de cada método.
Usar o modo expresso com a AWS CLI
Para usar o modo expresso com a AWS CLI, adicione o parâmetro --deployment-config aos seus comandos de operação da pilha.
Criar uma pilha no modo expresso
O comando a seguir cria uma pilha usando o modo expresso:
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
Atualizar uma pilha no modo expresso
O comando a seguir atualiza uma pilha usando o modo expresso:
aws cloudformation update-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
Excluir uma pilha no modo expresso
O comando a seguir exclui uma pilha usando o modo expresso:
aws cloudformation delete-stack --stack-namemy-stack\ --deployment-config '{"mode": "EXPRESS"}'
Usar o modo expresso com a AWS CDK
Para usar o modo expresso com o AWS Cloud Development Kit (AWS CDK) (AWS CDK), use o sinalizador --express com o comando cdk deploy:
cdk deploy --express
Usar o modo expresso com o AWS SAM
Para usar o modo expresso com a CLI do AWS SAM, adicione o sinalizador --express aos seus comandos de implantação ou sincronização:
sam deploy --express
sam sync --express
Para manter a configuração na configuração do seu projeto, use --save-params:
sam deploy --express --save-params
Isso salva express = true no arquivo samconfig.toml para que as implantações subsequentes usem o modo expresso automaticamente.
Quando o modo expresso está ativado, a CLI do AWS SAM passa a configuração de implantação para o CloudFormation. O sinalizador --disable-rollback controla o comportamento de reversão na configuração de implantação.
Usar o modo expresso com o console
Ao criar ou atualizar uma pilha no console do CloudFormation, é possível habilitar o modo expresso na etapa Configurar opções da pilha. Em Opções de implantação, selecione Expresso para o modo de implantação.
Usando o modo expresso com conjuntos de alterações₢
É possível usar o modo expresso com conjuntos de alterações, especificando a configuração de implantação ao criar o conjunto de alterações:
aws cloudformation create-change-set --stack-namemy-stack\ --change-set-namemy-change-set\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS"}'
Ao executar o conjunto de alterações, o CloudFormation aplica a configuração de implantação no modo expresso especificada durante a criação do conjunto de alterações.
Comportamento de reversão no modo expresso
Ao usar o modo expresso, o CloudFormation desabilita a reversão por padrão. Se uma operação de recurso falhar, o CloudFormation não reverte automaticamente as alterações.
Para reativar a reversão ao usar o modo expresso, defina disableRollback como false no parâmetro --deployment-config:
aws cloudformation create-stack --stack-namemy-stack\ --template-bodyfile://my-template.yaml\ --deployment-config '{"mode": "EXPRESS", "disableRollback": false}'
Modo expresso e pilhas aninhadas
Quando você usa o modo expresso em uma pilha pai, essa configuração é propagada para todas as pilhas aninhadas na hierarquia. Não é necessário especificar o modo expresso separadamente para cada pilha aninhada. Todos os recursos na pilha raiz e em suas pilhas aninhadas são finalizados assim que sua configuração é aplicada.
Considerações sobre prontidão de recursos
O modo expresso conclui as operações relacionadas aos recursos antes que estes atinjam um estado totalmente estabilizado; portanto, qualquer recurso pode precisar de tempo adicional para ficar totalmente pronto para atender ao tráfego ou concluir a propagação entre regiões. A tabela a seguir ilustra os tipos de comportamento dos recursos que você pode esperar, utilizando exemplos de diferentes tipos de recursos. Esses exemplos são ilustrativos e não constituem uma lista completa dos recursos compatíveis.
| Tipo de recurso | Operation | Comportamento de prontidão |
|---|---|---|
| Distribuição do Amazon CloudFront | Criar/atualizar | A implantação pode levar alguns minutos para ser realizada globalmente após a aplicação da configuração. |
| Instância do Amazon EC2 | Criar | A instância ainda pode estar em inicialização (executando scripts de dados do usuário, verificações de status) após a conclusão da operação da pilha. |
| AWSFunção do Lambda em | Excluir | Os recursos da função podem ainda estar realizando a limpeza após a operação de exclusão ter sido concluída. |
| Serviços do Amazon Elastic Container Service (Amazon ECS) | Criar/atualizar | As tarefas de serviço podem ainda estar iniciando ou atingindo um estado estável após a conclusão da operação da pilha. |
Recursos sem suporte e limitações
Os recursos e serviços a seguir não são compatíveis com o modo expresso:
- CloudFormation StackSets
-
O CloudFormation não oferece suporte ao modo expresso com operações do StackSets.
Os recursos a seguir apresentam um comportamento específico no modo express:
- Recursos personalizados
-
Os recursos personalizados (incluindo os recursos
AWS::CloudFormation::CustomResourceeCustom::*) seguem seu comportamento padrão. O CloudFormation aguarda que o recurso personalizado envie um sinal de resposta antes de considerar a operação concluída, mesmo no modo expresso. Para evitar que um recurso personalizado lento ou travado atrase fluxos de trabalho de iteração rápida, defina um tempo máximo de espera por meio dessa propriedadeServiceTimeout. Para obter mais informações, consulte Tempo limite de resposta.
Comparação com implantações do tipo hotswap AWS CDK
A tabela a seguir compara o modo expresso com as implantações do tipo hotswap AWS CDK.
| Recurso | Modo Expresso | Hotswap AWS CDK |
|---|---|---|
| Mecanismo de implantação | Usa o CloudFormation para todas as operações de recursos | Ignora o CloudFormation e chama as APIs dos serviços diretamente |
| Compatibilidade de modelos | Funciona com todos os modelos existentes do CloudFormation | Oferece suporte para um conjunto limitado de tipos de recursos |
| Estado da pilha | O estado da pilha permanece consistente com o modelo | O estado da pilha pode divergir do modelo |
| Suporte para reversão | Oferece suporte à reversão (desabilitada por padrão) | Não há suporte para reversão |
| Cobertura de recursos | Todos os tipos de recursos do CloudFormation | Tipos de recursos limitados (AWS Lambda, Amazon ECS, AWS Step Functions e outros) |
| Uso recomendado | Fluxos de trabalho de desenvolvimento e iteração | Fluxos de trabalho de desenvolvimento utilizando apenas recursos compatíveis |
Recursos relacionados
-
CreateStack, na Referência de APIs do AWS CloudFormation.