Anatomia do modelo - AWS CloudFormation

Anatomia do modelo

Um modelo é um arquivo de texto formatado em JSON ou YAML que descreve a sua infraestrutura da AWS. Os exemplos a seguir mostram uma estrutura de modelo do AWS CloudFormation e suas seções.

JSON

O exemplo a seguir mostra um modelo de estilhaço formatado em JSON.

{ "AWSTemplateFormatVersion" : "version date", "Description" : "JSON string", "Metadata" : { template metadata }, "Parameters" : { set of parameters }, "Rules" : { set of rules }, "Mappings" : { set of mappings }, "Conditions" : { set of conditions }, "Transform" : { set of transforms }, "Resources" : { set of resources }, "Outputs" : { set of outputs } }

YAML

O exemplo a seguir mostra um modelo de estilhaço formatado em YAML.

--- AWSTemplateFormatVersion: "version date" Description: String Metadata: template metadata Parameters: set of parameters Rules: set of rules Mappings: set of mappings Conditions: set of conditions Transform: set of transforms Resources: set of resources Outputs: set of outputs

Seções do modelo

Os modelos incluem várias seções principais. A seção Resources é a única seção necessária. Algumas seções em um modelo podem ser em qualquer ordem. No entanto, à medida que você cria o modelo, pode ser útil usar a ordem lógica da lista a seguir, porque valores em uma seção podem fazer referência a valores de uma seção anterior.

Format Version (opcional)

A versão do modelo do AWS CloudFormation com a qual o modelo está em conformidade. A versão do formato do modelo não é a mesma que a versão da API ou da WSDL. A template format version pode ser alterada independentemente das versões da API e da WSDL.

Description (opcional)

Uma sequência de texto que descreve o modelo. Esta seção deve sempre seguir a seção template format version.

Metadata (opcional)

Os objetos que fornecem informações adicionais sobre o modelo.

Parameters (opcional)

Os valores a serem passados para seu modelo em tempo de execução (ao criar ou atualizar uma pilha). Você pode fazer referência a parâmetros nas seções Resources e Outputs do modelo.

Rules (opcional)

Valida um parâmetro ou uma combinação de parâmetros repassados para um modelo durante uma criação de pilha ou atualização de pilha.

Mappings (opcional)

Um mapeamento de chaves e valores associados que você pode usar para especificar valores de parâmetros condicionais, semelhante a uma tabela de pesquisa. Você pode vincular uma chave a um valor correspondente usando a função intrínseca Fn::FindInMap nas seções Resources e Outputs.

Conditions (opcional)

As condições que controlam se determinados recursos são criados ou se determinadas propriedades de recursos são atribuídas a um valor durante a criação ou a atualização da pilha. Por exemplo, condicionalmente, você pode criar um recurso que depende de se a pilha é de um ambiente de teste ou de produção.

Transform (opcional)

Em aplicações sem servidor (também chamadas de aplicações baseadas no Lambda), especifique a versão do AWS Serverless Application Model (AWS SAM) a ser usada. Quando você especifica uma transformação, você pode usar a sintaxe do 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 transformações AWS::Include para trabalhar com trechos de modelos que são armazenados separadamente do modelo principal do AWS CloudFormation. Você pode armazenar seus arquivos de trechos em um bucket do Amazon S3 e, em seguida, reutilizar as funções em vários modelos.

Resources (obrigatório)

Especifica os recursos da pilha e suas propriedades, como uma instância do Amazon Elastic Compute Cloud ou um bucket do Amazon Simple Storage Service. Você pode fazer referência a recursos nas seções Resources e Outputs do modelo.

Outputs (opcional)

Descreve os valores que são retornados sempre que você visualiza as propriedades da pilha. Por exemplo, você pode declarar uma saída para o nome de um bucket do S3 e, em seguida, chamar o comando da aws cloudformation describe-stacksAWS CLI para visualizar o nome.

nota

Ao criar modelos, não utilize seções principais duplicadas, por exemplo, utilizando várias seções de recursos. Embora o CloudFormation possa aceitar o modelo, ele terá um comportamento indefinido ao processar esse modelo e poderá provisionar recursos incorretamente ou retornar erros inexplicáveis.