После исследования сети и изучения этих замечательных ответов я подумал о том, чтобы собрать всю эту информацию и собрать что-то более подробное, то, что я неправильно понял из описанных статей и статей, которые я нашел.
Как создать безсерверное приложение Nest JS с помощью функции Lambda AWS provider
Давайте посмотрим на эту статью репозитория: https://github.com/rdlabo/serverless-nestjs
Спасибо ему, он в основном упаковал готовый к go Nest JS проект, настроенный с Serverless framework .
Я недостаточно опытен, чтобы много говорить о бессерверной инфраструктуре, но я могу объяснить, как она работает в нашем случае.
Прежде всего, есть serverless.yml
, как объяснено статья о github-репозитории, в основном здесь вы описываете имя вашей лямбда-функции, что исключать из пакета и триггерные http-события.
functions:
index:
handler: dist/index.handler
events:
- http:
cors: true
path: '/'
method: any
- http:
cors: true
path: '{proxy+}'
method: any
Если мы посмотрим на этот файл yml, вы можете увидеть что у нас есть 2 HTTP-события, одно для root пути и одно для пути прокси.
Вопрос, который я задал себе, читая его, так что же делает эта часть события?
Эта часть yml в основном создает ваши конечные точки в службе API Gateway AWS (если вы используете AWS в качестве поставщика). API Gateway - это служба, созданная AWS, которая позволяет отображать запросы в другие службы AWS, такие как лямбда-функция.
Когда вы запускаете команду sls deploy
после ввода учетных данных с помощью sls config credentials
безсерверный фреймворк создаст ИЛИ изменит, если существует новая лямбда-функция на основе настроенного вами конфига, и настроит конечные точки шлюза API, связанные с этой лямбда.
После развертывания вы получите ссылку, которая активирует эту лямбду , В примере, который я использую, в основном используется безсерверное решение express, созданное кем-то, в основном прокси-код, который знает, как получить объект запроса к API-шлюзу, преобразовать его в express и активировать без запуска сервера.
Примечание: безсерверный использует CloudInformation для создания стека для загрузки и развертывания лямбда-функции, я думаю, что таким образом вы можете выгрузить более 250 МБ разархивированного, потому что мой проект в настоящее время разархивирован 450 МБ, я не уверен в этом, но когда Я попытался загрузить больший zip, моя лямбда начала переполняться, так как я сказал, что в ней отсутствуют некоторые модули, я думаю, из-за размера.
Или, может быть, серверный сервер действительно оптимизирует модули, так что загруженный пакет намного меньше, чем что вы ожидаете Если кто-то знает об этом, +1!