Почему моя библиотека zbar не загружается в Amazon Lambda? Докер, Заппа

Я пытаюсь развернуть приложение Django в Amazon Lambda через Zappa. Приложение использует pyzbar, для которого есть требование zbar или libzabar0. В моем Dockerfile я устанавливаю библиотеку zbar, и в локальном файле docker мой код работает правильно. Однако, когда я делаю zappa update dev, он выдает ошибку, что не может найти зависимость zbar. ImportError: Unable to find zbar shared library

Я осмотрелся и следую этому руководству: https://blog.zappa.io/posts/docker-zappa-and-python3. Я добавил зависимость в Dockerfile (см. ниже) и сказал, что она работает правильно. Я также пытался развернуть zappa в указанном выше каталоге (/var/), но затем zappa жалуется, что zip-файл слишком велик.

Докерфайл

FROM lambci/lambda:build-python3.6

LABEL maintainer='me'

WORKDIR /var/task

# Fancy prompt to remind you are in zappashell
RUN echo 'export PS1="\[\e[36m\]zappashell>\[\e[m\] "' >> /root/.bashrc

# Add your extra requirements here e.g. postgres-devel 
# RUN yum install -y yourpackages

RUN yum clean all && \
    yum -y install zbar zbar-devel

CMD ["zappa"]

Настройки Заппы

{
    "dev": {
        "django_settings": "library.settings",
        "profile_name": null,
        "project_name": "backend",
        "runtime": "python3.6",
        "s3_bucket": "bucket"
    }
}

Команда запуска докера: docker run -ti --env .env -v "%cd%":/var/task -v ~/.aws/:/root/.aws -p "8000:8000" library bash

Моя цель — загрузить его в Amazon Lambda и обеспечить правильную работу библиотеки zbar. Однако я получаю сообщение об ошибке ImportError: ImportError: Unable to find zbar shared library.

Любая идея, как я могу это исправить?


person Anton De Meester    schedule 30.03.2019    source источник
comment
Lambda не будет иметь вашего локального исходного дерева и не будет запускать интерактивную оболочку. Вы можете сделать команду docker run более похожей на то, что вы на самом деле будете запускать в Lambda, что, вероятно, означает COPYвключение вашего локального дерева в образ Docker.   -  person David Maze    schedule 30.03.2019


Ответы (1)


Вы можете использовать пакет python pip отсюда: https://pypi.org/project/zbar/

Добавьте zbar к вашим требованиям.txt. Затем он будет установлен и загружен в виртуальную среду Python:

активируйте свой virtualenv в контейнере докеров:

source /var/task/venv/bin/activate

установите библиотеки Python, определенные в файле requirements.txt:

pip install -r requirements.txt
person Rene B.    schedule 17.06.2019