Как определить внешнее состояние (переменной) с помощью AWS Lambda? - PullRequest
0 голосов
/ 01 ноября 2019

Я хотел бы использовать AWS Lambda, однако мне нужна функция, которую я создаю, чтобы реагировать на ряд правил.

Эти правила могут изменяться со временем.

Единственный способ, которым я знаюКак определить внешнее состояние (переменной) с помощью лямбда-запрос к внешней базе данных.

Есть ли другой способ? Предоставляет ли AWS Lambda глобальную переменную, которую каждый вызов функции может прочитать перед выполнением?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы можете использовать переменные среды, см. Документы AWS: https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html

Однако они предназначены для статических переменных, которые вы не хотите хранить в своем коде (например, ключи API для внешних служб).

Если правила меняются со временем, а лямбда-функция не меняется, вам нужно сохранить правила где-то , а затем извлечь их из этого места. Вы можете использовать базу данных или S3 выбрать .

0 голосов
/ 01 ноября 2019

Когда вы впервые вызываете функцию Lambda, будет создан новый контейнер с соответствующими ресурсами, и код для функции будет загружен в контейнер. Это называется холодным стартом.

JavaScript, Python, Go и Ruby готовы примерно за 400 миллисекунд и почти всегда за 700 миллисекунд. Java немного медленнее.

Теперь, если ваш код выполнен и время выполнения прошло, и вы снова вызываете функцию, тогда Lambda может снова создать новый контейнер. Если вы хотите сохранить функцию «теплой», вам нужно будет пинговать вашу лямбда-функцию каждые 5–15 минут, используя событие CloudWatch, чтобы сохранить ее теплой.

Предоставляет ли AWS Lambda глобальную переменную

Да, вы можете использовать глобальную переменную внутри AWS Lambda, но помните два вышеупомянутых момента, которые я упомянул. Лямбда-функция получает данные из базы данных, выполняет итерацию по небольшому набору данных, добавляет их в список и использует их в своей функции до тех пор, пока ваша функция не станет горячей.

Убедитесь, что ваше правило не должно часто обновляться, иначе это может быть полный беспорядок.

Воспользуйтесь преимуществами многократного использования контекста выполнения для повышения производительноститвоя функция. Убедитесь, что любая внешняя конфигурация или зависимости, которые получает ваш код, хранятся и имеют локальные ссылки после первоначального выполнения. Ограничьте повторную инициализацию переменных / объектов при каждом вызове. Вместо этого используйте статическую инициализацию / конструктор, глобальные / статические переменные и синглтоны. Поддержание активности и повторное использование соединений (HTTP, базы данных и т. Д.), Которые были установлены во время предыдущего вызова

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