Какие есть способы привязать Лямбду к HTTP endpoint’у?
ALB
API Gateway
Lambda URL
Что нужно знать про запросы на Lambda URL?
Для чего (для каких сущностей) можно создать Lambda URL?
Можно для Lambda Alias и $LATEST версию Лямбды.
Нельзя для обычных версий Лямбды.
Какие есть настройки Security для Лямбда URL?
IAM Resource Based Policy
CORS
Как сделать Лямбда URL доступных для всех в интернете?
Если в Resource Policy указать
Condition → StringEquals → lambda:FunctionUrlAuthType → AuthType: NONE,
то Lambda будет доступна из интернета ДЛЯ ВСЕХ.
Как сделать Лямбда URL доступных для конкретного AWS principle?
Если в Resource Policy указать
Condition → StringEquals → lambda:FunctionUrlAuthType → AuthType: AWS_IAM,
то Lambda будет доступна из интернета ДЛЯ ВСЕХ.
Какое условие должно быть выполнено, чтобы IAM Principle смог вызвать Лямбда функцию?
Ему должна быть разрешена (Allow) операция Lambda:InvokeFuncion
Какая есть особенность по наличию Lambda:InvokeFunction операции в плане same-account и cross-account?
Principle и Lambda могут находиться в ОДНОМ или в РАЗНЫХ аккаунтах AWS.
Eсли вызов Лямбда функции происходит
- Cross Account, то нужны ОБА
(Resource Based Policy AND Identity Based Policy)
- Same Account, то нужна хотя бы ОДНА
(Resource Based Policy OR Identity Based Policy)
Зачем нужен CodeGury в Lambda?
CodeGury Profiler для измерения runtime performance Лямбда функции.
Как включить CodeGury в Лямбде?
Какие есть Execution Limits?
- RAM
- Execution Time
- Environment Variables
- /tmp папка
- concurrent executions
128 MB - 10 GB (1 MB step; vCPU пропрорционально)900 sec (15 mins)4 KB/tmp папка: 512 MB - 10 GB1_000 (можно увеличить по запросу)Какие есть Deployment Limits?
- ZIP архив
- Layers
250 MB, 5 layersКакие ключевые слова могут говорить, что это НЕ Лямбда?
- по RAM
- по execution time
- по размеру файла
Best practices
Что такое Heavy Duty Work outside of your Handler?
например?
Нужно располагать инициализацию тяжёлых ресурсов в контексте, а НЕ в handler’е функции.
- DB connection
- SDK init
- dependencies / datasets pulling
Best Practices
Что нужно знать про Environment Variables?
Нужно использовать переменные окружения для всего, что может меняться.
- S3 bucket name
- DB connection string
passwords, sensitive значения можно шифровать через KMS
Best Practices
Минимизировать размер билда
- ZIP
- /tmp
- S3 EFS
- Layers
Зачем каждый из этого нужен?