Доступ к параметрам AWS SSM в NodeJS Lambas - PullRequest
0 голосов
/ 24 мая 2019

Я могу получить данные из хранилища параметров AWS SSM локально в NodeJS, но не могу, когда я перемещаю свой код в Lambdas.

Я искал и не нашел много примеров настройки Lambdas сNodeJS, которые не используют инфраструктуру "Serverless".

Я знаю, что упускаю что-то простое.Я просто еще не знаю, что.

Я дал моей IAM-политике lambda следующие разрешения:

"Effect": "Allow",
"Action": [
    "ssm:PutParameter",
    "ssm:GetParameter"
],
"Resource": [
    "arn:aws:ssm:region:account-id:parameter/Name/Of/Parameter"
]
AWS.config.update({region: 'my-region'})
const ssm = new AWS.SSM()
ssm.getParameter({
  Name: '/Name/Of/Parameter',
  WithDecryption: false
}, (err, data) => {
  if (err) {
    reject(err);
  }
  if (data.Parameter !== undefined) {
     resolve(data.Parameter.Value);
  }
  reject(new Error('No Parameter'));
});

Локальные данные определены.В моей лямбде я получаю сообщение об ошибке: "{TypeError: Невозможно прочитать свойство 'Параметр' с нулевым значением", означающее, что "данные" пусты как есть ошибка.

Любое понимание приветствуется.

1 Ответ

1 голос
/ 24 мая 2019

Попробуйте синтаксис обещания ниже - он работает для меня.Обратите внимание, что я также получаю несколько параметров, поэтому вызов также отличается.

"Action": [
    "ssm:GetParameters",
    "ssm:GetParameter"
],

Тогда ...

ssm.getParameters({
      Names: [`/path/${environmentStage}/more/path/${name}`],
      WithDecryption: true,
    }).promise()).then(data => data.Parameters.length ? data.Parameters[0].Value : Promise.reject(new Error(`SSM Parameter ${name} is not set.`)));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...