Lambda: Event/Context, Destinations, IAM Policies Flashcards
Какие параметры принимает Лямбда функция в коде?
Event, Context
Что такое объект Event?
- Объект в формате JSON
- Содержит инфу о сервисе, который вызывал Лямбду (EventBridge, SQS, SNS, etc)
- Содержит все данные о запросе (тело, HTTP метод, заголовки)
Что такое объект Context?
- Содержит поля о текущем вызове (invocation) функции (
aws_request_id
) - Содержит метаинформацию о самой лямбда функции, её настройки (
function_name
,function_arn
,memory_limit
,log_group_name
)
Failed event’ы можно отправлять в … и в …
DLQ, Lambda Destination
Что такое Lambda Destinations? Как раньше обходились без этой фичи?
Lambda Destinations - это новая фича (с 2019-ого года).
Раньше её НЕ было.
Поэтому раньше было трудно анализировать результаты (удачные и нет) выполнения Лямбда функции
Для каких вызовов Лямбда функции можно указать Destination?
Почему?
Можно отправлять в Destination
- результаты (successful
или failed
) АССИНХРОННОГО выполнения Лямбды
- и результаты (failed batches
) выполнения через Event Source Mapping
Для синхронного вызова НЕ имеет смысл использовать Lambda Destination, потому что синхронный вызов имеет response status
Когда event попадает в Lambda Destination при наличии retry механизма?
При наличии retry-механизма event попадёт в Destination только после всех неудачных попыток.
Что можно выбрать в качестве Лямбда destination?
- SQS
- SNS
- Lambda (другая)
- EventBridge Bus
Чтобы Лямбда могла писать в Destination, нужно …
Чтобы Лямбда имела права писать сообщения в Destination, Лямбде нужно дать Lambda SQSQueue Destination ExecutionRole.
В чём отличие использования Destinations для Ассинхронного выполнения и для Event Source Mapping?
В рамках Event Source Mapping (В ОТЛИЧИЕ ОТ ассинхронного выполнения)
можно слать в Destination ТОЛЬКО discarded batches.
Если S3 шлёт Event в Лямбду, то она может слать … event’ы в …, а … event’ы в …
В случае успешной обработки Лямбда шлёт Event в Success Destination
В случае НЕ успешной обработки - в Failed Destination
Сравни Destinations и DQL.
Что рекомендует AWS и почему?
Предпочитайте Destinations
вместо Dead Letter Queues
.
Потому что
- В качестве Destination можно выбрать больше сервисов (не только
SQS
). - В Destination ДЛЯ АССИНХРОННОГО выполнения можно отправлять НЕ только
Failed
, но иSuccess
Event’ы
Часто востребованные managed (pre-defined, готовые) IAM Roles
Best Practice?
-
AWSLambda Basic ExecutionRole
- upload логи в CloudWatch -
AWSLambda Kinesis ExecutionRole
- читать из Kinesis -
AWSLambda DynamoDB ExecutionRole
- читать из DynamoDB Streams -
AWSLambda VPCAccess ExecutionRole
- deploy Лямбду в VPC
Создавать одну (отдельную) Execution Role на каждую Лямбда функцию.
При использовании Event Source Mapping, чтобы указать IAM права, руководствуемся правилом …
Если Лямбда - это действующее лицо
(например, она читает данные из Stream’а или Очереди),
то к Лямбде крепится IAM Execution Role.
При использовании синхронного или ассинхронного вызова, чтобы указать IAM права, руководствуемся правилом …
Если Лямбда - это ресурс, подверженный действию
(например, её вызывает ALB или S3),
то к Лямбде крепится Resource Based Policy.
(principle: S3)