Lambda: Layers, EFS, Concurrency, CloudFormation Flashcards
Какие применения есть у Lambda Layers?
- это создать кастомный Runtime (C++, Rust, PHP)
- Externalise Dependencies to Reuse them
“Externalise Dependencies” - …
возможность отделить библиотеки от кода приложения при помощи Layers.
Для повторного использования другими функциями.
Для ускорения процесса deployment’а.
Как делать upload кода в сервис Лямбда? Какой формат файла? Что в нём находится? Какие ограничения по размеру?
Код Лямбды вместе с библиотеками запаковывается в ZIP архив перед загрузкой в Lambda
Если сборка занимает более 50-ти MB,
то сначала upload’им свой ZIP архив в S3.
А потом ссылаемся на S3 из Лямбды.
Какие особенности есть у некоторых библиотек при работе в Lambda?
AWS SDK
по-умолчанию доступны в коде Лямбда функций.AWS SDK
упаковывать вместе с остальными библиотеками НЕ нужно.
Если код использует native библиотеки, то их сначала нужно скомпилировать на Amazon Linux.
Какие ограничения есть по Layers?
Максимум 5 слоёв, 250 MB total
Можно ли замонтировать EFS к Лямбде?
Лямбда функция может подключиться к EFS,
если Лямбда развёрнута в VPC.
Как Лямбда монтируется к EFS в приватной подсети?
Через EFS Access Point
Что нужно учитывать, подключая множество экземпляров Лямбд к EFS?
Больше экземпляров Лямбд = больше соеднинений.
EFS имеет connections-limit.
Какие варианты памяти (НЕ оперативной) есть для Лямбда?
Сравнить их по долговечности / макс-объёму / ограничению-прав-доступа
- Папка /tmp - ephemeral - 10 GB - только для функции
- Lambda Layers - постоянная - 250 GB, 5 слоёв - ограничен IAM
- S3 - постоянная - elastic - ограничен IAM
- EFS - постоянная - elastic - ограничен IAM, NFS
Что нужно знать о параллельном запуске множества экземпляров Лямбды?
- Лимит установлен на уровне AWS аккаунта для всех Лямбд В СОВОКУПНОСТИ (1_000 экземпляров)
- Best Practice это устанавливать личный лимит для каждой функции (чтобы одна функция НЕ съела весь лимит)
Что если превысить Concurrency Limit при синхронном вызове?
ThrottleError - 429
Что если превысить Concurrency Limit при ассинхронном вызове?
- Лямбда вернёт
event
в очередь и потом будет делатьretry
автоматически до6-ти часов
- Retry интервал будет увеличиваться экспоненциально от
1 сек
до5 мин
- В конце концов
event
может отправиться вDQL
- Лямбда ведёт себя аналогично при
system-error (500)
Что такое Cold Start и зачем это знать?
Первый вызов Лябда функции возьмёт больше latency
, чем последующие.
Если в execution context’е инициализируются тяжёлые объекты.
Высокая latency
- это проблема.
Как можно решить проблему Cold Start’а?
Provisioned Concurrency
Есть возможность указать количество concurrent единиц функции, которые будут запущены ЗАРАНЕЕ и работать ВСЕГДА.
Тогда НЕ будет Cold Start
’а, и latency
всегда будет низкой.
Как можно объявить Лямбда функцию в CloudFormation?
- Inline Function
- Через загрузку ZIP архива в S3