Victor
Victor

Reputation: 23922

How to transform a Serverless Application Model (SAM) template to Cloudformation?

From this answer I understand that SAM is a transform of Cloudformation.

Is there a way to get the transformed Cloudformation template from a SAM template via the console, CLI, or another way?

Upvotes: 16

Views: 7051

Answers (3)

DieterDP
DieterDP

Reputation: 4347

There is a feature request for this. Devs mentions a work-around using sam validate --debug. It will show the transformed template, but also some other debugging info.

The solutions by Akshay and Jarmod seem to require having already deployed your code or full application, while this method works completely local.

Upvotes: 4

Akshay Ramachandran
Akshay Ramachandran

Reputation: 631

I'm guessing you want to convert packaged SAM Template to a vanilla Cloudformation template.

You can achieve this with the following easy steps:

pip install aws-sam-translator docopt

wget https://raw.githubusercontent.com/awslabs/serverless-application- model/develop/bin/sam-translate.py`

python sam-translate.py --template-file=input_file.yml --output-template=output_file.json

Now you have a packaged vanilla CloudFormation template at output_file.json

More on this at https://github.com/awslabs/serverless-application-model/blob/develop/bin/sam-translate.py

Upvotes: 8

jarmod
jarmod

Reputation: 78573

For SAM projects already deployed, you should find the native CloudFormation template, post transformation, in the CloudFormation console. Select your stack, then open the Template tab. You can also retrieve this via the awscli using aws cloudformation get-template.

You can also use the SAM cli, for example:

sam package \
  --output-template-file output.yaml \
  --s3-bucket mybucketname

Upvotes: 12

Related Questions