Transformação AWS::Serverless - AWS CloudFormation

Transformação AWS::Serverless

A transformação AWS::Serverless, uma macro hospedada pelo CloudFormation, obtém um modelo inteiro escrito na sintaxe AWS Serverless Application Model (AWS SAM) e o transforma e expande em um modelo do CloudFormation compatível. Para mais informações sobre aplicações de tecnologia sem servidor e o AWS SAM, consulte Implantar aplicações baseadas no Lambda no Guia do desenvolvedor do AWS Lambda e AWS SAM resource and property reference no AWS Serverless Application Model Developer Guide e AWS SAM transform no GitHub.

No exemplo a seguir, o modelo a seguir usa a sintaxe do AWS SAM para simplificar a declaração de uma função Lambda e sua função de execução.

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 AWS SAM, conforme definido pela transformação. O modelo processado expande o recurso AWS::Serverless::Function, declarando uma função AWS Lambda e uma função 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"] } }] } } } } }

Sintaxe

O valor da declaração de transformação deve ser uma sequência literal. Você não pode usar um parâmetro ou uma função para especificar um valor de transformação. O trecho a seguir é um exemplo de uma declaração de transformação:

JSON

"Transform" : "AWS::Serverless-2016-10-31"

YAML

Transform: "AWS::Serverless-2016-10-31"