Гайды

Serverless: AWS Lambda на Python и Node.js

Handler и упаковка, concurrency и VPC, локальный запуск и идемпотентность событий.

~10 мин чтения

Serverless: AWS Lambda на Python и Node.js

AWS Lambda запускает функцию по событию (HTTP через API Gateway, SQS, S3, schedule). Платите за время выполнения + память, cold start — фактор для latency. Обзор VPC и EC2 — Основы AWS: EC2, S3, RDS и VPC; инфраструктура как код — Terraform: AWS и GCP.


1. Handler (Python)

python
def lambda_handler(event, context):
    return {"statusCode": 200, "body": '{"ok": true}'}

2. Упаковка

ZIP с зависимостями или container image Lambda (до 10 GB). Слои (Layers) для общих библиотек.

Лимит распакованного размера ZIP (250 MB с учётом слоёв) часто упирается в тяжёлые ML-библиотеки — тогда переходите на образ. Для Python зависимостей, собранных под Linux, удобны SAM или Dockerfile с public.ecr.aws/lambda/python как base.


3. Конкурентность и лимиты

Reserved concurrency — изоляция от «съедания» всего аккаунта. Timeouts и memory влияют на CPU.


4. VPC

Lambda в VPC для доступа к RDS — cold start хуже; нужны ENI и subnet design.


5. Локальный запуск

AWS SAM, LocalStack (ограниченно), Serverless Framework.

Триггеры по расписанию: EventBridge (rate(5 minutes) или cron) вызывает функцию без отдельного сервера — удобно для отчётов и синхронизаций. SQS как источник — батчи сообщений в одном invoke; настройте batchSize и partial batch failure (ответ с batchItemFailures), чтобы не терять всю партию из‑за одного poison message.


6. Cold start и производительность

Меньше импортов на холодном пути, lazy import тяжёлых библиотек. ARM Graviton часто дешевле x86 при том же perf. PowerTools (Lambda Powertools) даёт структурированные логи, метрики, tracer. Provisioned concurrency — платно, но стабилизирует latency для критичных API.


7. Ошибки и DLQ

Для SQS настройте DLQ и redrive policy; для async invokeDestinationConfig OnFailure в SQS/SNS/EventBridge. Логируйте requestId и awsRequestId из context.


8. Чек-лист

  • Идемпотентность при повторной доставке события.
  • Секреты из SSM/Secrets Manager, не env в репо.
  • X-Ray или OpenTelemetry — трассировка.
  • Лимит пакета ZIP и слоёв; при росте — контейнерный образ Lambda.
  • Политика IAM минимальная на функцию, не общая «админская».

Дальше: тег Serverless