sls-helper-plugin-janis
Version:
A Serverless Helper plugin to add custom helpers for Janis Commerce
45 lines (29 loc) • 1.21 kB
JavaScript
;
const { RAMClient, ListResourcesCommand } = require('@aws-sdk/client-ram');
const { SSMClient, GetParameterCommand } = require('@aws-sdk/client-ssm');
const { isLocal } = require('./is-local');
const ssmClient = new SSMClient();
const ramClient = new RAMClient();
const parametersCache = {};
const getParameter = async parameterNameOrArn => {
const { Parameter } = await ssmClient.send(new GetParameterCommand({
Name: parameterNameOrArn
}));
return JSON.parse(Parameter.Value);
};
module.exports.getSharedParameter = async parameterName => {
if(isLocal())
return {};
if(parametersCache[parameterName])
return parametersCache[parameterName];
const { resources } = await ramClient.send(new ListResourcesCommand({
resourceOwner: 'OTHER-ACCOUNTS',
resourceType: 'ssm:Parameter'
}));
const sharedParameter = resources.find(parameter => parameter.arn.endsWith(`:parameter/${parameterName.replace(/^\//, '')}`));
if(!sharedParameter)
throw new Error(`Could not find shared parameter ${parameterName}`);
parametersCache[parameterName] = await getParameter(sharedParameter.arn);
return parametersCache[parameterName];
};
module.exports.getLocalParameter = getParameter;