

# Seções de modelos do CloudFormation
<a name="template-anatomy"></a>

Cada modelo do CloudFormation consiste em uma ou mais seções, cada uma servindo a um propósito específico. 

A seção **Recursos** é obrigatória em todos os modelos do CloudFormation e forma o núcleo do modelo. Ela especifica os recursos da pilha e suas propriedades, como uma instância do Amazon EC2 ou um bucket do Amazon S3. Cada recurso é definido com um ID lógico exclusivo, tipo e detalhes de configuração específicos. 

A seção **Parâmetros**, embora opcional, desempenha um papel importante para tornar os modelos mais flexíveis. Ele permite que os usuários passem valores em tempo de execução ao criarem ou atualizarem uma pilha. Esses parâmetros podem ser referenciados nas seções `Resources` e `Outputs`, permitindo a personalização sem alterar o modelo em si. Por exemplo, você pode usar parâmetros para especificar tipos de instância ou configurações de ambiente que variam entre as implantações.

A seção **Saídas**, também opcional, define os valores que são retornados quando as propriedades de uma pilha são visualizadas. As saídas fornecem informações úteis, como identificadores de recursos ou URLs, as quais podem ser aproveitadas para fins operacionais ou para integração com outras pilhas. Esta seção ajuda os usuários a recuperar e usar detalhes importantes sobre os recursos criados pelo modelo.

Outras seções opcionais incluem **Mapeamentos**, que funcionam como tabelas de pesquisa para gerenciar valores condicionais. Com os mapeamentos, você define pares de chave valor e os usa com a função intrínseca `Fn::FindInMap` nas seções `Resources` e `Outputs`. Isso é útil para cenários em que você precisa ajustar as configurações com base em condições como Região da AWS ou ambiente.

As seções **Metadados** e **Regras**, embora menos usadas, fornecem funcionalidades adicionais. `Metadata` pode incluir informações adicionais sobre o modelo, ao mesmo tempo que `Rules` valida um parâmetro ou uma combinação de parâmetros durante a criação ou as atualizações da pilha, garantindo que atendam a critérios específicos. A seção **Condições** aumenta ainda mais a flexibilidade ao controlar se determinados recursos são criados ou propriedades são atribuídas a um valor com base em condições como o tipo de ambiente.

Por fim, a seção **Transformar** é usada para aplicar macros durante o processamento do modelo. Para aplicações sem servidor (também chamadas de aplicações do Lambda), ele especifica a versão do [AWS Serverless Application Model (AWS SAM)](https://github.com/awslabs/serverless-application-specification) que deve ser usada. Quando você especifica uma transformação, você pode usar a sintaxe AWS SAM para declarar recursos em seu modelo. O modelo define a sintaxe que você pode usar e como ela é processada. Você também pode usar a transformação `AWS::Include` para incluir trechos de modelo que são armazenados separadamente do modelo principal do CloudFormation. 

Os tópicos a seguir fornecem informações adicionais e exemplos para usar cada seção.

**Topics**
+ [Resources](resources-section-structure.md)
+ [Parameters](parameters-section-structure.md)
+ [Outputs](outputs-section-structure.md)
+ [Mappings](mappings-section-structure.md)
+ [Metadata](metadata-section-structure.md)
+ [Rules](rules-section-structure.md)
+ [Conditions](conditions-section-structure.md)
+ [Transform](transform-section-structure.md)
+ [Versão do formato](format-version-structure.md)
+ [Description](template-description-structure.md)