Как эффективно бороться с lambda AWS и скомпилированными библиотеками? - PullRequest
1 голос
/ 06 января 2020

Недавно я столкнулся с некоторыми проблемами при интеграции лямбда-функции с использованием библиотек, которые не установлены по умолчанию в работающей среде. В результате я следовал процедуре, описанной AWS в его документации. В документации сказано, что библиотеки, не установленные по умолчанию, должны быть загружены в виде zip-файла, и эти библиотеки должны быть скомпилированы для ОС linux.

Поскольку я на windows, я использовал WLS для генерации zip-файла, содержащего библиотеки, необходимые для моей функции Lambda. После этого zip-файл загружается на S3 и связывается с функцией Lambda.

Работает описанная выше процедура. Однако эта процедура не может быть легко автоматизирована. Процесс автоматизации важен для целей технического обслуживания. Существует ли автоматизированная процедура, позволяющая добиться того же самого?

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Вы можете извлечь свои зависимости в Lambda Layer , и, если у вас основной Lambda, не тяжелый, просто обновите и протестируйте его в консоли AWS. Кроме того, как уже упоминалось в руководстве, вы можете использовать SAM для автоматизации большинства этапов развертывания и быть уверенным, что код отлично работает в среде Lambda.

1 голос
/ 06 января 2020

Мы используем jenkins для создания наших сборок, которые включают в себя paramiko, а также другие не нативные python пакеты, упаковывают их в архив и затем развертывают в lambda.

У нас есть базовый zip-файл, хранящийся в артефакте, который содержит зависимости пакета paramkiko, а также файл base / blank function.py, который содержит наш метод основного обработчика, используемый в лямбда-выражении. Этот zip был создан путем создания файла Requirments.txt с именем пакета / версией в нем и запуском: pip install -r needs.txt -t.

Это помещает все необходимые файлы из зависимостей в каталог. эта команда была запущена из. Затем вы можете сжать этот каталог: zip -r9 ../lambda.zip * -x "bin / *" needs.txt setup.cfg

Вы можете использовать этот базовый zip для автоматизации создания нескольких лямбд, которые используйте те же пакеты - вам просто нужно скопировать jenkins в файл лямбда-функции, который вы хотите использовать. Поэтому каждый раз, когда запускается задание jenkins для сборки / обновления лямбда-функции, она загружает тот базовый zip, который мы сделали на предыдущем шаге (который, как упоминалось, мы храним в артефакте, но вы можете хранить его где угодно), затем запускает команду ниже, чтобы обновить этот zip с новой лямбдой: zip -g ../lambda.zip /path/tocheckedoutlambda/new_lambda_function.py

Затем Jenkins использует плагин aws для загрузки в aws.

This для python очевидно, но вы должны быть в состоянии использовать аналогичные методы для других языков.

См .: https://alexharv074.github.io/2018/08/18/creating-a-zip-file-for-an-aws-lambda-python-function.html

Для получения более подробной информации о создании молнии для лямбда в python.

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