Настройка AWS Lambda для production
Развёртывание приложений на AWS
Dunieski Otano
Amazon Web Services Solutions Architect
В тестах всё работало
Функция прошла все тесты
В production она зависает и throttle-ится
Код был в порядке — конфигурация нет
Ключевые параметры конфигурации Lambda
Memory
: также масштабирует CPU и сеть
Timeout
: максимальное время до завершения функции
Ephemeral storage
: временное пространство в /tmp
Concurrency
: количество одновременных запусков
Выбор объёма памяти и связь с CPU
Больше памяти =
пропорционально больше CPU
CPU-интенсивная функция работает быстрее при большей памяти
Меньше времени выполнения —
меньше затрат
Подбирайте размер тестированием, а не догадками
Concurrency: reserved и provisioned
Reserved concurrency
Ограничивает максимальное число одновременных выполнений
Защищает зависимые системы и другие функции
Provisioned concurrency
Предварительно прогревает экземпляры — нет холодного старта
Для функций с жёсткими требованиями к задержке
Упаковка конфигурации и общего кода
Environment variables
: конфигурация для каждой среды
Layers
: общий код и зависимости между функциями
Extensions
: запускаются рядом с функцией для инструментов
Не включайте конфигурацию в пакет развёртывания
Подключение Lambda к VPC
Подключайте Lambda к
приватным подсетям
для внутренних ресурсов
Lambda создаёт
ENI
в вашем VPC
Security groups
определяют доступные ресурсы
Для внешнего доступа нужен NAT или VPC endpoint
Обработка сбоев: destinations и DLQ
Асинхронные вызовы
автоматически повторяются
при сбое
Lambda Destinations
: маршрутизация onSuccess и onFailure
Dead-letter queue
: сохраняет события, которые так и не выполнились
Никогда не теряйте неудавшиеся события молча
Давайте потренируемся!
Развёртывание приложений на AWS
Preparing Video For Download...