Мы узнаем, как легко развернуть любое приложение 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

Ссылки

https://aws.amazon.com/blogs/machine-learning/how-to-deploy-deep-learning-models-with-aws-lambda-and-tensorflow/