config-with-paramstore
AWS Paramstore enables you to store secrets on amazon's servers. The AWS-SDK provides a way to retreive secrets from this vault on their servers. This package uses the flat object keys of your config file to replace every __PARAM__
in your config file with the velue found in the AWS parameter store for that flat object key.
Simple Example:
config.json
is converted into
I.e., then the value for the key my-awesome-app/database.password
is retreived from parameter store and replaces __PARAM__
.
Installation
1. define the base key of your config. this enables you to group together keys per service under a unique namespace.
In your config object, define the key parameterStoreNamespace
for this functionality.
e.g., if your config is:
{
parameterStoreNamespace: 'my-app/',
database: {
username: 'dummyuser',
password: '__PARAM__'
},
}
then we would retreive the __PARAM__
value from the parameter store key my-app/database.password
.
2. create keys in AWS Param Store through the AWS Console
https://console.aws.amazon.com/systems-manager/parameters?region=us-east-1
3. create your config file
e.g.,
Usage
example:
config:
javascript:
; // initialie config cacheconst configInstance = ; async { // get default env config const config = await configInstance; // check that it has been changed from __PARAM__ not;}
Extras
Environmental Variables
This package supoprts setting environmental variables in your config with the __ENV__
key. You can use packages like dotenv
to source environmental variables from files into your env. This package will not do that for you.
You can define a namespace for envVariables, just like you can do for param store, with the config key environmentVariableNamespace
. Note: environmental variables can not have periods in their names, so you must use underscores (_
) instead of periods (.
).