Transformação AWS::Serverless - AWS CloudFormation

Transformação AWS::Serverless

Este tópico descreve como usar a transformação AWS::Serverless para processar um modelo escrito na sintaxe do AWS Serverless Application Model (AWS SAM) e transformá-lo em um modelo do CloudFormation compatível.

Uso

Para usar a transformação AWS::Serverless, é necessário declará-la no nível superior do seu modelo do CloudFormation. Não é possível usar AWS::Serverless como uma transformação incorporada em nenhuma outra seção de modelo.

A declaração deve usar a string literal AWS::Serverless-2016-10-31 como seu valor. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação.

Sintaxe

Para declarar essa transformação no modelo do CloudFormation, use a seguinte sintaxe:

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ ... } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: ...

A transformação AWS::Serverless é uma declaração independente sem parâmetros adicionais.

Exemplos

Os exemplos a seguir mostram como usar a transformação AWS::Serverless e a sintaxe AWS SAM para simplificar a declaração de uma função do Lambda e seu perfil de execução.

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ "MyServerlessFunctionLogicalID":{ "Type":"AWS::Serverless::Function", "Properties":{ "Handler":"index.handler", "Runtime":"nodejs20.x", "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip" } } } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs20.x CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'

Ao criar um conjunto de alterações do modelo, o CloudFormation expande a sintaxe do AWS SAM, conforme definido pela transformação. O modelo processado expande o recurso AWS::Serverless::Function, declarando uma função do Lambda e um perfil de execução.

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "amzn-s3-demo-bucket", "S3Key": "MySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs20.x" } }, "FunctionNameRole": { "Type": "AWS::IAM::Role", "Properties": { "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com"] } }] } } } } }

Para obter mais informações sobre o uso da transformação AWS::Serverless-2016-10-31, consulte Transformação AWS SAM no GitHub.

Para obter mais informações sobre aplicações sem servidor e o AWS Serverless Application Model (AWS SAM), consulte o Guia do desenvolvedor do AWS Serverless Application Model.

Para os tipos de recursos e propriedades específicos do AWS SAM, consulte Recursos e propriedades do AWS SAM no Guia do desenvolvedor do AWS Serverless Application Model.

Para obter mais informações sobre o uso de macros, consulte Executar processamento personalizado em modelos do CloudFormation com macros de modelo no Guia do usuário do AWS CloudFormation.