Amazon Web Services (AWS) Lambda основан на использовании среда выполнения, которая может запускать код Python 3.6. Если у тебя никогда не было ранее использовали AWS Lambda, вы можете прочитать
Как создать свою первую лямбда-функцию AWS в Python 3.6. Тем не менее, это руководство даст вам каждый шаг, которому нужно следовать, даже если вы совершенно не знакомы с AWS.
В этом посте мы собираемся отслеживать код Python, работающий на AWS. Lambda с помощью размещенной службы мониторинга, Штанга.
Необходимые инструменты и код
Локальная среда разработки не является требуется для следования этому руководству. Вся работа будет происходить в сети браузер через Консоль AWS .
Пример кода можно скопировать и вставить из этого сообщения в блоге или вы можете получить к нему доступ на GitHub в разделе Примеры публикаций в блогах на Python репозиторий в каталог monitor-aws-lambda-python-3-6 .
Доступ к сервису AWS Lambda
Войдите в свою существующую учетную запись AWS или зарегистрируйте новую учетную запись . AWS Lambda поставляется с бесплатным уровнем, поэтому вы можете тестировать код и выполнять базовые приложения бесплатно.
AWS предлагает множество сервисов, поэтому используйте поле поиска, чтобы ввести “лямбда” и выберите “Лямбда”, когда появится соответствующий стартовая страница.
Нажмите кнопку «Создать функцию».
Выберите «Автор с нуля». Введите имя, чтобы вы могли легко узнать это функция для дальнейшего использования. Я выбрал «monitorPython3». Выберите «Python 3.6». для времени выполнения.
Выберите «Создать новую роль из шаблона (ов)», введите имя роли, например “basicEdgeLambdaRole”. Для шаблонов политики выберите «Basic Edge Lambda». Разрешения ».
Затем нажмите «Создать функцию».
Хорошо, наконец, мы пришли к экрану конфигурации, где мы можем написать наш код.
Кодирование функции Python
Прокрутите вниз до раздела пользовательского интерфейса «Код функции».
Вставьте или введите следующий код, заменив то, что уже есть в текстовое окно.
import os import rollbar ROLLBAR_KEY = os.getenv('ROLLBAR_SECRET_KEY', 'missing Rollbar secret key') rollbar.init(ROLLBAR_KEY, 'production') @rollbar.lambda_function def lambda_handler(event, context): message = os.getenv("message") print_count = int(os.getenv("print_count")) # check if message exists and how many times to print it if message and print_count > 0: for i in range(0, print_count): # formatted string literals are new in Python 3.6 print(f"message: {message}.") return print_count return None
Код содержит требуемую функцию lambda_handler
. lambda_handler
– это ловушка Lambda, с которой начать выполнение кода.
Код Python ожидает двух переменных среды, которые считываются модуль os
с функцией getenv
. сообщение
и Переменные print_count
устанавливаются переменными среды.
Под текстовым полем ввода кода на этом экране конфигурации функции есть – это раздел для установки пар “ключ-значение” переменной среды. Нам нужно ввести две переменные среды, а затем мы можем запустить наш код.
Введите ключи с именем message
со значением Hello World!
. потом введите print_count
в качестве второго ключа со значением 5
.
Обработка ошибок в нашем коде Python не является надежной. Значение, отличное от число в переменной print_count
заставит скрипт выбросить исключение, когда оно выполняется из-за принудительного преобразования print_count
через функцию int ()
. Мы будем использовать исключение, которое может произойти во время это принудительное приведение в качестве тривиального примера, показывающего, что происходит, когда ошибки в нашем коде происходят во время выполнения лямбда-функции.
Нажмите кнопку «Сохранить» в правом верхнем углу. Использовать значения по умолчанию тестового шаблона «Hello World» и назовите его «testHelloWorld». Нам не нужны никакие из этих значений для нашей функции.
Нажмите «Создать», и ваш тестовый шаблон будет создан. Теперь нажмите «Тест» для запуска функции. Вы должны увидеть «Результат выполнения: выполнено успешно». с пятикратной печатью переменной message
.
Теперь измените значение print_count
на не знаю
. Сохраните функцию и снова нажмите «Проверить». Функция завершится ошибкой.
Когда мы работаем в Консоли, очевидно, что ошибка просто произошло. Однако в большинстве случаев ошибка возникает время от времени. поэтому нам нужна система мониторинга, чтобы выявлять и сообщать по этим исключениям.
Мониторинг нашей лямбда-функции
Перейдите на главную страницу Rollbar получить бесплатную учетную запись и получить необходимую информацию, чтобы добавить свои размещенная служба мониторинга в нашем приложении Lambda.
Нажмите «Зарегистрироваться» в правом верхнем углу. Введите свой адрес электронной почты, имя пользователя и желаемый пароль.
После страницы регистрации вы увидите процесс адаптации, где вы можете введите название проекта и выберите язык программирования. Для проекта введите имя в “Full Stack Python”, а затем выберите, что вы отслеживаете приложение на основе Python.
Нажмите «Продолжить» внизу экрана. Следующий Страница показывает нам несколько инструкций о том, как добавить мониторинг.
Обратите внимание на токен доступа на стороне сервера, так как нам нужно будет его установить. в качестве переменной среды в AWS Lambda.
Теперь мы можем обновить нашу функцию Python, чтобы собирать и агрегировать ошибки, возникающие в нашем приложении. Добавьте следующее выделенное строк в ваш лямбда-код:
import os import rollbar ROLLBAR_KEY = os.getenv('ROLLBAR_SECRET_KEY', 'missing Rollbar secret key') rollbar.init(ROLLBAR_KEY, 'production') @rollbar.lambda_function def lambda_handler(event, context): message = os.getenv("message") print_count = int(os.getenv("print_count")) # check if message exists and how many times to print it if message and print_count > 0: for i in range(0, print_count): # formatted string literals are new in Python 3.6 print(f"message: {message}.") return print_count return None
Выделенные выше новые строки кода включают библиотеку Rollbar
. в наше приложение, установите ROLLBAR_KEY
с нашей переменной среды и используйте декоратор rollbar.lambda_function
, чтобы отловить все ошибки в наша функция lambda_handler
.
Добавьте следующую третью переменную среды с именем ROLLBAR_SECRET_KEY
это серверный токен из вашего нового проекта Rollbar.
Есть только одна проблема с этой функцией в Lambda в ее нынешнем виде: есть Lambda никак не может узнать о коде пакета Rollbar. Внешний Rollbar необходимо включить зависимость. Есть несколько способов справиться с выпуск:
Я предоставил готовый zip-файл, чтобы сэкономить время в этом руководстве, поэтому попробуйте это сейчас, чтобы мы могли увидеть окончательные результаты. В разделе «Код функции» измените «Тип ввода кода» от «Редактировать код в строке» до «Загрузить файл .ZIP». Нажмите кнопку «Загрузить» в разделе «Пакет функций».
Нажмите кнопку «Сохранить» вверху. С нашим новым кодом мы теперь можем видеть, Rollbar фиксирует исключения и сообщает о них. Нажмите кнопку “Сохранить” и затем «Тест».
Функция завершится ошибкой, как и ожидалось. Если мы перейдем на нашу Rollbar дашборд и обновляем страницу, мы видим исключения.
Теперь мы можем отслеживать исключения Lambda для многих функций независимо от от того, как часто они работают.
Что дальше?
Мы просто написали и выполнили функцию Python 3.6 на AWS Lambda, а затем записали сообщение об исключении в наши журналы Rollbar. Теперь вы можете продолжайте создавать свой код Python, зная, что когда что-то идет не так, вы будете иметь полную картину того, что произошло.
Ознакомьтесь с разделом AWS Lambda для больше руководств других разработчиков.
Дальнейшие вопросы? Свяжитесь со мной в Твиттере @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .
Что-то не так с этим сообщением? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос.