
CLI-фреймворк для развертывания и управления бессерверными приложениями на AWS Lambda с YAML-инфраструктурой, локальной разработкой и поддержкой сред выполнения на нескольких языках.
The Serverless Framework — упрощает использование AWS Lambda и других управляемых облачных сервисов для создания приложений, которые автоматически масштабируются, ничего не стоят в простое и отличаются радикально низкими затратами на обслуживание.
Serverless Framework — это инструмент командной строки с понятным синтаксисом YAML для развертывания как вашего кода, так и облачной инфраструктуры, необходимой для множества сценариев использования бессерверных приложений, таких как API, интерфейсы, конвейеры данных и запланированные задачи. Это мультиязычный фреймворк, поддерживающий Node.js, TypeScript, Python, Go, Java и другие языки. Он также полностью расширяем благодаря более чем 1000 плагинов, которые добавляют в Framework новые сценарии использования и рабочие процессы.
Активно поддерживается компанией Serverless Inc.
Июль 2026 — V.4 продолжает получать значительные обновления. Ознакомьтесь с ними ниже. В недавних релизах добавлены Sandboxes (изолированные эфемерные вычисления на AWS Lambda), нативная поддержка Amazon Bedrock AgentCore, Managed Instances, Durable Functions, а также встроенные AWS Login и SSO. Как всегда, мы рады бессерверному будущему как никогда.
Вот список всего нового в V.4 на данный момент:
serverless.yml через свойство ai и управляйте ими с помощью команд serverless agent. Подробнее здесь.serverless login aws и serverless login aws sso.serverless diff. Подробнее здесь.serverless reconcile. .Мы стараемся избегать критических изменений для провайдера "aws". Однако есть несколько важных изменений, о которых стоит знать:
Если вы обнаружите дополнительные критические изменения, пожалуйста, создайте issue. Чтобы узнать больше об отличиях и возможных критических изменениях, обратитесь к нашей документации по переходу на Serverless Framework V4.
Обратите внимание: структура и лицензирование репозитория V.4 отличаются от npm-модуля V.4. npm-модуль содержит проприетарное лицензированное ПО, поскольку V.4 переходит в формат обычного SaaS-продукта, как было объявлено ранее. Исходный код Serverless Framework и многое другое останутся под лицензией MIT, а репозиторий структурирован так, чтобы четко различать проприетарные и открытые компоненты — код под лицензией MIT имеет собственный файл LICENSE в packages/serverless, а корневой LICENSE репозитория покрывает проприетарные компоненты.
Вот как установить Serverless Framework, настроить проект и развернуть его в Amazon Web Services на бессерверной инфраструктуре, такой как AWS Lambda, AWS DynamoDB, AWS S3 и другие.
Сначала у вас должна быть установлена среда выполнения Node.js версии 18.17.0 или выше, затем вы можете установить Serverless Framework через NPM.
Откройте свой CLI и выполните приведенную ниже команду, чтобы установить Serverless Framework глобально.```text npm i serverless -g
Запустите `serverless`, чтобы проверить работоспособность установки и посмотреть текущую версию.
<br/>
## Обновление Serverless Framework
Начиная с версии 4, Serverless Framework автоматически обновляется и проверяет наличие обновлений каждые 24 часа.
Вы можете принудительно запустить обновление, выполнив следующую команду:```text
serverless update
Или вы можете задать эту переменную окружения:```text SERVERLESS_FRAMEWORK_FORCE_UPDATE=true
<br/>
## Команда `serverless`
Платформа Serverless Framework поставляется с командой `serverless`, которая проведёт вас через создание и развёртывание проекта на AWS. Она помогает загрузить шаблон, настроить учётные данные AWS, настроить панель управления Serverless Framework и многое другое, объясняя каждую концепцию по ходу дела.
Это руководство также проведёт вас через начало работы с Serverless Framework, но обратите внимание: простой ввод команды `serverless` может оказаться лучшим опытом.```text
serverless
Основной концепцией проекта в Serverless Framework является «Service» (сервис), и он объявляется в файле serverless.yml, который содержит упрощённый синтаксис для развёртывания облачной инфраструктуры, такой как функции AWS Lambda, инфраструктура, запускающая эти функции по событиям, а также дополнительная инфраструктура, которая может понадобиться вашим функциям AWS Lambda для различных сценариев использования (например, таблицы базы данных AWS DynamoDB, корзины хранилища AWS S3, шлюзы AWS API Gateway для приёма HTTP-запросов и их передачи в AWS Lambda).
Сервис может быть целым приложением, логикой для конкретного домена (например, «blog», «users», «products») или микросервисом, решающим одну задачу. Вы сами решаете, как организовать свой проект. В целом мы рекомендуем начинать с монолитного подхода ко всему, чтобы снизить сложность, пока разбиение логики не станет абсолютно необходимым.
Чтобы создать и полностью настроить сервис Serverless Framework, используйте команду serverless, которая предлагает интерактивный процесс настройки.```text
serverless
Это покажет вам несколько Templates. Выберите тот, который подходит под нужный вам язык и вариант использования.```text
Serverless ϟ Framework
Welcome to Serverless Framework V.4
Create a new project by selecting a Template to generate scaffolding for a specific use-case.
? Select A Template: …
❯ AWS / Node.js / HTTP API
AWS / Node.js / Express API
AWS / Node.js / Express API with DynamoDB
AWS / Node.js / Scheduled Task
AWS / Node.js / Simple Function
AWS / Python / HTTP API
AWS / Python / Flask API
AWS / Python / Flask API with DynamoDB
AWS / Python / Scheduled Task
AWS / Python / Simple Function
(Scroll for more)
После выбора Service Template его файлы будут загружены, и у вас будет возможность дать имя вашему сервису.```text ? Name Your Service: ›
Пожалуйста, используйте только строчные буквы, цифры и дефисы. Кроме того, старайтесь делать имена Service короткими, так как они добавляются в имя каждого облачного ресурса, который создаёт Serverless Framework, а у некоторых облачных ресурсов есть ограничения на длину имени.
Узнайте больше об Services и других понятиях в [документации по Core Concepts](https://www.serverless.com/framework/docs/providers/aws/guide/intro).
<br/>
## Вход в систему
Начиная с Serverless Framework V.4, если вы используете команду `serverless` для настройки Service, в итоге вам будет предложено войти в систему.
Если вам нужно войти вне этого процесса, выполните `serverless login`.
Вход перенаправит вас в [Dashboard Serverless Framework](https://app.serverless.com) в вашем браузере. После регистрации или входа вернитесь в CLI, и вы будете авторизованы.
Обратите внимание: вы можете начать работу с CLI и Dashboard Serverless Framework бесплатно, и CLI всегда будет бесплатным для небольших организаций и инди-разработчиков. Дополнительную информацию о ценах можно найти на нашей [странице с ценами](https://serverless.com/pricing).
<br/>
## Создание приложения
Концепция "App" — это родительский контейнер для одного или нескольких "Services", который можно дополнительно задать через свойство `app` в вашем `serverless.yml`. Установка `app` также включает функции Dashboard Serverless Framework для этого Service, такие как отслеживание ваших Services и их развёртываний в Dashboard Serverless Framework, обмен выводами (outputs) между ними, обмен секретами между ними, а также включение метрик, трассировок и журналов (logs).
Если вы используете команду начальной настройки `serverless`, она поможет вам создать `app` и добавить его в ваш Service. Вы также можете использовать команду `serverless` для создания App для существующего Service или создать App в Dashboard.```text
❯ Create A New App
ecommerce
blog
acmeinc
Skip Adding An App
Приложение также можно указать вручную в serverless.yml через свойство app:```yaml
service: my-service
app: my-app
Если вы не хотите использовать функции панели Serverless Framework Dashboard, просто не добавляйте свойство `app`. Приложения не обязательны.
<br/>
## Настройка учётных данных AWS
Чтобы развернуть облачную инфраструктуру в AWS, вы должны предоставить Serverless Framework доступ к вашим учётным данным AWS.
Запуск команды `serverless` из Serverless Framework в новом или существующем сервисе поможет определить, правильно ли настроены учётные данные AWS или истекли ли они, или поможет настроить их с нуля.```text
No valid AWS Credentials were found in your environment variables or on your machine. Serverless Framework needs these to access your AWS account and deploy resources to it. Choose an option below to set up AWS Credentials.
❯ Create AWS IAM Role (Easy & Recommended)
Save AWS Credentials in a Local Profile
Skip & Set Later (AWS SSO, ENV Vars)
Мы рекомендуем создать роль AWS IAM, которая хранится в панели управления Serverless Framework. В ближайшем будущем мы будем поддерживать множество учётных данных провайдеров, и панель управления — отличное место для их централизованного хранения в масштабах вашей команды: это поможет вам сохранять порядок и безопасно устранит необходимость хранить учётные данные на машинах ваших коллег.
Если вы используете AWS SSO, вы можете выполнить serverless login aws sso, чтобы войти через браузер, или просто вставить свои временные учётные данные SSO в терминале в качестве переменных окружения.
Чтобы узнать больше о настройке учётных данных AWS, прочитайте это руководство.
После того как вы выполнили команду serverless для настройки всего, пора развернуть ваш сервис в AWS.
Убедитесь, что ваша терминальная сессия находится в каталоге, содержащем файл serverless.yml. Если вы только что создали сервис, не забудьте выполнить cd в этот каталог.```text
cd [your-new-service-name]
Развертывание создаст/обновит облачную инфраструктуру и код в AWS одновременно.
Запустите команду `deploy`:```text
serverless deploy
Более подробную информацию о развертывании можно найти здесь.
Многие разработчики Serverless Framework и serverless-разработчики, как правило, предпочитают разрабатывать в облаке, поскольку это соответствует реальности (т.е. вашей производственной среде), а эмуляция Lambda и других инфраструктурных зависимостей локально может быть сложной.
В Serverless Framework V.4 мы создали гибридный подход к разработке, который помогает разработчикам быстро разрабатывать с точностью реального облачного окружения. Это новая команда dev:```text
serverless dev
Когда вы запускаете эту команду, происходит следующее...
Будет выполнено развёртывание AWS CloudFormation, которое немного изменит все AWS Lambda-функции в вашем сервисе, добавив в них лёгкую обёртку (wrapper).
После завершения этого развёртывания AWS CloudFormation ваши работающие AWS Lambda-функции в сервисе по-прежнему смогут принимать события и вызываться в AWS.
Однако события будут безопасно и мгновенно проксироваться на вашу машину, и выполняться будет код на вашей машине, а не код внутри ваших работающих AWS Lambda-функций.
Это позволяет вам вносить изменения в код без необходимости развёртывать или воссоздавать каждый аспект вашей архитектуры локально, что обеспечивает быструю разработку.
Логи из вашего локального кода также будут отображаться в вашем терминале в сессии `dev`.
Когда ваш код завершит выполнение, ответ от вашего локального кода будет переслан обратно в ваши работающие AWS Lambda-функции, и они вернут ответ — так же, как это сделала бы обычная AWS Lambda-функция в облаке.
Обратите внимание: `dev` предназначен только для разработки или личных стадий/окружений и не должен запускаться в продакшене или на любой стадии, где обрабатывается большой объём событий.
Когда вы закончите работу с сессией `dev`, вы ОБЯЗАНЫ повторно выполнить развёртывание с помощью `serverless deploy`, чтобы отправить последние локальные изменения обратно в ваши работающие AWS Lambda-функции — иначе ваши AWS Lambda-функции выйдут из строя(!)
Более подробную информацию о режиме dev можно найти [здесь](https://www.serverless.com/framework/docs/providers/aws/cli-reference/dev).
<br/>
## Вызов
Чтобы вызвать вашу AWS Lambda-функцию в облаке, вы можете найти URL-адреса для ваших функций с API-эндпоинтами в выводе `serverless deploy` или получить их через `serverless info`. Если у ваших функций нет API-эндпоинтов, вы можете использовать команду `invoke`, например:```bash
sls invoke -f hello
# Invoke and display logs:
serverless invoke -f hello --log
Более подробную информацию о команде invoke можно найти здесь.
Чтобы быстро развернуть изменения кода, вы можете пропустить команду serverless deploy, которая выполняется гораздо медленнее, поскольку запускает полное обновление AWS CloudFormation, и развернуть только изменения кода и конфигурации для конкретной функции AWS Lambda.
Чтобы развернуть изменения кода и конфигурации для отдельных функций AWS Lambda за считанные секунды, используйте команду deploy function, указав в параметре -f [function name in serverless.yml] функцию, которую вы хотите развернуть.```text
serverless deploy function -f my-api
Более подробную информацию о команде `deploy function` можно найти [здесь](https://www.serverless.com/framework/docs/providers/aws/cli-reference/deploy-function).
<br/>
## Потоковые логи
Вы можете использовать Serverless Framework для потоковой передачи логов из AWS Cloudwatch непосредственно в ваш терминал. Используйте команду `sls logs` в отдельном окне терминала:```bash
sls logs -f [Function name in serverless.yml] -t
Укажите конкретную функцию с помощью опции -f и включите слежение (т.е. потоковую передачу) с помощью опции -t.
Многие пользователи Serverless Framework предпочитают эмулировать всю свою serverless-архитектуру локально. Обратите внимание, что эмуляция AWS Lambda и других облачных сервисов никогда не бывает точной, а процесс может быть сложным, особенно по мере роста вашего проекта и команды. Начиная с V.4, мы настоятельно рекомендуем использовать новый режим dev с личными стадиями.
Если вы всё же решите разрабатывать локально, мы рекомендуем следующий порядок действий...
Используйте команду invoke local, чтобы вызвать свою функцию локально:```bash
sls invoke local -f my-api
Вы также можете передавать данные в этот локальный вызов различными способами. Вот один из них:```bash
sls invoke local --function functionName --data '{"a":"bar"}'
Более подробную информацию о команде invoke local можно найти здесь
У Serverless Framework также есть отличный плагин, позволяющий запускать сервер локально и эмулировать AWS API Gateway. Это плагин serverless-offline.
Более подробную информацию можно найти в документации serverless-offline.
Большое преимущество Serverless Framework заключается в его экосистеме плагинов.
Плагины расширяют или переопределяют Serverless Framework, добавляя новые сценарии использования или возможности, и таких плагинов сотни.
Обратите внимание, что некоторые ранее популярные плагины больше не нужны — их функциональность теперь встроена в сам фреймворк, включая Python requirements, custom domains, AppSync, Prune и API Gateway Service Proxy.
Некоторые из наиболее распространённых плагинов:
Вы можете добавить плагин в свой сервис с помощью команды serverless plugin install --name pluginName, которая устанавливает его через npm и регистрирует в вашем serverless.yml.
Serverless Framework Compose позволяет работать сразу с несколькими сервисами Serverless Framework и выполнять следующее...
Вот как может выглядеть структура проекта:```bash my-app/ service-a/ src/ ... serverless.yml service-b/ src/ ... serverless.yml
Для использования Serverless Framework Compose требуется файл `serverless-compose.yml`. В нём вы указываете, какие сервисы хотите развернуть. Вы также можете передавать данные от одного сервиса к другому, что также создаёт порядок развёртывания.```yaml
# serverless-compose.yml
services:
service-a:
path: service-a
service-b:
path: service-b
params:
queueUrl: ${service-a.queueUrl}
Выходные данные, которые должны быть унаследованы другим сервисом, обычно определяются как выходные данные AWS CloudFormation:```yaml
resources: Resources: MyQueue: Type: AWS::SQS::Queue # ... Outputs: queueUrl: Value: !Ref MyQueue
Значение будет передано в `service-b` [в качестве параметра](https://www.serverless.com/framework/docs/guides/parameters) с именем `queueUrl`. На параметры можно ссылаться в конфигурации Serverless Framework с помощью синтаксиса `${param:xxx}`:```yaml
# service-b/serverless.yml
provider:
...
environment:
# Here we inject the queue URL as a Lambda environment variable
SERVICE_A_QUEUE_URL: ${param:queueUrl}
More details on Serverless Framework Compose can be found here.
In Serverless Framework V.4, we've introduced the serverless support command, a standout feature that lets you generate issue reports, or directly connect with our support team. It automatically includes relevant context and omits sensitive details like secrets and account information, which you can check before submission. This streamlined process ensures your issues are quickly and securely addressed.
To use this feature, after an error or any command, run:```bash sls support
После каждой команды, независимо от того, успешна ли она, контекст сохраняется в текущем рабочем каталоге в папке `.serverless`.
Чтобы открыть новый тикет в службу поддержки, выполните команду `sls support` и выберите `Get priority support...`. При желании вы сможете просмотреть и отредактировать сгенерированный отчёт. Открытие тикетов поддержки доступно только пользователям, оформившим подписку.
Вы также можете создавать отчёты без отправки нового тикета в службу поддержки. Это полезно для обмена контекстом с другими, открытия Github issues или использования с ИИ-подсказкой, например ChatGPT. Для этого выполните команду `sls support` и выберите `Create a summary report...` или `Create a comprehensive report..`. Вы можете пропустить запрос, выполнив `sls support --summary` или `sls support --all`. Это особенно полезно для копирования отчёта в буфер обмена (например, `sls support --summary | pbcopy`).
<br/>
## Удаление вашего сервиса
Если вы хотите удалить сервис, выполните команду `remove`. Это удалит все ресурсы AWS, созданные вашим проектом, и гарантирует, что вы не понесёте непредвиденных расходов. Сервис также будет удалён из Serverless Dashboard.```bash
sls remove
More details on the remove command can be found here.
Here are some helpful resources for continuing with the Serverless Framework:
serverless.yml guideWe take security seriously. If you discover a security issue, please responsibly disclose it by contacting us at [email protected]. Please do not publicly disclose vulnerabilities until we have addressed them.
For more details, see our Security Policy.
.ts в ваших функциях AWS Lambda в serverless.yml, и они будут автоматически собираться при развертывании. ESBuild теперь включен в Framework, что делает это возможным. Подробнее здесь.serverless dev, чтобы события из вашей рабочей архитектуры направлялись в ваш локальный код, позволяя быстро вносить изменения без развертывания. Подробнее здесь.nodejs24.x), Python 3.14 (python3.14) и Java 25 (java25) на AWS Lambda.ap-southeast-6 в Новой Зеландии.stages и задайте конфигурацию default в качестве запасной.serverless была переписана, чтобы быть более полезной при настройке нового или существующего проекта.nodejs22.x).