Может ли Lambda-контейнер размещать более одной функции одновременно? - PullRequest
0 голосов
/ 14 ноября 2018

Возможно ли развертывание нескольких определений лямбда-функций в одном и том же экземпляре контейнера?

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

Например, в типе проекта Serverless App для Visual Studio с расширениями AWS Toolkit возможно определить несколько функций в одном проекте, но развертываются ли они через CloudFormation в отдельных контейнерах или в одном контейнере, представляющем проект?

Ответы [ 4 ]

0 голосов
/ 18 декабря 2018

Я сделал это с помощью ExpressJS + NodeJS. Каждая функция - это отдельный маршрут ExpressJS. Однако до сих пор я не смог сделать это с помощью функции Spring Cloud.

0 голосов
/ 14 ноября 2018

Официального документа по этому вопросу нет, но я поделюсь тем, что я собрал за последние годы из Документов / Постов / Конференций:

Лямбда-функции - это "рамки" (или что-то в этом роде, простоСлово - самое близкое, что я могу придумать, и единственное, что я услышал от представителя AWS), помимо службы Контейнеров.Каждый раз, когда вы вызываете лямбда-функцию, запускается контейнер (он может быть существующим, отложенным - добавляет повышение производительности или полностью новым, вы никогда не узнаете, какой это.)

ВыМожно предположить, что контейнер instance (использующий экземпляр, как он используется в ECS, хост-машине) одинаков, имея в виду, что есть некоторые обходные пути для пула соединений с БД и тому подобное, но никто не гарантируетТЫ это.

0 голосов
/ 14 ноября 2018

CloudFormation развернет функции в той же учетной записи AWS.Это происходит на уровне учетной записи пользователя AWS.Это не запуск функций.

Лямбды управляются событиями и запускаются только при их срабатывании.Каждый экземпляр Lambda является автономным, насколько пользователь его воспринимает, и «запускается в своем собственном контейнере» при запуске.

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

0 голосов
/ 14 ноября 2018

Я думаю, что это может помочь выделить процесс:

  • Лямбда развертывание - это zip-файл кода и соответствующей конфигурации. В случае с типом проекта вашего приложения без сервера, когда у вас есть несколько лямбда-функций для проекта, вы создаете несколько развертываний.
  • Лямбда экземпляр - это работающая версия развертывания, размещенного внутри контейнера . В контейнере допускается только один лямбда-экземпляр, что является гарантией AWS. Это означает, что вы никогда не сможете получить доступ к коду / памяти / файлам вне текущего запущенного экземпляра (ни вашего, ни чьего-либо другого!)

В качестве оптимизации AWS действительно повторно использует экземпляров , замораживая и размораживая контейнер. Это потому, что дорого запускать новый контейнер, копировать развертывание и выполнять код инициализации развертывания (известный как «холодный старт»).

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