Рубрики
Без рубрики

Начало работы с AWS Lambda и Python 2.7

Узнайте, как создать и развернуть свою первую Lambda-функцию Amazon Web Services (AWS) с помощью Python 2.7.

Автор оригинала: Matt Makai.

Amazon Web Services (AWS) Lambda это “бессерверная” вычислительная служба, которая выполняет произвольный код Python в ответ на определенные разработчиком события, такие как входящие вызовы API или файл загружает на AWS S3 . Обратите внимание, что AWS Lambda имеет ничего общего с ключевым словом lambda в Python, которое используется для создания анонимные функции, это просто название продукта, которое сталкивается с существующим именем функции языка Python.

В этом руководстве мы узнаем, как быстро написать и запустить Lambda. функция, которая выполняет простой код Python 2.7 и обрабатывает среду переменные. Затем код можно изменить для создания более сложных Приложения Python.

Инструменты, которые нам нужны

Нам не нужны какие-либо инструменты локальной среды разработки, чтобы пройти это пошаговое руководство, кроме веб-браузера, потому что вся работа будет происходит на AWS.

Получите новую учетную запись Amazon Web Services бесплатного уровня или используйте существующую учетную запись AWS.

Первые шаги с лямбдой

Направляйтесь к целевая страница AWS Lambda в вашем веб-браузер. Войдите в свою учетную запись или зарегистрируйте новую учетную запись, которая поставляется с уровнем бесплатного пользования, поэтому вам не нужно платить.

Целевая страница AWS Lambda.

Если вы не попадете прямо в Страница консоли Lambda после войдя в систему, вы увидите главную консоль. AWS имеет смехотворное количество услуги (которые, кажется, расширяются каждую неделю), так что лучший способ обойти состоит в том, чтобы выбрать текстовое поле поиска и выполнить поиск «лямбда», как показано в следующий снимок экрана.

Найдите лямбда-выражение в текстовом поле панели управления.

Нажмите кнопку «Создать лямбда-функцию», и вы увидите Страница “Выбрать чертеж”.

Лямбда-экран выбора чертежа, где вы должны выбрать Пустую функцию.

Выберите «Пустая функция». Следующий экран дает возможность выбрать «триггер», именно так выполняется лямбда-функция. Триггер какое-то событие, которое интегрировано с другими сервисами AWS и может быть раскрыто извне через API или устройство, такое как Alexa.

Настроить экран запуска, который мы пока не будем использовать, потому что мы вручную запускаем нашу лямбду.

Однако мы не собираемся настраивать триггер для этой функции, потому что мы можем вручную протестировать лямбду позже, прежде чем подключать ее к триггеру. Оставьте значок триггера пустым и нажмите кнопку «Далее», чтобы продолжить. к следующему экрану.

Пустой экран конфигурации Lambda.

Теперь мы на экране, где можем ввести нашу конкретную конфигурацию. и код для нашей новой лямбды.

Написание нашего кода Python

Начните с ввода имени вашей лямбда-функции, например my_first_python_lambda, и описания. Поле описания необязательно, но удобно когда вы начнете регулярно использовать Lambda, чтобы все ваши функции были в порядке. В раскрывающемся списке Runtime выберите Python 2.7 в качестве языка выполнения.

Введите имя, описание и выберите Python 2.7 на экране конфигурации Lambda.

Под раскрывающимся списком «Время выполнения» вы увидите большое текстовое поле для написания кода. Мы также можем загрузить ZIP-файл с помощью нашего приложения Python, которое удобен не только для простых тестовых лямбд. Однако для нашего простого стартера Лямбда-приложение, которое вы можете скопировать или ввести следующий код ( или скопируйте его из этого репозитория GitHub ). Обязательно замените то, что уже находится в текстовом поле.

import os


def lambda_handler(event, context):
    what_to_print = os.environ.get("what_to_print")
    how_many_times = int(os.environ.get("how_many_times"))

    # make sure what_to_print and how_many_times values exist
    if what_to_print and how_many_times > 0:
        for i in range(0, how_many_times):
            print(what_to_print)
        return what_to_print
    return None

В приведенном выше коде есть обязательное определение функции lambda_handler . который обеспечивает ловушку для службы Lambda, чтобы знать, где начать выполнение код Python. Думайте о lambda_handler как о функции main , когда вы используя эту услугу.

Наш код Python ожидает и читает две переменные среды, а затем код печатает сообщение от нуля до нескольких раз в зависимости от количества, определенного в переменная how_many_times . Если сообщение распечатано, функция возвращает строку what_to_print , если ничего не печатается, то None вернулся.

Чуть ниже текстового поля ввода кода находится пара “ключ-значение” переменной среды. пары, которые можно установить. Наш код будет использовать две переменные среды с именами what_to_print и how_many_times .

Введите ключи с именами what_to_print и how_many_times , затем введите их значения. Используйте строковое сообщение для значения what_to_print и целое число целое число больше 0 для how_many_times . Обработка ошибок нашего кода Python не очень надежен, поэтому значение, отличное от числа в how_many_times переменная приведет к тому, что скрипт выдаст ошибку при выполнении.

Введите точные ключи what_to_print и how_many_times вместе с соответствующими значениями в качестве переменных среды.

Наш код и переменные среды на месте, и нам просто нужно установить еще несколько настроек, специфичных для AWS, прежде чем мы сможем протестировать функцию Lambda.

Выполнение лямбды

Прокрутите вниз под переменными среды до Раздел «Обработчик и роль лямбда-функции». Этот раздел содержит последние несколько необходимых элементов конфигурации. Оставьте обработчик по умолчанию, который должен быть lambda_function.lambda_handler . Выбрать “Создать новую роль из шаблона (ов)” в раскрывающемся списке, затем для В поле «Имя роли» введите «Dynamodb_permissions». В разделе «Шаблоны политики» выберите «Простые разрешения микросервиса».

Для окончательной конфигурации оставьте обработчик по умолчанию, создайте новую роль из шаблона для разрешений Simple Microservice и сохраните ее под уникальным именем.

«Простые разрешения для микросервисов» предоставляют нашей Лямбде доступ к AWS DynamoDB . Мы не будем использовать DynamoDB в этот учебник, но он очень полезен как постоянный, так и временный хранилище при работе с Лямбдой.

Теперь, когда наш код и конфигурация готовы, нажмите кнопку «Далее». в правом нижнем углу страницы.

Мы можем просмотреть значения, установленные во время нашей конфигурации.

Экран обзора покажет нам наши настройки конфигурации. Прокрутить вниз вниз и нажмите кнопку «Создать функцию», чтобы продолжить.

Нажмите кнопку создания функции, чтобы продолжить.

Мы должны увидеть сообщение об успешном завершении на следующей странице чуть ниже Кнопка «Сохранить и проверить».

Сохранить и проверить кнопку.

Нажмите кнопку «Тест», чтобы выполнить лямбда. Лямбда подсказывает нам некоторые данные для имитации события, которое запустит нашу функцию. Выбрать образец шаблона события «Hello World», который содержит несколько примеров ключей. Наша Lambda не будет использовать эти ключи при выполнении, поэтому не имеет значения, что они есть. Нажмите кнопку «Сохранить и проверить» в нижней части модального окна.

Пример шаблона события для выполнения нашей лямбда-функции.

Прокрутите вниз до раздела «Результат выполнения», где мы можем увидеть наш результат.

Выполнение является результатом выполнения нашей лямбда-функции.

Мы получаем вывод журнала, который показывает нам возвращаемое значение нашей функции. В в данном случае это строковое сообщение от what_to_print . Мы также можем видеть ниже, наша функция печати производила вывод пять раз.

Что дальше?

Отлично, вы только что настроили, написали и выполнили свой первый Python 2.7. код на AWS Lambda! Настоящая сила Lambda проявляется, когда вы подключаете запускать его, чтобы ваш код выполнялся на основе событий. Мы посмотрим в следующем уроке.

Что еще можно делать с Python и Lambda? Взгляните на На странице AWS Lambda вы найдете больше примеров и руководств.

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .

Что-то не так с этим сообщением? Вилка исходный код этой страницы на GitHub .