Как избежать ограничений по размеру при развертывании с помощью AWS SAM

#amazon-web-services #aws-lambda #aws-cli #aws-sam #aws-sam-cli

#amazon-web-services #aws-lambda #aws-cli #aws-sam #aws-sam-cli

Вопрос:

Я использую Lambda с NodeJS. Проблема в том, что из-за node_modules зависимостей я довольно скоро:

  • Достигните максимального размера лямбда-кода (3 МБ), который все еще можно редактировать в онлайн-редакторе кода (на странице лямбда-кода консоли AWS).
  • Достичь максимального размера, который я могу развернуть с sam deploy помощью команды.

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

Как я могу избежать этих ограничений? Зависимости библиотеки, вероятно, со временем будут только расти. Я попытался поместить все зависимости npm в отдельный слой, но это не помогло, так как мне все еще нужно загружать функции и слои вместе из командной строки, и я думаю, что они оба учитываются вместе в обоих пределах.

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

1. Ограничение на размер пакета развертывания SAM не составляет 5 МБ. Это максимальная длина строки URL.

2. @jarmod спасибо. Я убрал это.

3. Вы не должны использовать консоль Lambda для какого-либо значительного проекта imo. Ограничения на размер лямбда-пакета являются жесткими ограничениями. Они отличаются (меньше) для ZIP-файлов, и ваш фактический лимит развертывания также будет включать любые слои. Если служба Lambda не повышает эти ограничения, вам придется найти способы уменьшить общий размер развертывания. Очевидно, что узел здесь является проблемой, потому что половина интернета загружается в node_modules. Можете ли вы определить неиспользуемые пакеты или большие пакеты, используемые минимально?

4. Согласитесь с @jarmod, что вы не должны делать ничего значимого в консольном редакторе. Если вы хотите использовать удаленный редактор, вы можете попробовать Cloud9 (который в конечном итоге используется в консоли Lambda). В качестве альтернативы layer, Lambda поддерживает EFS, и вы можете хранить свои node_modules в EFS, монтировать том EFS в свой Lambda и использовать node_modules из mount… Некоторые подробности приведены в этой статье здесь .

5. Разрабатывайте свои лямбды локально, тестируйте их, упаковывайте в пакет развертывания (его размер ограничен 250 МБ) и развертывайте с помощью sam. docs.aws.amazon.com/serverless-application-model/latest /…