CloudFormation: a AWS declarada em código
Stacks com rollback atômico, change sets e drift detection, o CDK que compila TypeScript para template, e a resposta honesta para o duelo com o Terraform.
Já defendemos a tese geral da infraestrutura como código: ambiente clicado é ambiente irreproduzível. Este artigo desce ao capítulo AWS da história: o CloudFormation, a ferramenta nativa da casa, e a família que cresceu em volta dele.
O modelo: stacks que a AWS reconcilia
Você descreve os recursos num template (YAML/JSON) e os entrega ao CloudFormation, que cria, atualiza e destrói tudo como uma unidade chamada stack (docs.aws.amazon.com/cloudformation):
Resources:
FilaPedidos:
Type: AWS::SQS::Queue
Properties:
QueueName: pedidos
RedrivePolicy:
deadLetterTargetArn: !GetAtt FilaPedidosDLQ.Arn
maxReceiveCount: 5
FilaPedidosDLQ:
Type: AWS::SQS::Queue
Properties:
QueueName: pedidos-dlq
(A DLQ desde o dia um, declarada.) O que o modelo de stacks compra:
- Atomicidade com rollback: a atualização falhou no recurso 7 de 12? O CloudFormation desfaz tudo e volta ao estado anterior. É a rede de segurança que scripts imperativos não têm.
- Change sets: antes de aplicar, um diff do que será criado/alterado/destruído, o
planda casa, revisável em PR. - Detecção de drift: alguém mexeu no console? O drift detection aponta o desvio entre o template e a realidade.
- Sem estado para guardar: diferente do Terraform, o estado vive na própria AWS: um arquivo crítico a menos para proteger.
O pulo do gato moderno: CDK
Escrever YAML gigante cansa. O CDK (Cloud Development Kit) deixa você declarar a mesma infraestrutura em TypeScript/Python, com loops, funções e abstrações de alto nível, e compila para CloudFormation:
const fila = new sqs.Queue(this, "Pedidos", {
deadLetterQueue: { queue: dlq, maxReceiveCount: 5 },
});
new lambda.Function(this, "Processador", {
runtime: lambda.Runtime.NODEJS_22_X,
handler: "processar.handler",
code: lambda.Code.fromAsset("dist"),
events: [new eventsources.SqsEventSource(fila)],
});
Duas construções, e o CDK gera a fila, a Lambda, as permissões IAM mínimas entre elas e o gatilho: os constructs de alto nível embutem as boas práticas que em YAML puro são 80 linhas fáceis de errar. Para times que já vivem em TypeScript, é a porta de entrada mais produtiva para IaC na AWS.

CloudFormation ou Terraform? (a pergunta que sempre vem)
Os dois são maduros; a escolha é de contexto:
- Só AWS, time de devs (não de infra), muito serverless: CDK/CloudFormation. Rollback nativo, sem estado para gerenciar, constructs aceleram, e o suporte a recurso novo da AWS chega primeiro.
- Multi-provedor (AWS + Cloudflare + Datadog + ...), time de plataforma, padrão já estabelecido: Terraform/OpenTofu. Um fluxo só para tudo, ecossistema de módulos gigante, e o que já mostramos na série de cloud.
- Os dois convivem com fronteiras claras (rede base em Terraform, aplicações serverless em CDK) melhor do que uma guerra santa interna. Registre a escolha num ADR e siga.
O que não muda em nenhum caso: template no git, mudança por PR, aplicação pela esteira. A ferramenta é detalhe; a disciplina é o valor.
Os tropeços de quem começa
- A stack monolito: todo o ambiente numa stack só = qualquer mudança arrisca tudo, e o limite de recursos chega rápido. Separe por ciclo de vida: rede, dados, aplicação.
- Recursos com estado dentro de stacks voláteis: um
cfn deletedistraído leva o banco junto.DeletionPolicy: Retainem tudo que guarda dado, e backups testados. - Misturar console e código: o drift vira rotina e a confiança no template morre. Depois de codificar, o console vira leitura.
- Ignorar os limites de update: alguns recursos são substituídos (destruídos e recriados!) em certas mudanças. O change set avisa; leia antes de aprovar.
Colocar a AWS inteira em código (CDK ou Terraform, com a esteira e as fronteiras certas) é parte do nosso serviço de Cloud e Infraestrutura.
Quantos recursos da sua conta AWS nasceram de cliques? O drift detection conta. Pergunte à IA da Rabelo Digital, aqui no canto da tela, por onde começar a codificação. Sem formulário, sem espera.


Deixe um Comentário