Recently I hit the 51,200 byte body size limit of AWS's CloudFormation's templates. I looked into creating Nested Stacks, but that seemed like a pain. Looking at the created json template, I saw a lot of unneeded whitespace.
I used troposhere to generate the template, so it was easy to reduce the size by stripping out the beginning and ending whitespace of each line in the json file.
I just added the following line:
json_compressed="\n".join([line.strip() for line in t.to_json().split("\n")])
utils.validate_cloudformation_template(json_compressed)
This more than havled the size of the template from ~60K to ~25K bytes:
$ wc template.json
1821 2860 60133 template.json
$ wc template_compressed.json
1821 2860 24616 template_compressed.json
And CloudFormation accepted it, no problem.
1 comment:
Troposphere's to_json method passes its arguments through to python's json encoder so you can say `t.to_json(indent=None)` to get a compact representation of the JSON to avoid having to modify the string afterwards.
Post a Comment