Как можно выполнять бизнес логику, препроцессинг запросов до попадания на сервер? Какие 2 варианта?
Есть возможность реализовать код в рамках Lambda функции.
И прикрепить его к Edge Location’у (к CloudFront Distribution’у).
- CloudFront Function
- Lambda@Edge
Есть клиент, CloudFront Distribution и …
Запрос при этом делится на …
Origin
Viewer request, Origin request
Сравни CloudFront Functions и Lambda@Edge по:
- Доступные языки программирования
- Какую часть запроса можно менять
CloudFront Functions
- Легковесные функции на plain Javascript
- Нативная фича CloudFront’а (управляем всем кодом в CloudFront)
- Viewer request, Viewer response (Клиент - EdgeLocation)
Lambda@Edge
- Функции на NodeJS или Python, SDK и библиотеки
- Viewer request, Viewer response, Origin request, Origin response
Сравни CloudFront Functions и Lambda@Edge по:
- performance, время, одновременные запуски
CloudFront Functions
- Доли миллисекунд для запуска
- Миллионы запросов в секунду (масштабирование)
- Максимальное время выполнения < 1 ms
Lambda@Edge
- Тысячи запросов в секунду (масштабирование)
- Максимальное время выполнения 5-10 sec
Сравни CloudFront Functions и Lambda@Edge по:
- Доступ к телу запроса
- Доступ к EFS
CloudFront Functions
- Нет доступа к телу запроса
- Нет доступа к EFS
Lambda@Edge
- Есть доступ к телу запроса
- Есть доступ к EFS
Что такое CDN?
CDN (content delivery network) - сеть сообщающихся серверов, которая ускоряет загрузку тяжеловесного веб-сайта.
Ключевые слова для CloudFront Functions
hight performance, high scale,
only user request / user response,
fast execution, primitive processing,
plain JS
Примитивная работа с Cache Key, HTTP Headers, URL, JWT токеном.
Но супер-быстро, супер-производительно, супер-масштабируемо.
Ключевые слова для Lambda@Edge
Более основательная, полноценная работа с использованием внешних библиотек, доступом к AWS сервисам, EFS.
Но менее производительно, дольше выполняется.
Основные UseCases для CloudFront Functions
CDN для снижение latencyКакие возможности есть у Lambda@Edge, которых НЕТ у CloudFront Functions?
Какие минусы есть у Lambda@Edge, которых НЕТ у CloudFront Functions?
В чём суть идеи Lambda Execution Context?
Execution Context - это временный runtime environment,
в котором можно инициализировать зависимости для Лямбда функции,
которые она будет повторно использовать при последующих вызовах.
Что можно сделать в Execution Context? Например?
Как хранить в контексте тяжёлый файл? Каков лимит на его размер?
/tmp папка - это часть execution context’а
10 ГБ максимум
multiple invocation = reuse
/tmp
Временное или постоянное хранилище? Как зашифровать файл?
ephemeral временный (если нужен постоянный - S3, EFS)
KMS Data Keys