UNPKG

@code-dome/cdk-parameter-store

Version:

CDK helper class that retrieves and stores values from AWS SSM Parameter Store and AWS Secrets Manager

59 lines (47 loc) 1.41 kB
const { SecretValue } = require('@aws-cdk/core'); const { StringParameter } = require('@aws-cdk/aws-ssm'); class ParameterStore { constructor(scope) { this.resolvableParametersByKey = {}; this.resolvableParametersByName = {}; this.scope = scope; } exposeValue(value, name, key) { if (name) { this.resolvableParametersByName[name] = value; } if (key) { this.resolvableParametersByKey[key] = value; } return value; } loadStringWithName(name, key) { const value = StringParameter.valueFromLookup(this.scope, name); return this.exposeValue(value, name, key); } loadSecureStringWithName({ name }, key) { const value = SecretValue.secretsManager(name); return this.exposeValue(value, name, key); } loadStringsWithNames(parameterNames) { Object.keys(parameterNames) .forEach( (key) => this.loadStringWithName(parameterNames[key], key), ); return this.resolvableParametersByKey; } loadSecureStringsWithNames(secretNames) { Object.keys(secretNames) .forEach( (key) => this.loadSecureStringWithName(secretNames[key], key), ); return this.resolvableParametersByKey; } getResolvableByKey(key) { return this.resolvableParametersByKey[key]; } getResolvableByName(name) { return this.resolvableParametersByName[name]; } } module.exports = { ParameterStore };