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.jsconst GetFromSSM = ; const stage = processenvSLS_STAGE;const region = processenvAWS_REGION; moduleexports = db: mysql: port: 3306 user: admin passwd: ;
Fetch Secret From Vault. Option 1
// file: config/default.jsconst GetFromVault = host: 'vault.corp.com' token: '____TOKEN___HERE___'; moduleexports = db: mysql: port: 3306 user: admin passwd: ;
Fetch Secret From Vault. Option 2
// file: config/default.jsconst GetFromVault = host: 'vault.corp.com' roleId: '____ROLE_ID___HERE___' secretId: '____SECRET_ID___HERE___'; moduleexports = db: mysql: port: 3306 user: admin passwd: ;
Fetch Config From: Aws - Cloud Formation Stack Outputs.
// file: config/default.js const GetFromStackOutput = ; const stackName = 'my-app-service'const stage = processenvSLS_STAGE; moduleexports = app: redisUrl: dynamoUrl: cloudFrontUrl: ;
Configuration References
https://github.com/lorenwest/node-config
Donation
Donate helps me to continue adding new features or bugs fix..