Formatos de modelo do CloudFormation - AWS CloudFormation

Formatos de modelo do CloudFormation

Você pode criar modelos do CloudFormation nos formatos JSON ou YAML. Ambos os formatos atendem ao mesmo propósito, mas oferecem vantagens distintas em termos de legibilidade e complexidade.

  • JSON: o JSON é um formato leve de intercâmbio de dados que é fácil de ser analisado e gerado por computadores. No entanto, ele pode ser complicado para humanos lerem e escreverem, especialmente em configurações complexas. Em JSON, o modelo é estruturado usando chaves {} e colchetes [] aninhados para definir recursos, parâmetros e outros componentes. Sua sintaxe requer uma declaração explícita de cada elemento, o que pode tornar o modelo extremamente detalhado, mas garante a adesão estrita a um formato estruturado.

  • YAML: o YAML foi projetado para ser mais legível por humanos e menos detalhado do que o JSON. Ele usa recuo em vez de chaves e colchetes para denotar o aninhamento, o que pode facilitar a visualização da hierarquia de recursos e parâmetros. O YAML geralmente é preferido por sua clareza e facilidade de uso, especialmente ao lidar com modelos mais complexos. No entanto, a dependência do YAML do uso de recuos pode levar a erros se o espaçamento não for consistente, o que requer atenção cuidadosa para manter a precisão.

Estrutura do modelo

Os modelos do CloudFormation são divididos em seções diferentes, e cada seção se destina a conter um tipo específico de informação. Algumas seções devem ser declaradas em uma ordem específica e, para outras, a ordem não importa. No entanto, à medida que você cria o modelo, pode ser útil usar a ordem lógica dos exemplos a seguir, porque valores em uma seção podem fazer referência a valores de uma seção anterior.

Ao criar modelos, não use seções importantes duplicadas, por exemplo, a seção Resources. Embora o CloudFormation possa aceitar o modelo, ele terá um comportamento indefinido ao processá-lo e poderá provisionar recursos incorretamente ou retornar erros inexplicáveis.

JSON

O exemplo a seguir mostra a estrutura de um modelo no formato JSON com todas as seções disponíveis.

{ "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 a estrutura de um modelo no formato YAML com todas as seções disponíveis.

--- 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

Comentários

Em modelos formatados em JSON, não há suporte a comentários. O JSON, por design, não inclui uma sintaxe para comentários, o que significa que não é possível adicionar comentários diretamente na estrutura JSON. No entanto, se você precisar incluir notas explicativas ou documentação, considere adicionar metadados. Para ter mais informações, consulte Atributo Metadata.

Nos modelos formatados em YAML, é possível incluir comentários em linha usando o símbolo #.

O exemplo a seguir mostra um modelo YAML com comentários em linha.

AWSTemplateFormatVersion: 2010-09-09 Description: A sample CloudFormation template with YAML comments. # Resources section Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: # Linux AMI ImageId: ami-1234567890abcdef0 InstanceType: t2.micro KeyName: MyKey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

Especificações

O CloudFormation é compatível com as seguintes especificações de JSON e YAML:

JSON

O CloudFormation segue o padrão JSON ECMA-404. Para obter mais informações sobre o formato JSON, consulte http://www.json.org.

YAML

O CloudFormation é compatível com a especificação do YAML versão 1.1 com algumas exceções. O CloudFormation não é compatível com os seguintes recursos:

  • As tags binary, omap, pairs, set e timestamp

  • Aliases

  • Mesclagens de hash

Para obter mais informações sobre o YAML, consulte https://yaml.org/.

Saiba mais

Para cada recurso especificado no modelo, você define as propriedades e os valores usando as regras de sintaxe específicas do JSON ou do YAML. Para obter mais informações sobre a sintaxe de modelo de cada formato, consulte Seções de modelos do CloudFormation.