Parser and schema for CloudFormation YAML template tags.
Implements support for AWS-specific CloudFormation YAML schema.
The implementation and tests are based on the official AWS Python client aws-cli. It supports all intrinsic CloudFormation functions listed in AWS docs as of October 2017.
npm install --save-dev yaml-cfn
const { yamlParse, yamlDump } = require('yaml-cfn');
const input = `
Key:
- !GetAtt Foo.Bar
- !Equals [!Ref Baz, "hello"]
`;
const parsed = {
"Key": [
{"Fn::GetAtt": ["Foo", "Bar"]},
{"Fn::Equals": [{"Ref": "Baz"}, "hello"]}
]
};
assert.deepEqual(yamlParse(input), parsed);
assert.deepEqual(yamlParse(yamlDump(parsed)), parsed);
The module uses js-yaml. The schema it uses is also exported, and may be used e.g. like so:
const { schema } = require('yaml-cfn');
const yaml = require('js-yaml');
yaml.safeLoad(input, { schema: schema })