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 obter mais informações sobre aplicações sem servidor e AWS SAM, consulte Deploying Lambda-based applications (Como implantar aplicações baseadas no Lambda) noAWS Lambda Developer Guide e no recurso AWS SAM e referência de propriedades no Guia do desenvolvedor do AWS Serverless Application Model.

No exemplo a seguir, o modelo a seguir usa a sintaxe 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: nodejs8.10 CodeUri: 's3://testBucket/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": "testBucket", "S3Key": "mySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs8.10" } }, "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"