Lambda: Event/Context, Destinations, IAM Policies Flashcards

1
Q

Какие параметры принимает Лямбда функция в коде?

A

Event, Context

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

Что такое объект Event?

A
  • Объект в формате JSON
  • Содержит инфу о сервисе, который вызывал Лямбду (EventBridge, SQS, SNS, etc)
  • Содержит все данные о запросе (тело, HTTP метод, заголовки)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое объект Context?

A
  • Содержит поля о текущем вызове (invocation) функции (aws_request_id)
  • Содержит метаинформацию о самой лямбда функции, её настройки (function_name, function_arn, memory_limit, log_group_name)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Failed event’ы можно отправлять в … и в …

A

DLQ, Lambda Destination

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

Что такое Lambda Destinations? Как раньше обходились без этой фичи?

A

Lambda Destinations - это новая фича (с 2019-ого года).
Раньше её НЕ было.

Поэтому раньше было трудно анализировать результаты (удачные и нет) выполнения Лямбда функции

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

Для каких вызовов Лямбда функции можно указать Destination?
Почему?

A

Можно отправлять в Destination
- результаты (successful или failed) АССИНХРОННОГО выполнения Лямбды
- и результаты (failed batches) выполнения через Event Source Mapping

Для синхронного вызова НЕ имеет смысл использовать Lambda Destination, потому что синхронный вызов имеет response status

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

Когда event попадает в Lambda Destination при наличии retry механизма?

A

При наличии retry-механизма event попадёт в Destination только после всех неудачных попыток.

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

Что можно выбрать в качестве Лямбда destination?

A
  • SQS
  • SNS
  • Lambda (другая)
  • EventBridge Bus
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Чтобы Лямбда могла писать в Destination, нужно …

A

Чтобы Лямбда имела права писать сообщения в Destination, Лямбде нужно дать Lambda SQSQueue Destination ExecutionRole.

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

В чём отличие использования Destinations для Ассинхронного выполнения и для Event Source Mapping?

A

В рамках Event Source Mapping (В ОТЛИЧИЕ ОТ ассинхронного выполнения)
можно слать в Destination ТОЛЬКО discarded batches.

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

Если S3 шлёт Event в Лямбду, то она может слать … event’ы в …, а … event’ы в …

A

В случае успешной обработки Лямбда шлёт Event в Success Destination
В случае НЕ успешной обработки - в Failed Destination

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

Сравни Destinations и DQL.
Что рекомендует AWS и почему?

A

Предпочитайте Destinations вместо Dead Letter Queues.
Потому что

  • В качестве Destination можно выбрать больше сервисов (не только SQS).
  • В Destination ДЛЯ АССИНХРОННОГО выполнения можно отправлять НЕ только Failed, но и Success Event’ы
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Часто востребованные managed (pre-defined, готовые) IAM Roles
Best Practice?

A
  • AWSLambda Basic ExecutionRole - upload логи в CloudWatch
  • AWSLambda Kinesis ExecutionRole - читать из Kinesis
  • AWSLambda DynamoDB ExecutionRole - читать из DynamoDB Streams
  • AWSLambda VPCAccess ExecutionRole - deploy Лямбду в VPC

Создавать одну (отдельную) Execution Role на каждую Лямбда функцию.

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

При использовании Event Source Mapping, чтобы указать IAM права, руководствуемся правилом …

A

Если Лямбда - это действующее лицо
(например, она читает данные из Stream’а или Очереди),
то к Лямбде крепится IAM Execution Role.

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

При использовании синхронного или ассинхронного вызова, чтобы указать IAM права, руководствуемся правилом …

A

Если Лямбда - это ресурс, подверженный действию
(например, её вызывает ALB или S3),
то к Лямбде крепится Resource Based Policy.
(principle: S3)

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

Если Лямбда функция в рамках своей работы взаимодействует с другими сервисами, чтобы указать IAM права, руководствуемся правилом …

A

Если Лямбда - это действующее лицо (например, пишет данные в RDS),
то к Лямбде крепится IAM Execution Role.

17
Q

Кто может вызывать Лямбду и что это значит с точки зрения IAM прав?

A
  • User - тогда к этому пользователю должна быть прикреплена IAM Role
  • Service - тогда к Лямбде должна быть прикреплена Resource Based Policy
18
Q

В чём суть правила “Главного Героя”

A

Лямбда - наш главный герой.

Если Лямбда есть в сценарии взаимодействия, то нужно
- или прикрепить к Лямбде IAM Role (если Лямбда действует)
- или прикрепить к Лямбде Resource Policy (если Лямбда подвержена действию)

!!! IAM Роль или Resource Policy крепится именно к Лямбде.
Но НЕ к другим ресурсам.