Почему функции без сервера (например, AWS Lambda) имеют ограничение размера zip-файла? - PullRequest
0 голосов
/ 11 декабря 2019

Мне интересно, почему у бессерверных функций такой маленький размер ограничен при развертывании?

Например, лямбда-архивированная функция AWS с зависимостями не может превышать 50 МБ. Почему такой низкий лимит?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 11 декабря 2019

Идея концепции без сервера и Lambda состоит в том, чтобы иметь «маленькие» функции (т.е. с не слишком большим количеством кода), которые несут единственную ответственность. Если размер вашего упакованного кода превышает 50 МБ, либо проблема связана с вашей упаковкой, либо у вас слишком много кода в вашей функции, и вам следует пересмотреть свой дизайн (возможно, задачу, которую вы хотите выполнить внутрифункция настолько велика, что лямбда не подходит для этого?).

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

2 голосов
/ 11 декабря 2019

Как я понимаю.

Как только вы отправите первый запрос в лямбду (или холодный запуск), AWS загрузит и разархивирует, а затем подготовит env для запуска функции.

Если функция была большой, ее выполнение может занять много времени. время вытащить и расстегнуть молнию, выполнить.

1 голос
/ 11 декабря 2019

Почему вам нужно отправить zam более 50 МБ на лямбду, вы можете настроить свой дизайн и использовать его?

Итак, 50 МБ лямбда + 250 МБ слой = 300 МБ

AES Layers -«Слои позволяют запускать функции Lambda с пользовательским кодом времени выполнения. Одним из наиболее интересных преимуществ, которые слои принесли в Lambda, была возможность запуска функций Lambda на любом языке программирования».

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

Примечание. Сохраните файл в корзине S3 и загрузите его, тогда размер пакета может быть больше 50 МБ, если вместо этого загружен через S3загрузки напрямую.

ОБНОВЛЕНИЕ: - Почему? , ограничение

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

Следующие возможные причины ограничения:

1) Когда вы вызываете функцию labda, тогда она начнет инициализацию среды и загрузку вашего кода и выполнится, если размер файла вашей загрузки будет большим, тогда этот холодный запуск займет много времени.

2) Параллелизм:

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

Однако доступный для функции Lambda ЦП распределяется между всеми потокамии поток не получит больше ЦП в функции Lambda, выполняя работу параллельно, поэтому поток начинает голодать и очень долго спать, если вы запускаете лямбда с одновременным запросом, тогда lambda запустит новый контейнер для поддержки вашего запроса и снова начнет добавлять файл большого размераздесь латанция.

...