Lambda: Event Source Mapper Flashcards

1
Q

Какие сервисы вызывают Лямбду через Event Source Mapping?
На какие группы они делятся?
Как их можно общим словом назвать в данном контексте?

A

Делятся на две категории

  • STREAMS
    • Kinesis Data Streams
    • DynamoDB Streams
  • QUEUES
    • SQS и SQS FIFO

Event Sources

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

Как происходит взаимодействие Event Source + Lambda + Event Source Mapper?
Кто обращается к кому?

A

Внутренний Лямбда event-source-mapper pull’ит (стягивает) записи из источника (SQS, Kinesis Data Stream, etc).

Когда записи появляются во внутреннем event-source-mapper’е, то он СИНХРОННО вызывает Лямбду через EVENT BATCH.

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

Как устроен Event Source Mapping для “Streams”

  • Внутренний Лямбда event-source-mapper создаёт … для каждого …
    Тогда event’ы будут обрабатываться согласно …
  • Можно поставить …
    • в самое начало …
    • в указанный момент времени (timestamp)
    • в то место, где он остановился в прошлый раз
  • Item’ы … из Stream’а после их обработки.
    Так что могут быть ….
A

итератор
ШАРДА
их порядку в рамках КАЖДОГО ШАРДА
итератор
шарда
НЕ удаляются
прочитаны другими consumer’ами

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

Use Cases для Event Source Mapping (Streams)
Какие они? Как нужно настраивать обработку в каждом случае? Для каких целей?

A

Если трафик НИЗКИЙ - установить долгий Batch Window (секунды), чтобы собирать побольше record’ов перед обработкой
и оптимизировать COST

Если трафик ВЫСОКИЙ настроить параллельную обработку
несколькими Лямбдами на уровне Шарда (т.е. одного Шарда),
и оптимизировать PERFORMANCE

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

Сколько Лямбд одновременно могут обрабатывать один Шард?

A

Количество одновременных обработчиков (Лямбда функций) при параллельной обработке одного Kinesis Data Stream шарда - максимум 10 обработчиков на шард.

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

Как устроен Event Source Mapping для “Queues”

  • Внутренний Лямбда event-source-mapper … SQS, используя …
  • Можно указать размер …
  • Можно указать … (количество времени в секундах, которое …)
  • Item’ы … из SQS очереди после ….
  • Лямбда умеет … (запускать параллельно …).
  • Если во время обработки произошла ошибка, то … в очередь …. А значит они в дальнейшем ….
A

poll’ит
Long Polling
БАТЧА (сколько сообщений)
Batch Window
мы ждём, пока наполнится батч
удаляются
их (успешной) обработки
масштабироваться
несколько одинаковых Лямбд
item’ы батча возвращаются
ПО-ОТДЕЛЬНОСТИ (индивидуально)
могут быть обработаны в другом порядке

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

Может ли Лямбда “задублировать” event при event-source-mapping’е из SQS? При каких условиях?

A

При использовании SQS Event Source Mapping есть вероятность повторной обработки одного и того же item’а (даже если никаких ошибок в обработке не произошло)

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

Чтобы Лямбда имела права читать сообщения из SQS …

A

Лямбде нужно дать LambdaSQSQueueExecutionRole

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

Где можно создать Dead Letter Queue при event-source-mapping’е из SQS?

A
  • Отдельно в SQS
  • В самом Лямбда сервисе
  • Можно вообще выбрать Destination вместо DLQ
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

В чём отличие использования Destinations для разных выполнений Лямбды?

A
  • Синхронно - нет смысла и возможности использовать Destination / DLQ
  • Ассинхронно - в destination можно слать успешные / failed event’ы
  • Event Source Mapping - в destination можно слать ТОЛЬКО FAILED event’ы (discarded batches)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как происходит масштабирование Лямбды для SQS FIFO?
Сколько можно запустить Лямбд? Каков порядок обработки?

A

Для соблюдения порядка FIFO очереди
количество одновременных Лямбда функций
будет равно количеству активных Message Groups.

Сообщения в одной Message Group’е будут обработаны упорядоченно.

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

Как происходит масштабирование Лямбды для SQS Standard?
Сколько можно запустить Лямбд? Каков порядок обработки?

A

Для обычной SQS очереди
порядок обработки сообщений Лямбда НЕ соблюдает.

Масштабироваться будет ASAP.
- До 60-ти новых единиц Лямбда функции в минуту.
- До 1000 батчей одновременно.

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