AWS CloudFormation Template Flip
About
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.
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.
Installation
AWS CloudFormation Template Flip can be installed using pip:
pip install cfn-flip
Usage
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.
Examples:
-
Reading from
stdinand outputting tostdout:cat examples/test.json | cfn-flip
-
Reading from a file and outputting to
stdout:cfn-flip examples/test.yaml -
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
Python package
To use AWS CloudFormation Template Flip from your own python projects, import one of the functions flip, to_yaml, or 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)
Configuration paramters
You can configure some parameters like:
max_col_width: Maximum columns before breakline. Default value is 200
To change the configuration you can use:
Environment Variable
Linux/Unix:
export CFN_MAX_COL_WIDTH=120
Windows: SET CFN_MAX_COL_WIDTH=120
Python
from cfn_tools._config import config
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
"""
# Change the default number of columns to break line to 120
config['max_col_width'] = "120"
# 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)
Release files for cfn-flip 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cfn_flip-1.3.0.tar.gz | 16.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cfn_flip-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.5 kB
Release files / cfn_flip-1.3.0.tar.gz
| Download URL | cfn_flip-1.3.0.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
003e02a089c35e1230ffd0e1bcfbbc4b12cc7d2deb2fcc6c4228ac9819307362
|
|
BLAKE2b-256 checksum How to use checksums |
ca758eba0bb52a6c58e347bc4c839b249d9f42380de93ed12a14eba4355387b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / cfn_flip-1.3.0-py3-none-any.whl
| Download URL | cfn_flip-1.3.0-py3-none-any.whl |
|---|---|
| Size | 21.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
faca8e77f0d32fb84cce1db1ef4c18b14a325d31125dae73c13bcc01947d2722
|
|
BLAKE2b-256 checksum How to use checksums |
2ba8a67297cd63ef99c3391c1d143161b187b71afa715a988655758269e3d02f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|