Lambda: Layers, EFS, Concurrency, CloudFormation Flashcards

1
Q

Какие применения есть у Lambda Layers?

A
  • это создать кастомный Runtime (C++, Rust, PHP)
  • Externalise Dependencies to Reuse them
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

“Externalise Dependencies” - …

A

возможность отделить библиотеки от кода приложения при помощи Layers.
Для повторного использования другими функциями.
Для ускорения процесса deployment’а.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как делать upload кода в сервис Лямбда? Какой формат файла? Что в нём находится? Какие ограничения по размеру?

A

Код Лямбды вместе с библиотеками запаковывается в ZIP архив перед загрузкой в Lambda
Если сборка занимает более 50-ти MB,
то сначала upload’им свой ZIP архив в S3.
А потом ссылаемся на S3 из Лямбды.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какие особенности есть у некоторых библиотек при работе в Lambda?

A

AWS SDK по-умолчанию доступны в коде Лямбда функций.
AWS SDK упаковывать вместе с остальными библиотеками НЕ нужно.

Если код использует native библиотеки, то их сначала нужно скомпилировать на Amazon Linux.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие ограничения есть по Layers?

A

Максимум 5 слоёв, 250 MB total

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Можно ли замонтировать EFS к Лямбде?

A

Лямбда функция может подключиться к EFS,
если Лямбда развёрнута в VPC.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как Лямбда монтируется к EFS в приватной подсети?

A

Через EFS Access Point

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что нужно учитывать, подключая множество экземпляров Лямбд к EFS?

A

Больше экземпляров Лямбд = больше соеднинений.
EFS имеет connections-limit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие варианты памяти (НЕ оперативной) есть для Лямбда?
Сравнить их по долговечности / макс-объёму / ограничению-прав-доступа

A
  • Папка /tmp - ephemeral - 10 GB - только для функции
  • Lambda Layers - постоянная - 250 GB, 5 слоёв - ограничен IAM
  • S3 - постоянная - elastic - ограничен IAM
  • EFS - постоянная - elastic - ограничен IAM, NFS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что нужно знать о параллельном запуске множества экземпляров Лямбды?

A
  • Лимит установлен на уровне AWS аккаунта для всех Лямбд В СОВОКУПНОСТИ (1_000 экземпляров)
  • Best Practice это устанавливать личный лимит для каждой функции (чтобы одна функция НЕ съела весь лимит)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что если превысить Concurrency Limit при синхронном вызове?

A

ThrottleError - 429

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что если превысить Concurrency Limit при ассинхронном вызове?

A
  • Лямбда вернёт event в очередь и потом будет делать retry автоматически до 6-ти часов
  • Retry интервал будет увеличиваться экспоненциально от 1 сек до 5 мин
  • В конце концов event может отправиться в DQL
  • Лямбда ведёт себя аналогично при system-error (500)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое Cold Start и зачем это знать?

A

Первый вызов Лябда функции возьмёт больше latency, чем последующие.
Если в execution context’е инициализируются тяжёлые объекты.
Высокая latency - это проблема.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как можно решить проблему Cold Start’а?

A

Provisioned Concurrency
Есть возможность указать количество concurrent единиц функции, которые будут запущены ЗАРАНЕЕ и работать ВСЕГДА.
Тогда НЕ будет Cold Start’а, и latency всегда будет низкой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как можно объявить Лямбда функцию в CloudFormation?

A
  • Inline Function
  • Через загрузку ZIP архива в S3
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое Inline Function в CloudFormation? Какое свойство нужно указать?

A

Если функция очень простая, можно указать её прямо в YAML файле CF Template’а.

Используем свойство
Code → ZipFile

17
Q

Что такое загрузка ZIP архива в S3 в CloudFormation? Какое свойство нужно указать?

A

ZIP архив с кодом Лямбды и зависимостями в S3

Используем свойства
Code → S3Bucket,
Code → S3Key,
Code → S3ObjectVersion

18
Q

Какое неожиданное поведение можно встретить при обновлении кода Лямбда функции (в S3) в CloudFormation?
Как можно решить эту проблему?

A

Если код Лямбда функции обновили в S3 (передеплоили),
но при этом CloudFormation Template НЕ изменился,
то CloudFormation НЕ обновит функцию,
т.к. с точки зрения CloudFormation ничего НЕ изменилось.

Поэтому S3 Versioning рекомендован