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
может занять около минуты.