Lambda: Containers, Versions & Aliases, CodeDeploy Flashcards
Что такое Lambda Container Images?
Есть возможность деплоить Лямбда функцию НЕ в виде ZIP архива.
А в виде Docker Image’а из ECR.
Какие ограничения есть на Lambda Container Image?
- Макс размер 10 GB
- parent image ДОЛЖЕН удовлетворять Lambda Runtime API
Какой use-case для Лямбда Container Images?
- код уже Предоставлен в виде контейнера
- объём кода большой, но до 10 GB
- код Использует НЕ только библиотеки, но и Data-Set’ы
Как можно протестировать Lambda Container Image локально?
используя Lambda Runtime Interface Emulator.
Какие best practices есть для Lambda Container Images в плане images?
- Использовать AWS-provided базовые images
(Amazon Linux 2, эти images уже закэшированы сервисом Лямбда) - Хранить images со схожими большими слоями (Docker Layers) в одном ECR репозитории
(оптимизирует процесс сборки благодаря повторному использованию Docker Layers)
Какие best practices есть для Lambda Container Images в плане Dockerfile?
- Использовать
Multi-Stage
Dockerfile - Размещать декларацию часто-меняющихся частей как можно НИЖЕ в Dockerfile’е
(оптимизирует процесс сборки благодаря сохранению НЕ изменных Docker Layers)
Какие версии Лямбда функции бывают? Чем отличаются?
- Версия по-умолчанию $LATEST является mutable
- Все дальнейшие конкретные версии - immutable
Что значит immutable версия?
immutable = мы НЕ можем менять
код функции, её environment variables и конфигурацию
Как можно однозначно обратиться к конкретной версии Лямбды?
Каждая версия Лямбда функции имеет свой ARN.
Для чего используют Lambda Alias?
Если нужно дать конечному пользователю неизменный Endpoint, то нужно использовать Lambda Aliases.
Можно выделять отдельный Alias для каждого окружения (DEV, PROD).
На что ссылается Lambda Alias? А на что нет?
Alias ссылается (как указатель, pointer) на конкретную версию Лямбда функции,
но НЕ может ссылаться на другой Alias.
Lambda Alias - mutable или нет? Почему?
Aliases являются mutable, так что можно менять версию Лямбда функции, НЕ меняя endpoint Alias’а.
Как можно применить Lambda Alias в деплойменте?
Canary Deployment через Aliases
Можно назначить WEIGHT каждой из нескольких Лямбда функций, закреплённых за одним Alias’ом.
Какие стратегии деплоймента есть в CodeDeploy для Лямбды?
-
Linear
- постепенно смещать трафик (по 10% в минуту), пока не переведёт 100% -
Canary
- сместить 10%, проверить, сместить ещё 90% -
AllAtOnce
- самый быстрый и опасный