AWS CloudFormation Template Flip
The term "Flip" is inspired by the well-known Unix command-line tool flip which converts text files between Unix, Mac, and MS-DOS formats.
AWS CloudFormation Template Flip can be installed using pip:
pip install cfn-flip
AWS CloudFormation Template Flip is both a command line tool and a python library.
Note that the command line tool is spelled
cfn-flip with a hyphen, while the python package is
cfn_flip with an underscore.
Command line tool
Usage: cfn-flip [OPTIONS] [INPUT] [OUTPUT] AWS CloudFormation Template Flip is a tool that converts AWS CloudFormation templates between JSON and YAML formats, making use of the YAML format's short function syntax where possible." Options: -i, --input [json|yaml] Specify the input format. Overrides -j and -y flags. -o, --output [json|yaml] Specify the output format. Overrides -j, -y, and -n flags. -j, --json Convert to JSON. Assume the input is YAML. -y, --yaml Convert to YAML. Assume the input is JSON. -c, --clean Performs some opinionated cleanup on your template. -l, --long Use long-form syntax for functions when converting to YAML. -n, --no-flip Perform other operations but do not flip the output format. --version Show the version and exit. --help Show this message and exit.
cfn-flip will detect the format of the input template and convert JSON to YAML and YAML to JSON, respectively.
stdinand outputting to
cat examples/test.json | cfn-flip
Reading from a file and outputting to
Reading from a file and outputting to another file:
cfn-flip examples/test.json output.yaml
Reading from a file and cleaning up the output
cfn-flip -c examples/test.json
To use AWS CloudFormation Template Flip from your own python projects, import one of the functions
to_json as needed.
from cfn_flip import flip, to_yaml, to_json """ All functions expect a string containing serialised data and return a string containing serialised data or raise an exception if there is a problem parsing the input """ # flip takes a best guess at the serialisation format # and returns the opposite, converting json into yaml and vice versa some_yaml_or_json = flip(some_json_or_yaml) # to_json expects serialised yaml as input, and returns serialised json some_json = to_json(some_yaml) # to_yaml expects serialised json as input, and returns serialised yaml some_yaml = to_yaml(some_json) # The clean_up flag performs some opinionated, CloudFormation-specific sanitation of the input # For example, converting uses of Fn::Join to Fn::Sub # flip, to_yaml, and to_json all support the clean_up flag clean_yaml = to_yaml(some_json, clean_up=True)