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

Как создать свою первую лямбда-функцию AWS в Python 3.6

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

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

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

AWS Lambdas не связаны с выражениями lambda языков Python, которые используются для создания анонимных функций. Название AWS Lambda просто сталкивается с именем ключевого слова lambda .

Давайте узнаем, как быстро написать и запустить лямбда-функцию для выполнения базовый код Python 3.6, который использует в качестве входных данных переменные среды. Этот код, который также доступен на GitHub в репозитории сообщений блога , можно изменены, чтобы вы могли создавать гораздо более сложные программы на Python.

Наши инструменты

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

Эти шаги также можно выполнить из командной строки через boto3 , но мы не будем расскажите об этом в этом посте.

Если использование Python 2 по-прежнему является вашей проблемой, а не Python 3, взгляните на этот другой пост, в котором показано, как выполнить код Python 2.7 на AWS Lambda.

Первые шаги с AWS Lambda

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

AWS Lambda: посадка и экран входа в систему.

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

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

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

Экран Select Blueprint Lambda.

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

Настроить экран лямбда-триггера.

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

Экран конфигурации Lambda.

Затем мы переходим к экрану «Настроить функцию», где, наконец, можем написать какой-то код!

Код Python для нашей лямбда-функции

Введите имя лямбда-функции, например “python_3_6_lambda_test”, а также описание. Описание необязательно, но полезно когда у вас есть десятки или сотни различных лямбда-функций и нужно держать их прямо. В раскрывающемся списке Runtime выберите Python 3.6 для язык программирования.

Введите имя, описание и используйте Python 3.6 для Lambda.

Под раскрывающимся списком Runtime есть большое текстовое поле для кода, предварительно заполнен определением функции lambda_handler . В Раскрывающийся список “Тип ввода кода” также можно изменить, чтобы разрешить загрузку ZIP-файла. файл или ввод файла из корзины S3. Для нашего простого первого Лямбда-функцию мы будем придерживаться опции «Редактировать код inline». Скопируйте или введите в следующем коде, заменяя то, что уже находится в текстовом поле. Этот код также доступен в этом репозитории 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):
            # formatted string literals are new in Python 3.6
            print(f"what_to_print: {what_to_print}.")
        return what_to_print
    return None

Приведенный выше код содержит обязательную функцию lambda_handler , которая является Хук, определенный AWS Lambda, поэтому он знает, с чего начать выполнение. Думать о lambda_handler в качестве функции main , как
if __name__ == "__main__": условная строка, обычно используемая в файлах Python чтобы гарантировать выполнение блока кода при запуске сценария из командная строка.

Код Python ожидает двух переменных среды, которые считываются Модуль os с функцией Environment.get . С помощью what_to_print и how_many_times переменные, установленные переменными среды, затем наш код печатает сообщение ноль или более раз в зависимости от количества, определенного в переменная how_many_times . Если сообщение напечатано хотя бы один раз, то функция возвращает строку what_to_print , если ничего не напечатано тогда возвращается None .

Под текстовым полем ввода кода на этом экране конфигурации функции есть – это раздел для установки пар “ключ-значение” переменной среды.

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

Раздел для установки переменных среды для лямбда-функции.

Код Python 3.6 и переменные среды теперь на месте. Мы просто нужно обработать еще несколько специфичных для AWS настроек, прежде чем мы сможем протестировать Лямбда-функция.

Выполнение нашей лямбда-функции

Прокрутите переменные среды до Раздел “Обработчик и роль лямбда-функции”, который содержит еще несколько необходимые элементы конфигурации функции.

Оставьте для обработчика по умолчанию значение lambda_function.lambda_handler . Выбрать “Создать новую роль из шаблона (ов)” в раскрывающемся списке, затем для В поле «Имя роли» введите «Dynamodb_access». В разделе «Шаблоны политики» выберите «Простые разрешения микросервиса».

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

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

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

Просмотрите конфигурацию Lambda.

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

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

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

Тестовая кнопка на экране выполнения.

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

Образец шаблона события для выполнения Lambda.

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

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

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

Следующие шаги

Вы только что настроили, закодировали и выполнили свой первый Python 3.6 AWS Lambda. функция! Настоящая сила Lambda проявляется, когда вы используете триггеры для ваша лямбда-функция, чтобы она выполнялась в зависимости от происходящих событий. Мы рассмотрим это в следующем уроке.

Просмотрите страницу AWS Lambda Full Stack Python для получения дополнительных примеры и руководства, которыми другие люди поделились для Lambda с Python.

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

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