Как собрать AWS Lambda Layer с библиотекой Zeep

Python библиотека Zeep - предназначена для работы с SOAP - сервисами. Эта библиотека написана на чистом Python, но одна из ее зависимостей lxml содержит код на C, так как использует libxml2 и libxslt. Из-за этого библиотеку Zeep невозможно залить в Lambda Layer без танцев с бубном.

В одном из моих Serverless проектов мне нужно было использовать эту библиотеку, и я нашла такой способ засунуть ее в Layer:


Сначала как обычно создаем на компьютере директорию:

mkdir -p python/lib/python3.6/site-packages/

и устанавливаем туда Zeep через pip:

pip install zeep --target python/lib/python3.6/site-packages/

Библиотека установится в эту директорию вместе с зависимостями. Теперь идем туда и удаляем папки библиотеки lxml:



А вместо них вставляем туда вот эту версию библиотеки lxml: https://github.com/BedrosovaYulia/aws-lambda-lxml/tree/master/3.8.0/py36/lxml (она немного порезана относительно обычной и не использует libxml2 и libxslt)

Все, теперь можно паковать папку pyton в zip архив, заливать в Lambda Layer и удобно работать там с SOAP. Для примера можно получить информацию о почтовом отравлении с сервиса Почты России:



Работает:






Комментарии

Популярные сообщения из этого блога

Настройка почты через biz.mail.ru в БитриксВМ

Git обновить текущую ветку из master

Как заполнить ComboBox значениями из базы данных