AWS Serverless: принудительное параллельное выполнение lambda на основе запроса или параметров HTTP API

#amazon-web-services #aws-lambda #serverless

#amazon-web-services #aws-lambda #бессерверная

Вопрос:

Есть ли способ заставить AWS выполнить лямбда-запрос, поступающий от ресурса шлюза API, в определенной среде выполнения? Мы используем одну кодовую базу с различными моделями размером от 100 до 300 МБ, поэтому сами по себе они достаточно малы, чтобы поместиться в эфемерном хранилище, но слишком велики, чтобы хорошо работать вместе.

В настоящее время второй вызов с другой моделью будет использовать существующую (прогретую) лямбда-функцию и исчерпает хранилище.

Я надеюсь прикрепить к запросу что-то вроде параметра, который заставляет lambda создавать параллельные версии одной и той же функции для каждой из моделей, чтобы мы не превышали лимит в 512 МБ и оптимизировали время холодной загрузки, в идеале без дублирования функции и необходимости поддерживать функцию вв нескольких местах.

Я пытался исследовать пошаговые машины, но я не уверен, есть ли там опция для обусловленности на основе параметров. AWS предлагает использовать EFS для обхода ограничений эфемерного хранилища, но из того, что я могу найти, использование EFS будет намного медленнее, чем чтение из эфемерного каталога /tmp/.

Ответ №1:

Насколько мне известно: нет. Вы не можете управлять средами выполнения. Единственное, что вы можете сделать, это ограничить одновременное выполнение.

Таким образом, вы никогда не знаете, является ли это одной лямбдой, обслуживающей все ваши события, запускаемые из API Gateway, или несколькими, работающими параллельно. Вы также не можете контролировать, какая из сред выполнения обслуживает следующий запрос.

Если ваши проблемы связаны с ограничением каталога / temp для AWS Lambda, почему бы не попробовать EFS?

Комментарии:

1. Спасибо за быстрый ответ! Я беспокоюсь, что EFS замедлит работу, потому что скорость чтения намного медленнее, чем чтение из /tmp/ (согласно некоторым сравнительным данным)? Штраф за копирование при холодной загрузке в /tmp/ возникает только один раз, тогда как медленное чтение будет возникать при каждом выполнении функции.

2. @T.Altena Ок, нет EFS. Как насчет Elasticache?

3. Итак, после долгих поисков поддержки Amazon это оказывается так. В моем сценарии я выбрал использование бессерверного развертывания параллельных функций с идентичной кодовой базой, но разными веб-API, чтобы не превышать лимиты хранилища.

4. @T.Altena Спасибо за отзыв!