Как собрать AWS Lambda Layer с библиотекой Zeep
Python библиотека Zeep - предназначена для работы с SOAP - сервисами. Эта библиотека написана на чистом Python, но одна из ее зависимостей lxml содержит код на C, так как использует libxml2 и libxslt. Из-за этого библиотеку Zeep невозможно залить в Lambda Layer без танцев с бубном.
В одном из моих Serverless проектов мне нужно было использовать эту библиотеку, и я нашла такой способ засунуть ее в Layer:
Сначала как обычно создаем на компьютере директорию:
и устанавливаем туда Zeep через pip:
Библиотека установится в эту директорию вместе с зависимостями. Теперь идем туда и удаляем папки библиотеки lxml:
А вместо них вставляем туда вот эту версию библиотеки lxml: https://github.com/BedrosovaYulia/aws-lambda-lxml/tree/master/3.8.0/py36/lxml (она немного порезана относительно обычной и не использует libxml2 и libxslt)
Все, теперь можно паковать папку pyton в zip архив, заливать в Lambda Layer и удобно работать там с SOAP. Для примера можно получить информацию о почтовом отравлении с сервиса Почты России:
Работает:
В одном из моих 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. Для примера можно получить информацию о почтовом отравлении с сервиса Почты России:
Работает:
Комментарии