serverless-plugin-provider-groups

Build Status Coverage Status

This plugin makes managing conceptually linked provider level variables (e.g.environment, vpc, iam roles ) easier for large serverless projects.

It allows you to group variables together under a single name, which can then be imported together into your individual functions. See usage below for a simple example.

Installation

First install the plugin via NPM.

npm install serverless-plugin-provider-groups --save-dev

Then include the plugin within your serverless.yml config.

serverless.yml

plugins:
- serverless-plugin-provider-groups

Usage

To use, first add a providerGroups object to the custom options within your serverless.yml file. Then add any number of namespaces with any number of provider settings.

Check serverless documentation for configuration options.

For example:

custom:
providerGroups:
auth0: # a simple group for auth0 related config
environment:
AUTH0_TOKEN: a_token
redis: # a complex group for redis
environment:
REDIS_PORT: 6709
REDIS_HOST: http://localhost
vpc:
securityGroupIds:
- Ref: lambdaSecurityGroup
subnetIds: your_redis_subnet_ids
iamRoleStatements:
- Effect: Allow
Action:
- ec2:CreateNetworkInterface # Allows VPC access for Lambda
- ec2:DeleteNetworkInterface
- ec2:DescribeNetworkInterfaces
- ec2:DetachNetworkInterface
Resource:
- '*'

Once provider groups have been specified, you can then import them directly into your function calls.

For example:

functions:
authorize:
handler: authorize.handler
providerGroups:
- redis # adds all redis configs to this function
- auth0 # adds all auth0 configs to this function
events:
- http:
path: /authorize
method: post
getSomething:
handler: handler.getSomething
providerGroups:
- redis # adds only the redis configs to this function
events:
- http:
path: /get-something
method: get