View a markdown version of this page

Implante pilhas do AWS CloudFormation mais rapidamente com o modo expresso - AWS CloudFormation

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-name my-stack \ --template-body file://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-name my-stack \ --template-body file://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-name my-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-name my-stack \ --change-set-name my-change-set \ --template-body file://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-name my-stack \ --template-body file://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::CustomResource e Custom::*) 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 propriedade ServiceTimeout. 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