Anatomia do modelo AWS SAM
Um arquivo de modelo AWS SAM segue rigorosamente o formato de um arquivo de modelo CloudFormation, que é descrito em Anatomia do modelo no Guia do usuário do AWS CloudFormation. As principais diferenças entre arquivos AWS SAM de modelo e arquivos CloudFormation de modelo são as seguintes:
-
Declaração de transformação. A declaração
Transform: AWS::Serverless-2016-10-31é necessária para arquivos AWS SAM de modelo. Essa declaração identifica um arquivo CloudFormation de modelo como um arquivo AWS SAM de modelo. Para obter mais informações sobre transformações, consulte Transformações no Guia do usuário do AWS CloudFormation. -
Seção global. A
Globalsseção é exclusiva deAWS SAM. Ele define propriedades que são comuns a todas as suas funções e APIs sem servidor. Todos os recursosAWS::Serverless::Function,AWS::Serverless::ApieAWS::Serverless::SimpleTableherdam as propriedades definidas na seçãoGlobals. Para obter mais informações sobre essa seção, consulte Seção Global do modelo AWS SAM. -
Seção de recursos. Nos modelos AWS SAM, a seção
Resourcespode conter uma combinação de recursos CloudFormation e recursos AWS SAM. Para obter mais informações sobre os recurso CloudFormation, consulte Referência de tipos de recursos e propriedades AWS no Guia do usuário do AWS CloudFormation. Para obter mais informações sobre recursos do AWS SAM, consulte Recursos e propriedades do AWS SAM.
Todas as outras seções de um arquivo de modelo AWS SAM correspondem à seção CloudFormation de arquivo de modelo com o mesmo nome.
YAML
O exemplo a seguir mostra um modelo de estilhaço formatado em YAML.
Transform: AWS::Serverless-2016-10-31 Globals:set of globalsDescription:StringMetadata:template metadataParameters:set of parametersMappings:set of mappingsConditions:set of conditionsResources:set of resourcesOutputs:set of outputs
Seções do modelo
Os modelos AWS SAM incluem várias seções principais. Somente as seções Transform e Resources são obrigatórias.
Você pode incluir seções de modelo em qualquer ordem. No entanto, se você estiver usando extensões de linguagem, deverá adicionar AWS::LanguageExtensions antes da transformação sem servidor (ou seja, antes de AWS::Serverless-2016-10-31), conforme mostrado no seguinte exemplo:
Transform: - AWS::LanguageExtensions - AWS::Serverless-2016-10-31
À medida que você cria o modelo, pode ser útil usar a ordem lógica mostrada na lista a seguir. Isso ocorre porque os valores em uma seção podem se referir aos valores de uma seção anterior.
- Transformar (obrigatório)
-
Para modelos AWS SAM, você deve incluir esta seção com um valor de
AWS::Serverless-2016-10-31.Transformações adicionais são opcionais. Para obter mais informações sobre transformações, consulte Transformações no Guia do usuário do AWS CloudFormation.
- Globais (opcional)
-
Propriedades que são comuns a todas as suas funções sem servidor, APIs e tabelas simples. Todos os recursos
AWS::Serverless::Function,AWS::Serverless::ApieAWS::Serverless::SimpleTableherdam as propriedades definidas na seçãoGlobals.Esta seção é exclusiva deAWS SAM. Não há uma seção correspondente nos modelo CloudFormations.
- Descrição (opcional)
-
Uma sequência de texto que descreve o modelo.
Esta seção corresponde diretamente à seção
Descriptionde modelos CloudFormation. - Metadata (opcional)
-
Os objetos que fornecem informações adicionais sobre o modelo.
Esta seção corresponde diretamente à seção
Metadatade modelos CloudFormation. - Parameters (opcional)
-
Os valores a serem passados para seu modelo no runtime (ao criar ou atualizar uma pilha). Você pode fazer referência a parâmetros nas seções
ResourceseOutputsdo modelo. Os objetos declarados naParametersseção fazem com que o sam deploy --guided comando apresente solicitações adicionais ao usuário.Os valores transmitidos usando o parâmetro
--parameter-overridesdo comandosam deploye as entradas no arquivo de configuração têm precedência sobre as entradas no arquivo de modelo do AWS SAM. Para obter mais informações sobre o comandosam deploy, consulte sam deploy na AWS SAMReferência de comandos da CLI. Para obter mais informações sobre o arquivo de configuração, consulte Arquivo de configuração do AWS SAM CLI. - 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::FindInMapnas seçõesResourceseOutputs.Esta seção corresponde diretamente à seção
Mappingsde modelos CloudFormation. - Condições (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.
Esta seção corresponde diretamente à seção
Conditionsde modelos CloudFormation. - Resources (obrigatório)
-
Especifica os recursos da pilha e suas propriedades, como uma instância do Amazon Elastic Compute Cloud (Amazon EC2) ou um bucket do Amazon Simple Storage Service (Amazon S3). Você pode fazer referência a recursos nas seções
ResourceseOutputsdo modelo.Essa seção é semelhante à seção
Resourcesde modelos CloudFormation. Nos modelos AWS SAM, essa seção pode conter recursos AWS SAM além dos recursos CloudFormation. - Outputs (opcional)
-
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 Command Line Interface (AWS CLI) para visualizar o nome.Esta seção corresponde diretamente à seção
Outputsde modelos CloudFormation.
Próximas etapas
Para baixar e implantar um aplicativo sem servidor de amostra que contém um arquivo AWS SAM de modelo, consulte Conceitos básicos do AWS SAM e siga as instruções em Tutorial: como implantar uma aplicação Hello World com o AWS SAM.