Lambda: Env Vars, Monitoring, Config Flashcards
При помощи env vars можно …
изменить поведение Лямбда функции БЕЗ изменений в коде
Lambda Service имеет некоторые стандартные
System Environment Variables
Как использовать секреты в коде Лямбды?
В переменных окружения можно хранить секреты (зашифрованные KMS)
- Ключ для шифрования секретов можно выбрать
- Lambda Service Key
- Customer Master Key
(CMK)
Как можно отлаживать Лямбда функцию? Что для этого нужно?
Лямбда пишет логи своего выполнения в CloudWatch.
Благодаря IAM Role AWSLambda Basic ExecutionRole
(позволяет upload’ить логи в CloudWatch).
Эта роль по-умолчанию прикреплена к любой новой Лямбде.
Какие метрики можно отслеживать у Лямбды в CloudWatch?
- Invocations, Durations, Concurrent Executions
- Errors amount
- Iterator Age для Kinesis & DynamoDB Streams (на сколько курсор отстаёт)
Что нужно сделать, чтобы отслеживать Лямбду в X-Ray?
- В настройках Лямбды нужно включить Active Tracing.
-
X-Ray Демон
будет работать “из коробки”, ничего делать НЕ надо -
X-Ray SDK
должна быть использована в коде, нужно немного изменить код Лямбды -
IAM Role
для записи в X-Ray должна быть прикреплена к Лямбде
(managed RoleAWSXRayDaemonWriteAccess
)
В Лямбда коде можно использовать переменные окружения с информацией об X-Ray. Какие?
AWS_XRAY_DAEMON_ADDRESS содержит IP_ADDRESS:PORT демона
VPC по-умолчанию - что это значит в Лямбда?
По-умолчанию Лямбда запускается ВНЕ нашей VPC.
AWS имеет собственную VPC для запуска Лямбд.
Поэтому Лямбда НЕ имеет доступа к ресурсам,
которые находятся внутри нашей VPC.
Например, RDS, ElastiCache, internal ELB, internal EC2.
Что нужно указать, чтобы задеплоить Лямбду в свою VPC?
Можно задеплоить Lambda функцию в своей VPC, указав
- VPC ID
- Subnets
- Security Groups
Как Лямбда в нашей VPC свяжется с RDS в нашей VPC?
Что для этого нужно?
Лямбда создаст ENI (Elastic Network Interface) в подсети.
- Чтобы Лямбда смогла создать ENI, Лямбде нужно дать AWSLambda VPCAccess ExecutionRole
- Security Группа RDS должна разрешать (Allow) запросы от Security Группы Лямбды.
Как Лямбда в нашей VPC свяжется с public internet? Что на счёт public / private subnet? Что для этого нужно?
- Лямбда функция в своей VPC НЕ имеет доступ в интернет (по-умолчанию).
- Лямбда функция НЕ имеет доступ в интернет, даже если находится в
public
подсети.
Чтобы дать Лямбде (находящейся в кастомной VPC) доступ в интернет, то нужно создать NAT Gateway / Instance.
NAT Девайс выведет запрос в интернет через IGW.
- Чтобы Лямбда смогла создать ENI, Лямбде нужно дать AWSLambda VPCAccess ExecutionRole
Как EC2 instance в нашей VPC свяжется с public internet? Что на счёт public / private subnet?
Если в public подсети находится EC2 instance,
то он (в отличие от Лямбды) сразу по-умолчанию имеет доступ в интернет.
Как Лямбда в нашей VPC свяжется с DynamoDB в нашей VPC? Что для этого нужно? В чём разница между способами?
Есть 2 способа дать Лямбде (находящейся в кастомной VPC) доступ к DynamoDB.
- Lambda в приватной подсети → NAT Девайс
→ IGW
→ DynamoDB
- Lambda в приватной подсети → VPC Endpoint
→ DynamoDB
- Чтобы Лямбда смогла создать ENI, Лямбде нужно дать AWSLambda VPCAccess ExecutionRole
Разница в том, что использовать VPC Endpoint нужно, если к DynamoDB необходимо подключаться по ПРИВАТНОЙ сети.
Как Лямбда в нашей VPC свяжется с CloudWatch? Что для этого нужно?
Если Лямбда функция развёрнута в приватной подсети кастомной VPC,
то доступ к CloudWatch Logs
она имеет В ЛЮБОМ СЛУЧАЕ.
Даже если НЕ настроены NAT Девайсы или VPC Endpoint’ы.
CloudWatch для Лямбды доступен ВСЕГДА.
Если конечно у Лямбды есть IAM Role AWSLambda Basic ExecutionRole.
Какие настройки конфигурации есть у Лямбда?
RAM, vCPU, Timeout, Max Concurrent Executions