AWS Lambda - функция в Python
В этой главе мы создадим простую функцию AWS Lambda на Python и разберемся с ее рабочими концепциями после подробностей.
Прежде чем приступить к созданию функции Lambda в AWS, нам понадобится поддержка инструментария AWS для Python. Для этого выполните шаги, указанные ниже, и просмотрите соответствующие приложенные скриншоты -
Шаг 1
Войдите в консоль AWS, создайте функцию Lambda и выберите язык как Python.

Шаг 2
Теперь нажмите Create functionи введите данные для создания простого AWS Lambda на Python. Этот код возвращает сообщениеHello from Lambda using Python и выглядит так, как показано здесь -

Шаг 3
Теперь сохраните изменения и протестируйте код, чтобы увидеть результат. Вы должны увидеть следующие выходные данные и журналы при тестировании в консоли AWS с помощью кнопки тестирования в пользовательском интерфейсе.

Шаг 4
Теперь вы можете писать код внутри любого редактора или IDE для Python. Здесь мы используем код Visual Studio для написания кода. Позже вам следует заархивировать файл и загрузить его в консоль AWS.

Здесь мы заархивировали код и использовали его в консоли AWS.
Шаг 5
Теперь выберите Upload a .ZIP file вариант, как показано ниже -

Детали обработчика для Python
Обратите внимание, что обработчик должен быть именем файла, за которым следует имя функции. В приведенном выше случае имя нашего файлаhellopython.py и имя функции my_handler; так что обработчик будет hellopython.my_handler.
После завершения загрузки и сохранения изменений подробные сведения о zip-файле отображаются в онлайн-редакторе консоли AWS Lambda. Теперь давайте протестируем код, чтобы увидеть вывод и журналы.

Теперь давайте разберемся с деталями функции Lambda, используя следующий пример кода -
def my_handler(event, context):
return "aws lambda in python using zip file"
В приведенном выше коде имя функции my_handler имеет 2 параметра: событие и контекст.
Объект контекста в Python
Объект контекста предоставляет такие детали, как имя лямбда-функции, оставшееся время в миллисекундах, идентификатор запроса, имя группы облачного наблюдения, детали тайм-аута и т. Д.
Методы и атрибуты, доступные для объекта контекста, показаны в таблицах, приведенных ниже -
Старший Нет | Название и описание метода |
---|---|
1 | get_remaining_time_in_millis() Этот метод дает оставшееся время в миллисекундах, пока лямбда-функция не завершит функцию. |
Старший Нет | Атрибут и описание |
---|---|
1 | function_name Это дает имя лямбда-функции aws |
2 | function_version Это дает версию лямбда-функции aws, выполняющую |
3 | invoked_function_arn Это даст подробную информацию о ARN. |
4 | memory_limit_in_mb Это показывает ограничение памяти, добавленное при создании лямбда-функции. |
5 | aws_request_id Это дает идентификатор запроса aws. |
6 | og_group_name Это даст имя группы cloudwatch. |
7 | log_stream_name Это даст имя потока журнала Cloudwatch, в который записываются журналы. |
8 | identity Это даст подробную информацию о поставщике идентификационных данных Amazon Cognito при использовании с aws mobile sdk. Приведены следующие подробности -
|
9 | client_context Это будет подробная информация о клиентском приложении при использовании с aws mobile sdk. Подробности приведены ниже -
|
Давайте посмотрим на рабочий пример на Python, который выводит детали контекста. Соблюдайте код, приведенный ниже -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
Соответствующий вывод кода, показанного выше, приведен ниже -

Ведение журнала с использованием Python
Чтобы регистрировать информацию с помощью Python, мы можем использовать доступную функцию печати или журнала. Давайте воспользуемся приведенным выше примером контекста и проверим в CloudWatch, печатаются ли журналы. Обратите внимание на следующий код -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
Вывод этого кода в CloudWatch показан ниже -

Посмотрите на следующий пример, чтобы понять, как использовать регистратор для печати журналов в CloudWatch:
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
logger.info('Using logger to print messages to cloudwatch logs')
return "aws lambda in python using zip file"
Результат для этого будет таким, как показано на скриншоте ниже -

Обработка ошибок в Python для лямбда-функции
В этом разделе давайте посмотрим на рабочий пример, который показывает, как обрабатывать ошибки в Python. Обратите внимание на приведенный здесь фрагмент кода -
def error_handler(event, context):
raise Exception('Error Occured!')

Отображение журнала показано на изображении здесь -
