Открыть сервис

AWS Lambda

AWS Lambda — это сервис бессерверных вычислений, предоставляемый компанией Amazon Web Services (AWS), который позволяет выполнять код в ответ на события без необходимости управления серверной инфраструктурой. Пользователи платят только за фактически использованные вычислительные ресурсы и время выполнения кода, а не за предварительно выделенные или простаивающие мощности. AWS Lambda относится к категории «Функция как услуга» (FaaS) и является одним из ключевых компонентов облачной платформы AWS, запущенным в 2014 году.

История

Разработка AWS Lambda началась в 2012 году как внутренняя инициатива Amazon по созданию сервиса, позволяющего автоматически масштабировать выполнение кода в облачной среде без участия администратора. Официальный запуск состоялся 13 ноября 2014 года на конференции re:Invent. Первоначально сервис поддерживал только языки Node.js и Java, а также ограниченный набор триггеров (Amazon S3, Amazon DynamoDB, Amazon API Gateway и некоторые другие).

В 2015 году была добавлена поддержка Python, а в 2016 году — C# и Go. В 2018 году AWS Lambda получила поддержку Ruby, а в 2020 году — Java 11 и Python 3.8. В 2021 году появилась поддержка .NET 6 и Java 17. В 2023 году AWS анонсировала поддержку Go 1.20 и Python 3.11.

Значительным этапом развития стало введение в 2018 году функций работы с контейнерами (Lambda Container Image), позволяющих упаковывать код и его зависимости в образы Docker, соответствующие спецификации Open Container Initiative (OCI). В 2020 году был запущен сервис Lambda Extensions для интеграции с инструментами мониторинга и безопасности.

Архитектура и принцип работы

Инфраструктура

AWS Lambda работает на общей инфраструктуре AWS, которая автоматически управляет масштабированием, балансировкой нагрузки и обеспечением отказоустойчивости. Каждая функция выполняется в изолированной среде, называемой «контейнером выполнения» (execution environment). Этот контейнер создаётся при первом вызове функции (холодный старт) и может быть переиспользован для последующих вызовов (тёплый старт), если они происходят в течение короткого промежутка времени (обычно 5–15 минут).

Модель выполнения

Функция AWS Lambda активируется в ответ на событие (event). Событием может быть:

При получении события AWS Lambda создаёт новый экземпляр функции или использует уже существующий, передаёт ему событие в формате JSON и запускает код. После завершения выполнения функция возвращает результат (если применимо) и освобождает ресурсы.

Холодный и тёплый старт

Холодный старт — это задержка, возникающая при первом вызове функции или после длительного периода бездействия, когда AWS Lambda вынуждена создать новый контейнер выполнения. Время холодного старта зависит от:

Тёплый старт происходит, когда контейнер выполнения уже существует и может быть переиспользован. В этом случае задержка минимальна (обычно менее 10 миллисекунд).

Ограничения

AWS Lambda имеет ряд технических ограничений:

Классификация

По способу развёртывания

  1. Код в среде выполнения (runtime)пользователь загружает код на одном из поддерживаемых языков (Node.js, Python, Java, Go, Ruby, .NET, C#) и указывает среду выполнения (runtime). AWS Lambda автоматически предоставляет необходимую среду.
  2. Контейнерные образы — пользователь упаковывает код и зависимости в образ Docker, соответствующий спецификации OCI, и загружает его в Amazon Elastic Container Registry (ECR). AWS Lambda запускает этот образ как функцию.

По типу вызова

  1. Синхронный вызов — вызывающий сервис (например, Amazon API Gateway) ожидает завершения функции и получения результата. Используется для обработки HTTP-запросов в реальном времени.
  2. Асинхронный вызов — вызывающий сервис (например, Amazon S3) отправляет событие в очередь, а функция выполняется в фоновом режиме. Результат не возвращается вызывающему.
  3. Вызов по потоку (stream-based) — функция обрабатывает записи из потоков данных (Amazon Kinesis, Amazon DynamoDB Streams) с гарантией обработки каждой записи.

Применение

Веб-приложения и API

AWS Lambda часто используется в сочетании с Amazon API Gateway для создания бессерверных API. Функция обрабатывает HTTP-запросы, выполняет бизнес-логику (например, проверку данных, обращение к базе данных) и возвращает ответ. Такой подход позволяет создавать масштабируемые веб-приложения без управления серверами.

Обработка данных

Сервис применяется для обработки данных в реальном времени или по расписанию:

Автоматизация инфраструктуры

AWS Lambda используется для автоматизации задач управления облачной инфраструктурой:

Бэкенд для мобильных и IoT-приложений

Функции Lambda могут обрабатывать запросы от мобильных приложений и устройств Интернета вещей (IoT), выполняя аутентификацию, обработку данных и взаимодействие с другими сервисами AWS.

Преимущества и недостатки

Преимущества

Недостатки

Альтернативы

Основными конкурентами AWS Lambda на рынке бессерверных вычислений являются:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →