O que é CloudFormation?
O AWS CloudFormation é o serviço de Infraestrutura como Código (IaC) da AWS. Você descreve toda a sua infraestrutura em um arquivo de texto (template YAML ou JSON) e o CloudFormation cria, atualiza e deleta os recursos automaticamente.
Em vez de clicar no console ou executar comandos CLI um a um, você define o estado desejado da infraestrutura e o CloudFormation cuida de chegar lá.
# Exemplo de template CloudFormation (YAML)
AWSTemplateFormatVersion: '2010-09-09'
Description: Servidor web simples
Resources:
MinhaInstancia:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0abcdef1234567890
InstanceType: t3.micro
Tags:
- Key: Name
Value: WebServer
Conceitos Fundamentais
- Template: arquivo YAML ou JSON que descreve os recursos a serem criados
- Stack: conjunto de recursos AWS criados a partir de um template. Você gerencia a stack, não os recursos individualmente
- StackSet: implanta stacks em múltiplas contas e regiões AWS simultaneamente
- Change Set: prévia das mudanças antes de aplicar uma atualização — evita surpresas
- Drift Detection: detecta quando recursos foram modificados manualmente fora do CloudFormation
Estrutura de um Template
| Seção | Obrigatória? | Descrição |
|---|---|---|
| AWSTemplateFormatVersion | Não | Versão do formato (sempre "2010-09-09") |
| Description | Não | Descrição legível do template |
| Parameters | Não | Valores de entrada que o usuário fornece ao criar a stack |
| Mappings | Não | Tabela de valores estáticos (ex: AMI por região) |
| Conditions | Não | Lógica condicional (ex: criar recurso só em produção) |
| Resources | Sim | Os recursos AWS a serem criados — única seção obrigatória |
| Outputs | Não | Valores exportados (ex: URL do load balancer, ID da VPC) |
Benefícios do CloudFormation
- Repetibilidade: crie ambientes idênticos (dev, staging, prod) com o mesmo template
- Versionamento: templates são arquivos de texto — armazene no Git e rastreie mudanças
- Rollback automático: se a criação ou atualização falhar, o CloudFormation desfaz as mudanças automaticamente
- Sem custo adicional: o CloudFormation é gratuito — você paga apenas pelos recursos criados
- Dependências automáticas: o CloudFormation determina a ordem correta de criação dos recursos
CloudFormation vs CDK vs Terraform
| Ferramenta | Linguagem | Escopo | Destaque |
|---|---|---|---|
| CloudFormation | YAML / JSON | Apenas AWS | Nativo AWS, gratuito, integração total |
| CDK | TypeScript, Python, Java, C# | Apenas AWS | Gera CloudFormation — mais produtivo para devs |
| Terraform | HCL | Multi-cloud | Suporta AWS, Azure, GCP e 1.000+ providers |
Drift Detection
Quando alguém modifica um recurso diretamente no console ou via CLI (fora do CloudFormation), a stack fica em drift — o estado real diverge do template. O CloudFormation detecta isso e mostra quais recursos foram alterados e como.
Template (estado desejado)
↓ CloudFormation aplica
Stack (recursos criados)
↓ alguém modifica manualmente
Drift detectado ← CloudFormation alerta
⭐ Pontos Importantes para o Exame
- CloudFormation é o serviço de IaC nativo da AWS — templates YAML ou JSON
- A única seção obrigatória em um template é
Resources - Stack = conjunto de recursos gerenciados como uma unidade
- StackSet = implanta em múltiplas contas/regiões simultaneamente
- Change Set = prévia das mudanças antes de aplicar (evita surpresas)
- Drift Detection = identifica recursos modificados fora do CloudFormation
- CloudFormation em si é gratuito — você paga pelos recursos criados
- Rollback automático em caso de falha — garante consistência da infraestrutura
- CDK gera templates CloudFormation — é uma abstração de nível mais alto
