AWS::Serverless transform - Amazon CloudFormation
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China.

AWS::Serverless transform

The AWS::Serverless transform, which is a macro hosted by CloudFormation, takes an entire template written in the Amazon Serverless Application Model (Amazon SAM) syntax and transforms and expands it into a compliant CloudFormation template. For more information about serverless applications and Amazon SAM, see Deploying Lambda-based applications in the Amazon Lambda Developer Guide and Amazon SAM resource and property reference in the Amazon Serverless Application Model Developer Guide.

In the following example, the template uses Amazon SAM syntax to simplify the declaration of a Lambda function and its execution role.

Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://testBucket/'

When creating a change set from the template, CloudFormation expands the Amazon SAM syntax, as defined by the transform. The processed template expands the AWS::Serverless::Function resource, declaring an Amazon Lambda function and an execution role.

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "S3Key": "" }, "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": [""] } }] } } } } }


The value for the transform declaration must be a literal string. You can't use a parameter or function to specify a transform value. The following snippet is an example of a transform declaration:


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


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