1.0.3 • Published 4 years ago

serverless-nconfig v1.0.3

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

serverless npm version npm downloads Donate

Installation

npm i -E serverless-nconfig

Before configure your environments files.

.
├── serverless.yml
├── config
│   ├── custom-environment-variables.yaml
│   ├── default.js
│   ├── develop.js
│   ├── testing.js
│   ├── production.js

Feature

- Support all "node-config" features.
- Fetch Config from Aws CloudFormation Stack Outputs.
- Fetch Secret from VAULT.
- Fetch Config from AWS - SSM.

Usage

plugins:
  - serverless-nconfig

custom:
  dbPort: ${config:db.mysql.port:3306}
  prop2: ${config:path.to.required.value}
  prop2: ${config:some.path:DEFAULT_VALUE_HERE}

Test - Render Serverless Config

$ serverless print --stage develop
$ serverless print --stage testing
$ serverless print --stage production

Fetch Secret From Aws - SSM

// file: config/default.js
const { GetFromSSM } = require('serverless-nconfig/src/resolvers');

const stage = process.env.SLS_STAGE;
const region = process.env.AWS_REGION;

module.exports = {
  db: {
    mysql: {
      port: 3306,
      user: admin,
      passwd: GetFromSSM(`/${stage}/MY_SQL_PASSWORD`, true)
    }
  },
};

Fetch Secret From Vault. Option 1

// file: config/default.js
const GetFromVault = require('serverless-nconfig/src/resolvers/vault')({
  host: 'vault.corp.com',
  token: '____TOKEN___HERE___'
});


module.exports = {
  db: {
    mysql: {
      port: 3306,
      user: admin,
      passwd: GetFromVault('/team/service/name/mysql-password'),
    }
  },
};

Fetch Secret From Vault. Option 2

// file: config/default.js
const GetFromVault = require('serverless-nconfig/src/resolvers/vault')({
  host: 'vault.corp.com',
  roleId: '____ROLE_ID___HERE___',
  secretId: '____SECRET_ID___HERE___'
});


module.exports = {
  db: {
    mysql: {
      port: 3306,
      user: admin,
      passwd: GetFromVault('/team/service/name/mysql', 'resp.path.to.mysql.pass')
    }
  },
};

Fetch Config From: Aws - Cloud Formation Stack Outputs.

// file: config/default.js

const { GetFromStackOutput } = require('serverless-nconfig/src/resolvers');

const stackName = 'my-app-service'
const stage = process.env.SLS_STAGE;

module.exports = {
  app: {
    redisUrl: GetFromStackOutput(`app-infra-${stage}`, 'redisUrl'),
    dynamoUrl: GetFromStackOutput(`app-infra-${stage}`, 'dynamoUrl'),
    cloudFrontUrl: GetFromStackOutput(`${stackName}-${stage}`, 'CloudFrontUrl')
  },
};

Configuration References

https://github.com/lorenwest/node-config

Donation

Donate helps me to continue adding new features or bugs fix..

paypal

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.3

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago