Helper functions for assembling CloudFormation templates in JavaScript.
Cloudfriend contains a library of JS classes that reduce the amount of "boilerplate" CloudFormation that you need to write to setup a common set of AWS Resources. See the shortcuts readme for more information, or the shortcuts API documentation to look at shortcut-specific configuration.
These are functions that you can use in place of various CloudFormation objects.
| CloudFriend | CloudFormation |
|---|---|
| base64(value) | Fn::Base64 |
| cidr(ipBlock, count, cidrBits) | Fn::Cidr |
| findInMap(mapping, key, attr) | Fn::FindInMap |
| forEach(uniqueLoopName, identifier, collection, outputKeyPrefix, outputValue) | Fn::ForEach |
| getAtt(obj, key) | Fn::GetAtt |
| getAzs(region) | Fn::GetAZs |
| join(delimiter, pieces) | Fn::Join |
| split(delimiter, string) | Fn::Split |
| select(index, list) | Fn::Select |
| ref(name) | Ref |
| userData(list) | Fn::Base64 and Fn::Join with \n delimiter |
| and(conditions) | Fn::And |
| equals(a, b) | Fn::Equals |
| if(condition, ifTrue, ifFalse) | Fn::If |
| not(condition) | Fn::Not |
| or(conditions) | Fn::Or |
| notEquals(a, b) | Fn::Not and Fn::Equals |
| sub(str, variables) | Fn::Sub |
| importValue(sharedValue) | Fn::ImportValue, |
| arn(service, suffix) | Fn::Sub designed for an ARN |
| transform(name, parameters) | Fn::Transform |
| contains(strings, s) | Fn::Contains |
| eachMemberEquals(strings, s) | Fn::EachMemberEquals |
| eachMemberIn(stringsToCheck, stringsToMatch) | Fn::EachMemberIn |
| refAll(parameterType) | Fn::RefAll |
| valueOf(parameterLogicalId, attribute) | Fn::ValueOf |
| valueOfAll(parameterType, attribute) | Fn::ValueOfAll |
These are static properties of cloudfriend that you can use to reference various CloudFormation objects.
| CloudFriend | CloudFormation |
|---|---|
| accountId | AWS::AccountId |
| notificationArns | AWS::NotificationARNs |
| noValue | AWS::NoValue |
| region | AWS::Region |
| stackId | AWS::StackId |
| stackName | AWS::StackName |
| partition | AWS::Partition |
| urlSuffix | AWS::URLSuffix |
| method | description |
|---|---|
| build(file, opts) | Builds a template defined by a static JavaScript export, a synchronous or an asynchronous function. |
| validate(file) | Uses the cloudformation:ValidateTemplate API call to perform rudimentary template validation |
| merge(...template) | Merges templates together. Throws errors if logical names are reused. Transform macros from all template arguments are merged into a single array, in order of their appearance in the template arguments, and an error is thrown if any macro is repeated. |
By installing cloudfriend globally, it can provide you with simple CLI tools for building and validating CloudFormation templates.
# either...
$ git clone https://github.com/mapbox/cloudfriend && cd cloudfriend && npm link
# ... or ...
$ npm install -g @mapbox/cloudfriend
Then, to build a template:
# Prints the template as JSON to stdout
$ build-template path/to/template.js
Or, to validate a template:
# Make sure that your shell is configured to make AWS requests
$ validate-template path/to/template.js
You may also specify a region for validation:
# Make sure that your shell is configured to make AWS requests
$ validate-template path/to/template.js us-east-1