Использование scopy в AWS лямбда-функции в качестве слоя - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь использовать терапию в лямбда-функции AWS в качестве слоя.

Я использовал pip для установки scrapy в моем каталоге:

pip install scrapy 

формат каталога такой же, как и у всех слоев, с которыми я уже работал.Я заархивировал и загрузил в слои.Я включил слой в лямбда-функцию.Я импортирую scopy:

import scrapy

, и когда я запускаю проект, я получаю эту ошибку:

{
  "errorMessage": "Unable to import module 'lambda_function'"
}

и

Unable to import module 'lambda_function': /opt/python/lxml/etree.so: invalid ELF header

1 Ответ

0 голосов
/ 03 апреля 2019

Как следует из комментария @balderman, для запуска scrapy вам нужны нативные библиотеки.Это очень выполнимо, я постараюсь объяснить как можно проще.

Двоичные файлы для scrapy должны быть скомпилированы в той же среде, что и лямбда-экземпляр.Lambda загружается с помощью AWS Linux.

Вы можете либо загрузить EC2 под управлением AmazonLinux, либо использовать docker, проще всего загрузить загрузочный контейнер.

$ sudo docker run -it amazonlinux bash

Теперь вам нужноЗагрузите / распакуйте все .so файлы в каталог, затем заархивируйте его.Также убедитесь, что все .so файлы хранятся в папке с именем lib внутри zip.После архивирования он должен выглядеть примерно так:

.
├── lib
│   ├── libcrypto.so.10
│   ├── libcrypto.so.1.0.2k
│   ├── libfontconfig.so.1
│   ├── libfontconfig.so.1.7.0
.......

Затем вы можете просто сжать его и загрузить как слой.Он будет загружен в / opt / в вашем Lambda-контейнере.AWS ищет библиотечные файлы в / opt / lib среди многих других мест .

Сложной задачей для вас будет выяснить, как получить все необходимые файлы .so для scrapработать правильно.

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