5.1.0 • Public • Published


    Build Status

    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.

    Intrinsic functions and conditions

    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
    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

    Pseudo parameters

    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

    Other helpers

    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.

    CLI tools

    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


    npm i @mapbox/cloudfriend

    DownloadsWeekly Downloads






    Unpacked Size

    475 kB

    Total Files


    Last publish


    • mapbox-npm-01
    • mapbox-npm-02
    • mapbox-npm-07
    • mapbox-npm-03
    • mapbox-npm-04
    • mapbox-npm-09
    • mapbox-npm-05
    • mapbox-npm-06
    • mapbox-npm-08
    • mapbox-npm-advanced-actions
    • mapbox-npm-ci
    • mapbox-npm
    • mapbox-admin
    • mapbox-machine-user