Мы узнаем, как легко развернуть любое приложение Python3 на лямбда-выражении AWS без необходимости изменять какой-либо код или даже заходить в лямбда-консоль.
Предлагаемая нами архитектура.
- Python 3. Популярный язык программирования для специалистов по данным.
- Колба. Микро-веб-фреймворк, который работает с небольшими зависимостями и библиотеками.
- OpenAPI 2.0, ранее известный как Swagger 2.0.
- Заландо Связь. автоматически обрабатывает маршруты, запросы и проверку ответов из определения OpenAPI.
- Докер. Помогает нам
cd micro-python Start by downloading our boilerplate code application from github
Встречайте Микропитона. Легкий микросервис API, предназначенный для простого развертывания, исходный код которого открыт.
Найдите исходный код здесь.
git clone https://github.com/BrainrexAPI/micropython.git
Создайте виртуальную среду.
cd micro-python virtualenv -m venv myenv source venv/bin/activate
Запустите приложение локально, чтобы убедиться, что все работает.
pip install -r requirements.txt python app.py
Откройте http://0.0.0.0:5000/ui в веб-браузере, и вы должны увидеть это:
Теперь давайте выполним развертывание в Lambda, если вы не настроили свои учетные данные локально. Это быстрый способ сделать это. Во-первых, пройти аутентификацию. Для простоты этого урока мы будем использовать очень разрешительные разрешения (НЕ используйте эти настройки в рабочей среде).
- Перейдите в раздел Консоль> IAM> Пользователи> Учетные данные безопасности> Ключи доступа.
- Скачать ключи доступа в формате CSV
aws configure export AWS_DEFAULT_REGION=us-west-2 export AWS_PROFILE=default
Создайте свой образ Docker из Dockerfile.
$ docker build -t myimage .
Теперь мы создаем псевдоним для лучшего повторного использования. Эта команда запускает образ Docker, используя ваш AWS_PROFILE в качестве аргумента. Затем он использует образ докера, который вы только что вытащили.
alias micropyshell='docker run -ti -e AWS_PROFILE=zappa -v $(pwd):/var/task -v ~/.aws/:/root/.aws --rm myimage'
Добавьте псевдоним в свой bash_profile, чтобы иметь возможность запускать команду.
alias micropyshell >> ~/.bash_profile
Запустите только что созданную команду. Это запустит образ докера с вашей конфигурацией AWS. Внутри этого образа мы сохраним наши зависимости и выполним развертывание в Lambda с помощью Zappa.
micropyshell
Теперь вы должны оказаться внутри оболочки контейнера докера.
micropyshell>
Давайте создадим виртуальную среду внутри контейнера.
virtualenv venv source venv/bin/activate
Установите любой пакет Python внутри ваших контейнеров докеров.
pip install -r requirements.txt
Разверните свои сервисы в Lambda. После того, как вы нажмете это, вот что произойдет после сцен.
Из документов Заппы. Кредит: https://github.com/Miserlou/Zappa
zappa deploy dev
После того, как вам должен быть предоставлен URL-адрес шлюза API, подобный этому
Исправление проблем
Не удается найти файл конфигурации
botocore.exceptions.ProfileNotFound: профиль конфигурации (по умолчанию) не найден
- 502. Это может быть ошибка при запуске вашей программы на Python
Хвост Заппы, чтобы увидеть ваши журналы.
Вы также можете просмотреть свои журналы в Cloudwatch, перейдя на шлюз API.
- 500
"slim_handler": true, "memory_size": 3008,
- Проблемы с библиотекой NLTK.
Решение: https://stackoverflow.com/questions/42382662/using-nltk-corpora-with-aws-lambda-functions-in-python
Создайте переменную среды в консоли Lambda.
- Вы используете Python 2.7. Это не будет работать. Проверьте
питон
Вот странный случай. Для вашего пакета требуется GPU
- изThink.neural.util импортаPrefer_gpu, require_gpu
- Ответ: https://stackoverflow.com/questions/49186886/spacy-throws-oserror-when-deployed-to-aws-lambda-using-zappa
Ссылки