Ir para o conteúdo

A Fábrica de Nuvens: Guia de Infraestrutura como Código com AWS CloudFormation

A Dor: O Caos da Implantação Manual

No mundo da nuvem, a flexibilidade é imensa, mas o gerenciamento manual traz desafios enormes: * Como garantir que seu ambiente de teste seja 100% idêntico ao de produção? * Como reverter uma implantação que deu errado, sem passar horas desfazendo tudo manualmente? * Como documentar cada recurso e cada mudança na sua infraestrutura? * Como gerenciar as dependências (ex: criar a rede antes do servidor)?

Fazer tudo isso manualmente é lento, propenso a erros e a causa do famoso "Desvio de Configuração" (Configuration Drift).

A Solução: Trate sua infraestrutura como você trata seu código. Isso é Infraestrutura como Código (IaC), e a principal ferramenta da AWS para isso é o AWS CloudFormation.

Analogia: Pense que você está construindo uma casa pré-fabricada. Em vez de construir com tijolos e cimento no local (gerenciamento manual), você cria uma "planta baixa digital" e a envia para uma "fábrica robótica e inteligente" (o CloudFormation).


1. Os Dois Pilares do CloudFormation

1. O Modelo (Template) - A Planta Baixa

  • O que é? Um arquivo de texto, escrito em JSON ou YAML, onde você declara todos os recursos da AWS que você quer criar (EC2, VPC, S3, RDS, etc.) e suas configurações.
  • A Filosofia (Declarativa): Você não diz ao CloudFormation como construir. Você apenas descreve o que você quer no resultado final. A "fábrica" se encarrega de descobrir a melhor ordem de construção.

2. A Pilha (Stack) - A Casa Construída

  • O que é? A coleção de recursos da AWS que foram criados a partir de um único template.
  • Como Funciona: Você gerencia todos os recursos como uma unidade única. Para deletar a "casa inteira", você não demole parede por parede; você simplesmente "deleta a pilha", e o CloudFormation remove todos os recursos associados de forma limpa.

2. Resolvendo os Desafios de Implantação

Se o seu desafio é... Como o CloudFormation resolve...
Implantar ambientes repetíveis e idênticos? Use o mesmo Template para criar múltiplas Stacks (Dev, Teste, Produção), garantindo que sejam clones perfeitos.
Gerenciar dependências? O CloudFormation entende as dependências. Ele sabe que precisa criar a VPC antes de criar a sub-rede, e a sub-rede antes de criar a instância EC2.
Gerenciar uma reversão (rollback)? Se a criação de qualquer recurso na pilha falhar, o CloudFormation automaticamente desfaz tudo que ele criou, retornando ao estado anterior. É um colete salva-vidas automático.
Documentar as alterações? O Template é a documentação viva. Ele é a fonte única da verdade. Para saber como a infraestrutura está configurada, você lê o código.

3. Práticas Recomendadas do Arquiteto

  • Use Controle de Versão: Trate seus templates do CloudFormation como você trata o código da sua aplicação. Armazene-os em um repositório Git para ter um histórico completo de todas as mudanças.
  • Use Change Sets para Prever o Impacto: Antes de aplicar uma mudança em uma pilha de produção, crie um Conjunto de Alterações (Change Set). O CloudFormation irá analisar sua mudança e te dar um relatório exato do que ele vai fazer: "Vou Modificar esta instância, Adicionar este Security Group e Deletar aquele volume EBS". Você pode aprovar ou cancelar a mudança antes que ela aconteça.
  • Não Faça Alterações Manuais: Evite o Configuration Drift. Se você precisar de uma mudança, atualize o template, não o recurso no console.

HACK PARA CERTIFICAÇÃO: Para a prova: 1. AWS CloudFormation é o serviço de Infraestrutura como Código (IaC) da AWS. 2. Um Template é o arquivo de código (JSON/YAML) que descreve os recursos. 3. Uma Stack (Pilha) é o conjunto de recursos que foram criados a partir de um template. 4. Ele resolve o problema de provisionamento manual, tornando as implantações repetíveis e consistentes.


A Fábrica de Nuvens: Guia Definitivo de Infraestrutura como Código com AWS CloudFormation

A Dor: Como garantir que seu ambiente de teste seja 100% idêntico ao de produção? Como reverter uma implantação com falha? Como documentar cada recurso da sua infraestrutura? O gerenciamento manual torna essas tarefas um pesadelo.

A Solução: Trate sua infraestrutura como código. A principal ferramenta da AWS para isso é o AWS CloudFormation.

Analogia: Pense que você está construindo uma casa pré-fabricada. Em vez de construir no local, você cria uma "planta baixa digital" e a envia para uma "fábrica robótica e inteligente" (o CloudFormation).


1. Os Dois Pilares do CloudFormation

1. O Modelo (Template) - A Planta Baixa

  • O que é? Um arquivo de texto (em YAML ou JSON) onde você declara todos os recursos da AWS que você quer (EC2, VPC, S3, RDS, etc.) e como eles devem ser configurados.

2. A Pilha (Stack) - A Casa Construída

  • O que é? A coleção de recursos reais da AWS que foram criados a partir de um único template. Você gerencia todos os recursos como uma unidade única.
  • Analogia: Para deletar a "casa inteira", você não demole parede por parede; você simplesmente "deleta a pilha".

O Fiscal de Obras (Detecção de Desvio - Drift Detection): O CloudFormation pode atuar como um "fiscal" que compara a "casa construída" (a Stack) com a "planta baixa original" (o Template) e te alerta sobre qualquer "reforma" manual não autorizada que tenha sido feita diretamente no console.


2. A Anatomia de uma Planta Baixa (A Estrutura de um Template)

Um template do CloudFormation tem várias seções. Vamos ver as principais.

Parâmetros (Parameters) - Opcional

  • Analogia: As "Opções de Customização" no formulário de pedido da sua casa.
  • O que faz? Permite que você insira valores customizados no momento em que cria a pilha. Isso torna seus templates reutilizáveis.
  • Exemplo: Em vez de "chumbar" o tipo de instância no código, você cria um parâmetro InstanceType e pode escolher t2.micro para o ambiente de teste e m5.large para o de produção, usando o mesmo template.

Mapeamentos (Mappings) - Opcional

  • Analogia: O "Catálogo de Fornecedores" do arquiteto.
  • O que faz? Permite que você crie um mapa de valores estáticos. O uso mais comum é para selecionar a AMI correta com base na Região.
  • Exemplo: "SE o parâmetro AWS::Region for us-east-1, ENTÃO use a AMI ami-123. SE for sa-east-1, ENTÃO use a AMI ami-456."

Recursos (Resources) - OBRIGATÓRIO

  • Analogia: A "Planta Baixa Principal".
  • O que faz? Esta é a única seção obrigatória do template. É aqui que você define cada "cômodo" e "item" da sua casa: cada instância EC2, bucket S3, tabela DynamoDB, etc.

Saídas (Outputs) - Opcional

  • Analogia: As "Informações de Entrega".
  • O que faz? Permite que você declare valores importantes que você quer que a pilha retorne após a sua criação.
  • Exemplo: "Quando a pilha estiver pronta, por favor, me mostre o endereço do meu site (o DNS do Load Balancer) e o ARN do meu bucket S3." Isso facilita a localização dos seus recursos e permite que você use a saída de uma pilha como entrada para outra.

3. As Ferramentas do Arquiteto

A Dor: Escrever um arquivo YAML ou JSON grande e complexo manualmente é assustador e propenso a erros de sintaxe (uma vírgula faltando, uma indentação errada).

A Solução: Use um editor de código moderno com plugins. * Recomendação: Use o Visual Studio Code com a extensão da AWS e a extensão do YAML. Ele te dará preenchimento automático, verificação de sintaxe e formatação, o que reduz drasticamente os erros e acelera o desenvolvimento.

HACK PARA CERTIFICAÇÃO: Para a prova: 1. AWS CloudFormation é o serviço de IaC para provisionar recursos da AWS. 2. Um Template (JSON/YAML) é a planta baixa. 3. Uma Stack (Pilha) é a infraestrutura construída. 4. A seção Resources é a única seção obrigatória em um template.


A Fábrica de Nuvens: Guia Definitivo de Infraestrutura como Código com AWS CloudFormation

A Dor: Como garantir que seu ambiente de teste seja 100% idêntico ao de produção? Como reverter uma implantação com falha? Como documentar cada recurso da sua infraestrutura? O gerenciamento manual torna essas tarefas um pesadelo.

A Solução: Trate sua infraestrutura como código. A principal ferramenta da AWS para isso é o AWS CloudFormation.

Analogia: Pense que você está construindo uma casa pré-fabricada. Em vez de construir no local, você cria uma "planta baixa digital" e a envia para uma "fábrica robótica e inteligente" (o CloudFormation).


1. Os Dois Pilares do CloudFormation

1. O Modelo (Template) - A Planta Baixa

  • O que é? Um arquivo de texto (em YAML ou JSON) onde você declara todos os recursos da AWS que você quer (EC2, VPC, S3, RDS, etc.) e como eles devem ser configurados.

2. A Pilha (Stack) - A Casa Construída

  • O que é? A coleção de recursos reais da AWS que foram criados a partir de um único template. Você gerencia todos os recursos como uma unidade única.

O Fiscal de Obras (Detecção de Desvio - Drift Detection): O CloudFormation pode atuar como um "fiscal" que compara a "casa construída" (a Stack) com a "planta baixa original" (o Template) e te alerta sobre qualquer "reforma" manual não autorizada que tenha sido feita diretamente no console.


2. A Anatomia de uma Planta Baixa Inteligente

Um template do CloudFormation é mais do que uma simples lista de recursos. Ele tem seções que o tornam dinâmico e reutilizável.

  • Parameters (As Opções de Customização):

    • A Dor que Resolve: Ter que criar um template diferente para cada ambiente (Dev, Teste, Prod).
    • Como Funciona: Permite que você insira valores customizados no momento em que cria a pilha. Por exemplo, você cria um parâmetro InstanceType e pode escolher t2.micro para Dev e m5.large para Prod, usando o mesmo template.
  • Mappings (O Catálogo de Fornecedores):

    • A Dor que Resolve: O ID de uma AMI é diferente em cada Região da AWS. Como criar um template que funcione em qualquer lugar do mundo?
    • Como Funciona: Você cria um mapa de valores. "SE a Região for us-east-1, use a AMI ami-123. SE for sa-east-1, use a AMI ami-456."
  • Resources (A Planta Principal):

    • A única seção obrigatória. É aqui que você define cada "cômodo" e "item" da sua casa: cada instância EC2, bucket S3, tabela DynamoDB, etc.
  • Outputs (As Informações de Entrega):

    • A Dor que Resolve: "Depois que a pilha foi criada, qual é o endereço do meu site? Preciso procurar manualmente no console."
    • Como Funciona: Você declara quais informações importantes devem ser exibidas como saída após a criação da pilha (ex: o DNS do Load Balancer).

As Instruções Conectadas (Funções Intrínsecas)

Para fazer as seções conversarem entre si, usamos Funções Intrínsecas.

  • Ref (Referência): A função mais comum. Usada para pegar o valor de um Parâmetro ou o ID de um Recurso definido no mesmo template.
  • Fn::FindInMap: Usada para procurar um valor dentro da sua seção de Mappings.
  • Fn::GetAtt: Usada para pegar um atributo específico de um recurso (ex: o PrivateIp de uma instância EC2).

3. A Rede de Segurança (Gerenciamento de Stacks)

  • Rollback Automático:

    • A Dor: Durante uma implantação, o 5º de 10 recursos falha ao ser criado, deixando sua infraestrutura em um estado inconsistente e quebrado.
    • A Solução: Por padrão, se qualquer recurso falhar durante a criação, o CloudFormation atua como um "colete salva-vidas" e desfaz automaticamente todos os recursos que ele já havia criado, deixando seu ambiente limpo.
  • Proteção Contra Encerramento:

    • Você pode habilitar uma "trava de segurança" em uma pilha de produção para evitar que ela seja deletada acidentalmente.
  • Política de Exclusão (DeletionPolicy): > INSIGHT DE ESPECIALISTA: "Eu deletei minha pilha e ela levou meu banco de dados de produção junto!" > Para recursos que armazenam dados (como bancos de dados RDS ou buckets S3), você pode adicionar uma DeletionPolicy: Retain. Agora, mesmo que a "casa" (a Stack) seja demolida, a "fundação do cofre" (seu banco de dados) será preservada.

HACK PARA CERTIFICAÇÃO: Para a prova: 1. Um Template (JSON/YAML) é a planta baixa. Uma Stack (Pilha) é a infraestrutura construída. 2. A seção Resources é a única seção obrigatória em um template. 3. Os Parameters tornam os templates reutilizáveis entre diferentes ambientes. 4. O Rollback Automático em caso de falha é uma característica de segurança fundamental do CloudFormation.


A Fábrica de Nuvens: Guia Definitivo de Infraestrutura como Código com AWS CloudFormation

A Dor: Como garantir que seu ambiente de teste seja 100% idêntico ao de produção? Como reverter uma implantação com falha? Como documentar e prever o impacto de cada mudança na sua infraestrutura? O gerenciamento manual torna essas tarefas um pesadelo.

A Solução: O AWS CloudFormation, sua "fábrica" para construir infraestrutura como código.


1. Os Pilares: Template e Stack (Recap)

  • O Modelo (Template): A "planta baixa digital" (YAML/JSON) que descreve o que você quer.
  • A Pilha (Stack): A "casa real, construída" a partir da planta.

2. A Planta Baixa Inteligente (Estrutura e Funções)

Um template bem escrito usa seções para se tornar dinâmico e reutilizável:

  • Parameters: As "opções de customização" para tornar seus templates flexíveis.
  • Mappings: O "catálogo de fornecedores" para selecionar valores com base em uma condição (ex: Região).
  • Resources: A seção obrigatória com a "planta principal" dos seus recursos.
  • Outputs: As "informações de entrega" (ex: o URL do seu site) após a construção.
  • Funções Intrínsecas (Ref, Fn::GetAtt, etc.): As "instruções inteligentes" que conectam as diferentes partes da sua planta.

Sincronizando a Construção (WaitCondition)

  • A Dor que Resolve: "Minha instância EC2 precisa baixar e instalar um software, o que leva 5 minutos. Como eu faço o CloudFormation esperar a instalação terminar antes de tentar anexar a instância a um Load Balancer?"
  • A Solução: Você usa um WaitConditionHandle e um WaitCondition.
  • Analogia: A planta baixa diz: "Pause a construção (WaitCondition) até receber o sinal verde (cfn-signal) do 'instalador' (WaitConditionHandle) que está dentro da instância." Isso garante que as etapas da sua implantação aconteçam na ordem correta, mesmo quando dependem de processos internos demorados.

3. O Manual de Operações Seguras (Gerenciando Stacks)

Gerenciar uma pilha é tão importante quanto criá-la. O CloudFormation oferece múltiplas "redes de segurança".

A Reforma Segura (Conjuntos de Alterações - Change Sets)

!!! tip "A Melhor Prática para Produção" * A Dor: "Eu preciso atualizar minha pilha de produção. Estou apavorado de que minha mudança no template possa acidentalmente deletar meu banco de dados." * A Solução: Antes de aplicar uma atualização, crie um Change Set. * Analogia: É como pedir um "Relatório de Impacto da Reforma" para a fábrica. * Como Funciona: O CloudFormation compara seu template atual com o novo e gera um relatório detalhado: "Nesta reforma, eu irei MODIFICAR este Security Group, ADICIONAR esta instância EC2 e NÃO IREI DELETAR NADA." Você analisa o relatório e, somente se concordar, aperta o botão "Executar".

As Travas de Segurança (Proteção da Pilha)

  • Proteção contra Encerramento (Termination Protection): Uma "trava de segurança" simples que você pode ativar para impedir que uma pilha seja deletada acidentalmente.
  • Política de Pilha (Stack Policy):
    • Analogia: Uma "Cláusula de Tombamento Histórico".
    • Como Funciona: É um documento JSON que você anexa à sua pilha, definindo quais recursos são "tombados" e não podem ser atualizados ou deletados durante uma atualização da pilha.
    • A Dor que Resolve: "Quero que minha equipe possa atualizar os servidores web, mas quero garantir que ninguém nunca, nem por acidente, modifique nosso banco de dados de produção."

O Plano de Contingência (Rollbacks)

  • Rollback Automático em Caso de Falha: Este é o comportamento padrão. Se qualquer parte da construção falhar, a "fábrica" automaticamente desfaz tudo, deixando seu ambiente limpo.
  • Continuar um Rollback com Falha: Às vezes, até mesmo a tentativa de desfazer a obra falha (ex: um recurso foi deletado manualmente fora do CloudFormation). A pilha fica em um estado UPDATE_ROLLBACK_FAILED. O comando continue-update-rollback é a forma de dizer à fábrica: "Eu consertei o problema. Por favor, tente o rollback novamente."

HACK PARA CERTIFICAÇÃO: Para a prova: 1. Um Template é o código; uma Stack é o resultado. 2. O Rollback Automático em Caso de Falha é o comportamento padrão que protege sua infraestrutura. 3. Os Change Sets são a melhor prática para prever o impacto de uma atualização antes de executá-la. 4. Lembre-se que você pode proteger uma stack com Termination Protection e recursos específicos com uma Stack Policy.


A Fábrica de Nuvens: Guia Definitivo de Infraestrutura como Código com AWS CloudFormation

A Dor: Como garantir que seu ambiente de teste seja 100% idêntico ao de produção? Como reverter uma implantação com falha? Como documentar e prever o impacto de cada mudança na sua infraestrutura? O gerenciamento manual torna essas tarefas um pesadelo.

A Solução: O AWS CloudFormation, sua "fábrica" para construir infraestrutura como código.

Analogia: Pense que você está construindo uma casa pré-fabricada. Em vez de construir no local, você cria uma "planta baixa digital" e a envia para uma "fábrica robótica e inteligente" (o CloudFormation).


(As seções 1, 2 e 3 sobre Pilares, Anatomia do Template e Gerenciamento de Stacks, que criamos anteriormente, estariam aqui.)

4. O Playbook do Arquiteto (Práticas Recomendadas)

Construir com CloudFormation é poderoso. Construir bem com CloudFormation é o que diferencia um amador de um profissional. Este é o playbook de regras que os especialistas seguem.

Escrevendo Templates Seguros e Flexíveis

  1. Não Incorpore Segredos:

    • A Dor: Salvar senhas de banco de dados ou chaves de API diretamente no seu template é uma falha de segurança grave.
    • A Prática Correta: Use a seção Parameters para passar segredos. Para segurança máxima, use um tipo de parâmetro que se integra com o AWS Systems Manager Parameter Store ou o AWS Secrets Manager, permitindo que o CloudFormation busque os segredos diretamente desses "cofres", sem que eles nunca apareçam em texto plano.
  2. Use Tipos de Parâmetros Específicos da AWS:

    • A Dor: Erros de digitação ao inserir IDs de VPC ou de Security Groups.
    • A Prática Correta: Em vez de um parâmetro do tipo String, use um tipo específico como AWS::EC2::VPC::Id ou AWS::EC2::SecurityGroup::Id.
    • O Resultado: O console do CloudFormation irá automaticamente te dar uma lista suspensa com todos os recursos daquele tipo na sua conta, evitando erros e economizando tempo.
  3. Valide seus Templates Antes de Usar:

    • A Dor: Enviar um template com um erro de sintaxe para a "fábrica" e esperar ele falhar.
    • A Prática Correta: Use a AWS CLI para validar seu template antes de criar a pilha: aws cloudformation validate-template --template-body file://seu-template.yaml.

Gerenciando Stacks como um Profissional

  1. REGRA #1: NÃO TOQUE NOS RECURSOS MANUALMENTE!

    • Uma vez que uma pilha é criada, resista à tentação de fazer alterações nos recursos (ex: mudar uma regra de Security Group) diretamente no console daquele serviço. Isso causa Configuration Drift e quebra a "fonte da verdade" do seu template. Se precisar de uma mudança, atualize o template.
  2. Use Change Sets para Atualizações:

    • Relembrando: esta é a melhor prática para produção. Sempre gere um Conjunto de Alterações para prever o impacto exato da sua atualização antes de executá-la.
  3. Use Políticas de Pilha (Stack Policies):

    • Use este recurso para "tombar" recursos críticos (como seu banco de dados de produção), protegendo-os contra atualizações ou exclusões acidentais durante uma atualização da pilha.
  4. Use Controle de Versão (Git):

    • Sua infraestrutura é código. Trate-a como tal. Armazene seus templates em um repositório Git para ter um histórico completo de todas as mudanças, revisões de código e colaboração em equipe.
  5. Audite Tudo (CloudTrail):

    • Lembre-se que o AWS CloudTrail grava todas as chamadas de API do CloudFormation. Use-o para auditar quem criou, atualizou ou deletou suas pilhas.

HACK PARA CERTIFICAÇÃO: Para a prova: 1. Um Template (JSON/YAML) é a planta baixa; uma Stack (Pilha) é a infraestrutura construída. 2. Parâmetros tornam os templates reutilizáveis. 3. Change Sets são a melhor prática para prever o impacto de uma atualização antes de executá-la. 4. Não incorporar credenciais em templates e não fazer alterações manuais em recursos gerenciados por uma pilha são práticas de segurança e governança fundamentais.


O Detetive da Fábrica: Guia de Troubleshooting do AWS CloudFormation

Se você escreve código, você vai criar bugs. Se você escreve Infraestrutura como Código (IaC), o mesmo se aplica. A habilidade de um engenheiro sênior não é escrever templates perfeitos, mas sim depurar os imperfeitos com velocidade e precisão.

Quando sua pilha do CloudFormation falha, não entre em pânico. Coloque seu chapéu de detetive.

Analogia: Pense que sua pilha falhou. A "linha de montagem da sua fábrica de casas parou". Um alarme vermelho está piscando. O que fazer?


1. A Cena do Crime (O Painel de Eventos)

A Regra de Ouro: Quando uma Stack (Pilha) falhar e entrar no estado ROLLBACK_IN_PROGRESS, a PRIMEIRA coisa que você faz é ir para a aba Eventos (Events).

  • O que procurar? Role a lista de eventos de baixo para cima. O primeiro evento que você encontrar com o status CREATE_FAILED (ou UPDATE_FAILED, etc.) é o seu ponto de partida.
  • A Pista Principal: A coluna Motivo do status (Status reason) é a sua pista mais importante. Ela contém a mensagem de erro que te dirá por que a "fábrica" parou.

2. O Manual do Detetive (Arquivos de Casos Comuns)

Vamos analisar os tipos de "crimes" mais comuns.

Caso 1: A Planta IleGÍVEL (Erros de Sintaxe)

  • Sintoma: A criação da pilha falha imediatamente com um erro como Template format error: ...
  • Causa Provável: Um erro de digitação no seu arquivo YAML ou JSON (ex: uma indentação errada, uma vírgula faltando).
  • Ferramentas Forenses:
    • O plugin de YAML/JSON do seu editor de código (como o VS Code).
    • O comando da AWS CLI: aws cloudformation validate-template --template-body file://seu-template.yaml

Caso 2: Acesso Negado (Erros de Permissão do IAM)

  • Sintoma: O Status reason mostra uma mensagem clara: API: ec2:RunInstances is not authorized... ou Access Denied.
  • Causa Provável: O usuário ou a Role que está executando a pilha não tem a permissão do IAM necessária para criar o recurso em questão.
  • Ferramentas Forenses: O console do IAM. Verifique as políticas anexadas à identidade que está fazendo a implantação.

Caso 3: O Problema Dentro da Casa (Falha na WaitCondition / UserData)

  • Sintoma: A criação de um recurso EC2 fica "travada" por um longo tempo e depois falha com um erro de timeout na WaitCondition.
  • Causa Provável: O robô construiu a "casa" (a instância EC2), mas o "eletricista" (seu script de User Data ou cfn-init) que foi enviado para dentro encontrou um problema e nunca enviou o sinal de 'trabalho concluído'.
  • O Kit de Ferramentas Forenses:
    1. Impeça a Demolição: O comportamento padrão do CloudFormation é deletar a instância falha. Para investigar, você precisa que ela permaneça. Lance a pilha novamente com a opção --on-failure DO_NOTHING na CLI. > Analogia: "Fábrica, se o eletricista falhar, NÃO demita a casa. Deixe-a de pé para que eu possa entrar e investigar."
    2. Entre na Instância: Use SSH ou Session Manager para acessar a instância que não foi deletada.
    3. Examine os Logs: A "caixa preta" do que aconteceu está nos arquivos de log.
      • Linux: /var/log/cloud-init-output.log e /var/log/cfn-init.log
      • Windows: C:\cfn\log\
      • O erro quase sempre estará nas últimas linhas desses arquivos. A causa mais comum é um script tentando baixar um arquivo de uma URL que não existe (404 Not Found) ou para a qual não tem permissão (403 Forbidden).

HACK PARA CERTIFICAÇÃO: Para a prova: 1. Saiba que o Rollback em Caso de Falha é o comportamento padrão que protege sua conta contra estados inconsistentes. 2. Entenda que a aba Eventos (Events) no console do CloudFormation é o principal local para iniciar a solução de problemas. 3. Lembre-se da diferença: erros de provisionamento aparecem no console do CloudFormation; erros de configuração de software (UserData/Init) aparecem nos logs dentro da instância EC2.