0.0.7 • Published 7 months ago

@sp-tools/kloud-parameter v0.0.7

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

Parameter Store Reader

Reads parameters from specified provider

Examples

SSM Provider

In serverless.yml

provider:
  name: aws
  iamRoleStatements:
    - Effect: Allow
      Action:
        - ssm:GetParameters # Allow Parameter Store to be read
      Resource:
        - arn:aws:ssm:${env:AWS_REGION}:${env:AWS_ACCOUNT_ID}:parameter/staging/foo-service/*
const { makeParameterStore } = require('@sp-tools/kloud-parameter');
const { STAGE } = process.env;

const parameterStore = makeParameterStore({
  configPath: `/${SERVICE_STAGE}/foo-service/config`,
  secretPath: `/${SERVICE_STAGE}/foo-service/secret`,
  provider: {
    name: 'ssm'
  }
});

return Promise.all([parameterStore.getConfigs(['THE_CONFIG_1', 'THE_CONFIG_2']), parameterStore.getSecrets(['THE_SECRET_1'])])
  .then(([configs, secrets]) => ({ ...configs, ...secrets }))
  .then(console.log);

/* console.log output
{
  THE_CONFIG_1: 'the config 1',
  THE_CONFIG_2: 'the config 2',
  THE_SECRET_1: 'the secret 1'
};
*/

DynamoDB Provider

In serverless.yml

provider:
  name: aws
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query # Allow Parameter Store to be read
      Resource:
        - arn:aws:dynamodb:${env:AWS_REGION}:${env:AWS_ACCOUNT_ID}:table/kloud-config-some-service*
const { makeParameterStore } = require('@sp-tools/kloud-parameter');
const { STAGE } = process.env;

const parameterStore = makeParameterStore({
  configPath: `/${SERVICE_STAGE}/foo-service/config`,
  secretPath: `/${SERVICE_STAGE}/foo-service/secret`,
  provider: {
    tableName: `kloud-config-some-service-${SERVICE_STAGE}`
  }
});

return Promise.all([parameterStore.getConfigs(['THE_CONFIG_1', 'THE_CONFIG_2']), parameterStore.getSecrets(['THE_SECRET_1'])])
  .then(([configs, secrets]) => ({ ...configs, ...secrets }))
  .then(console.log);

/* console.log output
{
  THE_CONFIG_1: 'the config 1',
  THE_CONFIG_2: 'the config 2',
  THE_SECRET_1: 'the secret 1'
};
*/