Старые лямбда-слои AWS автоматически удаляются? Если нет, то как их удалить? - PullRequest
3 голосов
/ 03 октября 2019

После прочтения этой статьи , в которой обсуждается главный недостаток использования функций AWS Lambda, я пытаюсь избежать того, с чем пришлось столкнуться автору, и выполнить некоторую очистку собственного кода:

" Lambda версии каждой функции . Мы используем Serverless Framework для разработки Lambda-приложения. Это означает, что Serverless создает функции Lambda. Наша средняя функция Lambda составляет около 60 МБ. [...]
Когда вы объединяете CI / CD с быстрой разработкой и функциями Lambda, вы получаете много версий. Даже сотни. А объем хранения лямбда-кода ограничен 75 ГБ. Мы достигли этого предела и сильно его ударили. Два года разработки, основанной на CI / CD, из-за отсутствия очистки версий мы полностью заблокировали процесс разработки. "

(выделено мной)

О моей архитектуре. У меня есть лямбда-функции, которые вызывают методы из самодельных пакетов Python, которые хранятся в layer . Цель состоит в том, чтобы избежать слишком большого количества кода в лямбдах и легко повторно использовать функции среди них.

Теперь я нашел, как удалить старые версии моих лямбда-функций (я тоже использую инфраструктуру Serverless, которая предлагает хороший плагин для автоматического удаления их при развертывании стека). Однако я не знаю, удаляются ли старые слои автоматически с помощью AWS: мне еще не удалось найти панель мониторинга, которая бы суммировала общий размер кода всех версий моих слоев, и я не смог найти плагин, который автоматически удаляет их.

Автоматически удаляются старые лямбда-слои AWS? Если нет, то как я могу удалить их?

1 Ответ

1 голос
/ 03 октября 2019

Старые слои не удаляются автоматически. Вы можете запустить команду CLI , например, следующую, чтобы удалить слой версия :

$ aws lambda delete-layer-version --layer-name my-layer --version-number 1

Их ключевой момент заключается в том, что вы удаляете версиюслой. Вы можете запустить приведенную выше команду в цикле, чтобы массово удалить несколько версий слоев, возможно, в сочетании с вызовом list-layer-version . Вы также можете удалить версии слоев через консоль. Как только вы удалите все версии слоя, сам слой будет удален. Некоторые другие интересные моменты из этой ссылки:

Когда вы удаляете версию слоя, вы больше не можете настраивать функции для ее использования. Однако любая функция, которая уже использует версию, продолжает иметь к ней доступ. Номера версий никогда не используются повторно для имени слоя.

В документации не указывается, сохраняется ли «удаленный» слой, который сохраняется в лямбда-выражении, в то время как функция все еще ссылается на него, он учитывается в квоте общего размера. .

Также см.

Во избежание нарушения функций, копия версии остается вЛямбда, пока функции не обращаются к ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...