@argodigital/qq-shared
Version:
Shared code for QQ projects
49 lines (48 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var aws_sdk_1 = require("aws-sdk");
var js_yaml_1 = require("js-yaml");
var fs_1 = require("fs");
var logger_1 = require("../logger");
var ssm = new aws_sdk_1.SSM({
apiVersion: '2014-11-06',
region: process.env.REGION ? process.env.REGION : 'us-east-1',
/*In case SSM_ENDPOINT is an empty string we want to pass undefined so that SSM ignores it*/
endpoint: process.env.SSM_ENDPOINT || undefined
});
function getSecureParameter(parameter) {
var stage = process.env.STAGE;
var environment = stage && stage.toUpperCase() === 'PROD' ? 'prod' : 'non-prod';
logger_1.log.trace("Getting " + parameter + " for the " + environment + " environment");
return ssm
.getParameter({
Name: getParameter('SHARED_SERVICE_SSM_PATH') + "/" + environment + "/" + parameter,
WithDecryption: true
})
.promise()
.then(function (res) { return res.Parameter.Value; });
}
exports.getSecureParameter = getSecureParameter;
function getParameter(key) {
logger_1.log.trace("Getting the " + key + " parameter");
logger_1.log.trace("Looking for parameter in environment variable");
var parameter = process.env[key];
if (!parameter) {
logger_1.log.trace("Looking for parameter in local configurations file");
parameter = getParameterFromLocalFile(key, 'infrastructure/configurations.yml');
}
if (!parameter) {
logger_1.log.trace("Looking for parameter in local credentials file");
parameter = getParameterFromLocalFile(key, 'local/credentials.local.yml');
}
logger_1.log.trace((parameter ? 'Found' : "Didn't find") + " a value for the " + key + " parameter: " + parameter);
return parameter;
}
exports.getParameter = getParameter;
function getParameterFromLocalFile(key, directory) {
key = key.replace(/[_-]/g, '');
var localFile = js_yaml_1.safeLoad(fs_1.readFileSync(directory, 'utf-8'));
var matching = Object.keys(localFile).find(function (k) { return k.toUpperCase() === key.toUpperCase(); });
return matching ? localFile[matching] : '';
}
exports.getParameterFromLocalFile = getParameterFromLocalFile;