Lambda: Ассинхронно, DLQ, EventBridge, S3 Events Flashcards
Какие сервисы вызывают Лямбду ассинхронно?
- S3
- SNS
- CloudWatch Events (EventBridge)
Что такое вызывать ассинхронно? Как это реализовано в Лямбде?
Это значит, что payload попадает во внутреннюю очередь (event queue).
И Лямбда функция читает его из очереди.
Какие фичи реализованы во внутренней Лямбда очереди, как и в SQS?
Как и у обычной SQS очереди, для внутренней Lambda-очереди предусмотрены механизмы “retry” и “dead letter queue”.
Как происходит retry во внутренней Лямбда очереди? Какие там тайминги? Сколько попыток?
3 retry attempts
Если при чтении Event’а из внутренней Lambda-очереди произошла ошибка, то
- Через 1 минуту
произойдёт вторая попытка
- Ещё через 2 минуты
произойдёт третья попытка
В настройках можно выбрать только от 0 до 3-ёх попыток.
Если 3 попытки (3 retry attempts) НЕ увенчались успехом, то
дальше …, которая будет создана …
Можно выбрать … или …
мы можем организовать DQL
мёртвую очередь (в отличие от сокрытой внутренней) придётся создать самостоятельно.
В качестве DQL можно выбрать SQS или SNS
Какое есть требование к Лямбда функции, вызываемой асинхронно?
Лямбда функция должна быть идемпотемптна
В случае повторных попыток обработки Event’а, Лямбда функция будет обрабатывать ОДИН event НЕСКОЛЬКО раз.
Это может вызвать проблемы, если Лямбда НЕ идемпотемптна.
Причины использовать Лямбду ассинхронно?
- Некоторые сервисы по-другому НЕ умеют (S3, SNS, CloudWatch Events)
- Возможность ускорить обработку данных (при условии, что НЕ нужно ждать ответа)
В чём особенность ассинхронного вызова лямбда функции с точки зрения response Status’а?
Если Лямбда функцию удалось ассинхронно вызвать,
то response-code сразу будет 200
.
Даже если в ходе выполнения Лямбда функции произошла ошибка.
Ведь при ассинхронно вызове наша цель - просто вызвать функцию.
А НЕ ждать её выполнения.
Что такое Invocation ID? Как ещё он называется?
У каждого Event’а есть атрибут Request ID
(он же Invoсation ID
), по которому можно идентифицировать вызов Лямбда функции.
Несколько попыток обработать один и тот же Event будут иметь одинаковый Request ID
(он же Invoсation ID
).
Как можно настроить запуск Лямбды по расписанию?
Через EventBridge Rule, типа Schedulled-Rate/CRON Jobs
Что такое EventBridge Rule? Например?
Что такое EventBridge Destination / Target?
EventBridge Rule - это поведение, реакция, например отправка сообщения в SNS или запуск Lambda функции.
Каждый Rule имеет Destination: SNS, Lambda, ещё пара десятков.
На какие 2 типа разделяются все EventBridge Rule’ы?
-
Scheduled-Rate/Cron Jobs
- каждый интервал времени
(например, в пятницу в 9:00 или каждые 2 часа) -
Event Pattern (State Changes)
- в случае обнаружения определённого Event’а (например, “IAM Root User Sign In” event)
Чтобы EventBridge мог иметь в качестве Target’а Лямбда функцию, то …, в которой будет указаны атрибуты и значения …
К Лямбде должна быть прикреплена IAM Based Policy
”Resource”: “arn.lambda-foo”
будет разрешать операцию “InvokeFunction”
сервису EventBridge (”Principle”: “events.amazonaws.com”, “ArnLike”: “arn.events-rule-bar”).
Resource: “arn.lambda-foo”
Action: “Lambda:InvokeFunction” / “SNS:Publish”
Principle: Service “S3.amazonaws.com”
ConditionLike: ArnLike “arn:aws:s3:::MyBucket”
Что такое S3 event - какие примеры?
Что может быть destination’ом для S3 event’а?
S3:ObjectCreated
S3:ObjectRemoved
S3:ObjectRestore
S3:Replication
- Lambda
- SQS
- SNS
Какой тайминг доставки S3 event’ов?
S3 Event Notifications
обычно доставляются за секунды.
Но иногда отправка S3 Event Notifications
может занять около минуты.
Когда может произойти потеря S3 event’а?
Как от неё застраховаться?
Если ДВЕ write-операции записи выполняются с одним S3 объектом одновременно,
то есть шанс отправки ТОЛЬКО ОДНОГО S3 Event’а.
Чтобы избежать этого и дать 100% гарантии отправки S3 Event’а для каждой write-операции, нужно включить версионирование.
Какова единица измерения в EventBridge?
Bus