aws lambda
AWS Lambda — это облачный сервис бессерверных вычислений от Amazon Web Services, позволяющий запускать код в ответ на события без необходимости выделять, настраивать или управлять серверами. Разработчик загружает функцию — небольшой модуль кода — AWS запускает её по требованию, автоматически масштабирует и берёт оплату только за фактическое время выполнения.
Принцип работы AWS Lambda
Lambda-функция — это код с чётко определённой точкой входа (handler). При наступлении события AWS запускает изолированный контейнер, выполняет функцию и завершает его. При высокой нагрузке Lambda автоматически создаёт тысячи параллельных экземпляров. При отсутствии событий — не потребляет ресурсов.
Поддерживаемые языки: Node.js, Python, Java, Go, .NET, Ruby. Через custom runtime можно запускать любой язык. Максимальное время выполнения — 15 минут. Память — от 128 МБ до 10 ГБ. Ephemeral storage (/tmp) — до 10 ГБ.
Триггеры: что запускает Lambda
Lambda реагирует на события из десятков AWS-сервисов:
- API Gateway / Function URL — HTTP-запросы; Lambda как бэкенд API.
- S3 — загрузка файла в бакет запускает обработку: ресайз изображений, парсинг CSV, антивирусная проверка.
- DynamoDB Streams / Kinesis — обработка потоков изменений в реальном времени.
- SQS — потребление очереди сообщений; Lambda масштабируется по числу сообщений.
- SNS — уведомления и pub/sub.
- EventBridge — расписание (cron) и событийная шина.
- Cognito, CloudFront — обработка запросов аутентификации и на уровне CDN (Lambda@Edge).
Ценообразование Lambda
Оплата по двум измерениям: количество вызовов (первые 1 млн в месяц бесплатно, далее $0.20 за 1 млн) и время выполнения, измеряемое в GB-секундах (объём памяти × время). Бесплатный уровень — 400 000 GB-секунд в месяц навсегда. Для большинства небольших приложений Lambda оказывается дешевле постоянно работающего EC2-инстанса.
Cold start: главный недостаток
Cold start — задержка при первом вызове функции после периода бездействия: AWS инициализирует контейнер, загружает runtime и код. Для Node.js и Python — сотни миллисекунд. Для Java и .NET с большими зависимостями — секунды. Решения: Provisioned Concurrency (предварительно прогретые экземпляры, платно), SnapStart для Java (снапшот инициализированного состояния), минимизация зависимостей, использование языков с быстрым стартом.
Lambda Layers и реестр контейнеров
Lambda Layers — механизм для общего кода и зависимостей между функциями. Слой упаковывается один раз и подключается к нескольким функциям, уменьшая размер деплойного пакета. Размер функции + слоёв — до 250 МБ (несжатые).
Альтернативно функцию можно упаковать как Docker-образ (до 10 ГБ), что удобно для ML-моделей и функций с большими зависимостями.
Serverless-архитектура с Lambda
Lambda часто является ядром serverless-приложений. Типичная схема: API Gateway принимает HTTP-запросы → Lambda обрабатывает бизнес-логику → DynamoDB хранит данные → S3 хранит файлы → SES/SNS отправляет уведомления. Все компоненты масштабируются автоматически и оплачиваются по потреблению.
AWS SAM (Serverless Application Model) и фреймворк Serverless Framework упрощают описание такой архитектуры как код.
Ограничения и когда Lambda не подходит
- Задачи дольше 15 минут — для них используют AWS Fargate, ECS, EC2 или AWS Batch.
- Постоянные WebSocket-соединения — частично решается через API Gateway WebSocket API.
- Приложения с GPU для ML-инференса — SageMaker или EC2 с GPU.
- Legacy-приложения с состоянием или требующие специфичной ОС.
Частые вопросы
Что такое cold start в AWS Lambda?
Cold start — задержка при первом запуске Lambda-функции после периода бездействия. AWS инициализирует контейнер и загружает runtime. Для Node.js/Python — обычно 100–300 мс, для Java — до нескольких секунд. Provisioned Concurrency позволяет держать функции «прогретыми».
Сколько стоит AWS Lambda?
Первые 1 млн вызовов и 400 000 GB-секунд в месяц бесплатны навсегда. Далее: $0.20 за 1 млн вызовов и $0.0000166667 за GB-секунду. Для большинства небольших проектов стоимость крайне мала.
Как передать переменные окружения в Lambda?
Через раздел Environment variables в конфигурации функции (консоль, CLI, CloudFormation/Terraform). Внутри кода они доступны через стандартные механизмы: process.env в Node.js, os.environ в Python. Секреты лучше хранить в AWS Secrets Manager или SSM Parameter Store.
Другие термины в теме «DevOps и облака»
Не хватает деталей?
Напишите, что уточнить по теме «aws lambda» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).