UNPKG

sls-helper-plugin-janis

Version:

A Serverless Helper plugin to add custom helpers for Janis Commerce

45 lines (29 loc) 1.21 kB
'use strict'; 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;