From 7f42d9f2aeee9e46ed9a8ac1b81dcfeafd5b0964 Mon Sep 17 00:00:00 2001 From: Rishit Kedia Date: Sat, 10 Mar 2018 00:59:47 +0400 Subject: [PATCH] Fix getParameters() limit of 10 parameters --- lib/providers/aws.js | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/providers/aws.js b/lib/providers/aws.js index 35de9ec..44c46ac 100644 --- a/lib/providers/aws.js +++ b/lib/providers/aws.js @@ -12,16 +12,30 @@ module.exports = function (options) { function getSecret (parameterNames) { const names = Array.isArray(parameterNames) ? parameterNames : [parameterNames] - const params = { - Names: names, - WithDecryption: true - } + + return new Promise((resolve) => { + let secretPromises = []; + + for (let index = 0; index < names.length; index += 10) { + const params = { + Names: names.slice(index, index + 10), + WithDecryption: true + } + + secretPromises.push(ssm.getParameters(params).promise()); + } - return ssm.getParameters(params).promise().then(data => { - return data.Parameters.reduce((obj, x) => { - obj[x.Name] = x.Value - return obj - }, {}) + let secrets = {}; + + Promise.all(secretPromises).then(results => { + for (const result of results) { + for (const parameter of result.Parameters) { + secrets[parameter.Name] = parameter.Value + } + } + + resolve(secrets) + }) }) }