/serverless-plugin-extrinsic-functions

Introduces additional Fn:: functions

Primary LanguageJavaScriptMIT LicenseMIT

serverless-plugin-extrinsic-functions

Introduces additional Fn:: functions such as Fn::StartsWith.

Install

Run npm install in your Serverless project.

$ npm install --save-dev serverless-plugin-extrinsic-functions

Add the plugin to your serverless.yml file

plugins:
  - serverless-plugin-extrinsic-functions

How to use

This plugin lets you use a number of custom Fn:: functions in the serverless.yml file. For example, you can use it as part of CloudFormation Conditions:

resources:
  Conditions:
    StartsWithDev:
      Fn::StartsWith: [ "${opt:stage}", dev ]

You can also use it elsewhere in your serverless.yml as well, such as in the custom clause many plugins rely on, or as part of your function definitions:

functions:
  hello:
    handler: handler.hello
    environment:
      STARTS_WITH_DEV:
        Fn::StartsWith: [ "${opt:stage}", dev ]  # use in functions

These are the functions that are current supported, and the javascript functions they map to:

  • Fn::StartsWith: ([ input, prefix ]) => input.startsWith(prefix)
  • Fn::EndsWith: ([ input, suffix ]) => input.endsWith(suffix)
  • Fn::Substr: ([ input, from, length ]) => input.substr(from, length)
  • Fn::Substring: ([ input, start, end ]) => input.substring(start, end)
  • Fn::RandomNumber: ([ min, max ]) => Math.random() * (max - min) + min
  • Fn::GreaterThan: ([ x, y ]) => x > y
  • Fn::LessThan: ([ x, y ]) => x < y
  • Fn::Max: ([ x, y ]) => Math.max(x, y)
  • Fn::Min: ([ x, y ]) => Math.min(x, y)
  • Fn::JsonPath: ([ json, path, defaultValue ]) => lodash.get(JSON.parse(json), path, defaultValue)