Skip to content

gsalomao/ssm-parameters

Repository files navigation

ssm-parameters

Build Status Coverage License: MIT

Lightweight AWS Parameter Store wrapper written in Typescript, designed for easy-to-use in mind, and built-in cache.

Installation

npm install --save ssm-parameters

Usage

import { SSMParameters } from 'ssm-parameters';

// Create a SSMParameters with all parameters to load
const params = new SSMParameters({
  LogLevel: '/LogLevel',
  AppId: '/ApiId',
  ClientId: '/ClientId',
});

// Get parameter (it will load the parameters from the SSM if there's no cache)
const logLevel = await params.get('LogLevel');

// Get parameter (it will use the cache if it's still fresh)
const appId = await params.get('AppId');

// Get parameter (it can be forced to ignore the cache)
const clientId = await params.get('ClientId', { ignoreCache: true });

// Manually load the parameters (it will use the cache if it's still fresh)
await params.load();

// Manually load the parameters (it can be forced to ignore the cache)
await params.load({ ignoreCache: true });

// Get all parameters (it will load the parameters from the SSM if there's no cache)
const parameters = await params.getAll();

// Parameters can be accessed in 2 different ways
const param1 = parameters.LogLevel;
const param2 = parameters['AppId'];

// Get all parameters (it can be forced to ignore the cache)
const newParameters = await params.getAll({ ignoreCache: true });

Options

import { SSMParameters } from 'ssm-parameters';

// Create a SSMParameters passing options
const params = new SSMParameters(
  { LogLevel: '/LogLevel' },
  { withDecryption: true, maxAge: 7200 },
);

The available options are:

Usage with AWS Lambda

import { SSMParameters } from 'ssm-parameters';

const params = new SSMParameters({ Name: '/Name' });
params.load();

exports.handler = async function (event, context) {
  const name = await params.get('Name');
  return `Hello ${name}`;
};

IAM (SSM Parameter)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["ssm:GetParameters"],
      "Resource": "arn:aws:ssm:<REGION>:<ACCOUNT_ID>:parameter/<PARAMETER_NAME>"
    }
  ]
}

Autocompletion

Licenses

This project is released under MIT License.