Как развернуть JavaScript и Node.js приложения в AWS Lambda

Автор: | 10.08.2026

Функции как услуга (Functions-as-a-Service, FaaS), такие как Amazon Web Services Lambda и Twilio Functions, могут быть недорогими средами выполнения, в которых вы платите только за ресурсы, используемые для обработки конкретного запроса, обычно измеряемые в секундах или миллисекундах.

Сегодня мы рассмотрим развертывание JavaScript Node.js приложения в AWS Lambda. Наше приложение будет хранить список наших лучших друзей, которых мы хотели бы пригласить на день рождения. В этом посте мы:

— Настроим проект npm и создадим приложение JavaScript «hello world».

— Рефакторим приложение для сбора и хранения имен друзей в памяти.

— Настроим конфигурацию serverless framework и развернем приложение в среде Lambda.

Для выполнения задач в этом посте нам понадобятся:

— Аккаунт AWS

— Установленные Node.js и npm

— Доступ к менеджеру пакетов (для целей этого поста я использую Linux и apt-get)

Давайте начнем с простого приложения «hello world». Сначала нам нужно инициализировать проект npm и установить общие библиотеки:

Теперь создадим наше приложение со страницей «hello world»:

Внутри server.js мы будем:

— Инициализировать наше express-приложение

— Определить URL и порт нашего приложения

— Добавить простое сообщение «hello world» на главную страницу

— Запустить express

Для этого вставьте этот код в `server.js`

:

Нам нужно создать скрипт запуска в файле конфигурации npm – `package.json`

:

Теперь мы можем запустить наше приложение, введя в командной строке:

Вывод этой команды должен быть:

После перехода по адресу http://localhost:8000 в браузере вы должны увидеть ваше сообщение «hello world!»:

Найдите весь код до этого момента в этом репозитории GitHub, который вы можете клонировать:

###

Создание функции списка друзей

Теперь мы собираемся добавить базовую функциональность, чтобы наш пользователь мог указать имя друга и нажать кнопку «добавить», чтобы добавить этого человека в список друзей.

Давайте добавим зависимости, которые мы будем использовать в нашем приложении:

`body-parser`

– промежуточное ПО для парсинга запросов`ejs`

– встроенные шаблоны JavaScript (для управления потоком нашего ответа, аналогично php – смешивание фрагментов кода с html)

Выполните эту команду для их установки:

Добавьте класс `InMemoryFriends`

в server.js, чтобы хранить список людей в памяти:

Теперь давайте создадим два представления для нашего приложения:

Добавьте этот код в файл `index.html`

:

Добавьте этот код в файл `person-added.html`

:

Теперь мы собираемся добавить механизм рендеринга, установить механизм представлений, указать каталог, в котором мы храним наши представления, и настроить наши новые маршруты. Добавьте следующие строки в `server.js`

в любом месте после объявления переменной `app`

:

Если вы хотите перейти к этому конкретному шагу, выполните следующие команды:

Подготовьте точку входа нашей lambda-функции, `lambda.js`

:

Нам также нужно отредактировать наш файл `server.js`

. Замените эти строки:

На:

Но подождите, разве эти строки не необходимы для запуска нашего приложения?! Да, это так.

Чтобы наше приложение работало локально, мы можем поместить их в файл `local.js`

:

И отредактируйте скрипт запуска в package.json:

После этого вам нужно настроить aws cli:

Вас попросят предоставить следующие значения:

— AWS Access Key ID

— AWS Secret Access Key

— Имя региона по умолчанию

— Формат вывода по умолчанию

Первые два наиболее важны, вы можете найти их в разделе «My Security Credentials» после входа в ваш аккаунт AWS:

Третий параметр — это ваш регион Amazon по умолчанию, вы можете оставить его по умолчанию на данный момент, так как мы собираемся определить регион в конфигурации Serverless. Четвертый — это формат, в котором вы хотите получать вывод от выполнения CLI, и он не важен в нашем случае, поэтому вы можете оставить его пустым.

Когда настройка AWS CLI завершена, настройте конфигурацию serverless. Поместите следующие строки в файл `serverless.yml`

:

И разверните нашу функцию:

Если вы все сделали правильно, вы должны увидеть вывод, похожий на:

После перехода по ссылке из вывода команды serverless (в моем случае: https://1v0xvsd7pc.execute-api.eu-central-1.amazonaws.com/production), вы должны увидеть ваше приложение, развернутое в AWS Lambda.

Но после попытки добавить друга в мой список я получаю ошибку `403 ({«message»:»Forbidden»})`

!

Вы получаете это, потому что точка входа в ваше приложение имеет префикс `/production`

. Когда вы добавляете нового друга в список, Node.js приложение пытается достичь URL https://1v0xvsd7pc.execute-api.eu-central-1.amazonaws.com/submit (а не `/production/submit`

).

У вас есть два способа решить эту проблему:

Вы можете изменить атрибут «action» в

`index.html`

представлении на:

Вы можете использовать пользовательский домен:

Теперь мы полностью настроили наше Node.js приложение в Lambda!

За несколько простых шагов мы создали Node.js приложение и развернули его на платформе function-as-a-service AWS Lambda.

Живое демо этого приложения можно найти здесь: my-serverless-app.maciejtreder.com

А репозиторий здесь: https://github.com/maciejtreder/myServerlessApp

Дайте мне знать, что вы создадите на базе этого приложения. Мои контактные данные:

contact@maciejtreder.com

https://www.maciejtreder.com

@maciejtreder (GitHub, Twitter, linkedIn)