Состояние функции AWS Lambda (zappa)

Я думаю оптимизировать лямбда-сервер приложения flask, добавив внутренний кеш для относительно медленно меняющихся данных (например, выпадающие списки сайтов могут меняться несколько раз в год). Я использую zappa для развертывания в лямбда. Есть ли в этом смысл? Или он прошивает память каждый раз, когда обрабатывается запрос. Я знаю, что не могу полагаться на сохранение состояния aws, моя цель здесь немного оптимизировать производительность, не тратя целое состояние на какой-то экземпляр Redis, не говоря уже об ElastiCache.

ОБНОВЛЕНИЕ: Да, бессерверные среды развертывания, такие как zappa, повторно используют состояние, так почему бы и мне не делать этого. Ниже в блоге hackernoon более подробно обсуждается государственная переработка.

https://hackernoon.com/write-recursive-aws-lambda-functions-the-right-way-4a4b5ae633b6

Хотя функции Lambda эфемерны по своей природе, контейнеры по-прежнему используются повторно для оптимизации, что означает, что вы можете использовать состояния в памяти, которые сохраняются при вызовах.

Не уверен, что можно аннулировать такой кеш, переменные env, вероятно, являются локальными для экземпляра лямбда, http, sns, вероятно, сложно/дорого.


person Serge    schedule 16.01.2018    source источник


Ответы (1)


Да, это не сработает с Лямбдой.

Вы должны использовать какой-то сторонний кеш.


Если вам достаточно кэширования только ваших GET-запросов, вы можете использовать для этого CDN.

Лично я использую CloudFlare CDN, который кэширует все запросы GET в течение n минут. И вы получаете много запросов бесплатно. Вам просто нужно определить пользовательское Правило страницы для кэширования всего для определенного шаблона URL.

Правило страницы CloudFlare

Конечно, то же самое можно сделать с CloudFront (чтобы оставаться в экосистеме AWS) или, вероятно, с большинством других CDN.

person mislavcimpersak    schedule 16.01.2018
comment
любые ссылки или экспериментальные доказательства того, что кеш уровня python не будет работать? - person Serge; 16.01.2018
comment
Честно говоря, трафик моего проекта невелик, но если кто-то поделится изображением, полученным из Lambda, на каком-нибудь форуме с высокой посещаемостью или еще где-то, я уверен, что мой счет за Lambda не пройдет. крыша. - person mislavcimpersak; 16.01.2018
comment
Комментарий о кэшировании labmda не обоснован (без аргументов), но проголосован, потому что некоторые CDN действительно имеют приличный бесплатный уровень. - person Serge; 17.01.2018
comment
да, это не прямой ответ, я признаю. Но больше похоже на жизнеспособную альтернативу, когда у вас ограниченный бюджет. Единственное, что я должен иметь в качестве доказательства, — это мой проект, который в настоящее время находится в сети за 0 долларов в месяц с использованием описанной выше настройки Lambda/CDN. - person mislavcimpersak; 17.01.2018