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)
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| cfn_flip-1.3.0.tar.gz | 16.1 kB | Without provenance | Details for cfn_flip-1.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cfn_flip-1.3.0-py3-none-any.whl | Python 3 | none | any | Details for cfn_flip-1.3.0-py3-none-any.whl |
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
|
Security for cfn-flip 1.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.