В Serverless Framework есть ли способ обновить переменные среды, заполненные переменными ssm, во время выполнения лямбда-выражения? - PullRequest
0 голосов
/ 10 июля 2020

Я использую ssm-переменные serverless.yml (AWS хранилище параметров) для установки лямбда-переменных среды. Их ищут и устанавливают во время бессерверного развертывания. Я бы хотел, чтобы переменные среды были актуальными во время выполнения лямбда-выражения, чтобы я мог изменять их в хранилище параметров, а не повторно развертывать. Есть ли способ добиться этого с помощью Serverless?

PS Я знаю, что могу добиться этого, просматривая их в своем лямбда-коде, вместо того, чтобы полагаться на Serverless для их установки. Я просто хотел бы знать, есть ли у Serverless такая возможность.

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Вызов клиента SSM из вашего кода:

const SSM = require('aws-sdk/clients/ssm')

const getParameter = async (paramName) => {
   const client = new SSM()
  
  try {
    const { Parameter } = await getSSMClient()
      .getParameter({ Name: paramName })
      .promise()

    return Parameter.Value ? JSON.parse(Parameter.Value) : null
  } catch (e) {
    console.error(e)
  }
}

Вы можете поместить это за пределы экспорта обработчика по умолчанию, который будет вызывать его только при запуске лямбда (что может быть меньше, чем при вызове, в зависимости от трафика c)

const foo = await getParameter('foo')
module.exports = (event, context) => {
 console.log(foo)
 ...
}

Но что касается повторного развертывания - он может быть очень быстрым. Я лично разделяю свои данные на несколько сервисов, и повторное развертывание лямбда - это отдельный процесс, чем установка DynamoDB, поэтому все идет быстро.

0 голосов
/ 11 июля 2020

Переменные среды предназначены для установки при развертывании, поскольку они относятся к среде Lambda. Если вам нужны значения, которые регулярно меняются, есть много других вариантов; DynamoDB является идеальным решением этой проблемы. Если все, что вам нужно, это хранилище ключевых значений (а это и есть переменные среды), DynamoDB идеально подходит. Это супербыстро и намного дешевле, чем SSM, который можно использовать для того же.

...