В этой главе мы создадим простую лямбда-функцию AWS в Python и разберемся с ее рабочими концепциями, следуя подробностям.
Прежде чем приступить к работе по созданию функции Lambda в AWS, нам потребуется поддержка инструментария AWS для Python. Для этого выполните шаги, приведенные ниже, и просмотрите соответствующие скриншоты, которые прилагаются —
Шаг 1
Войдите в консоль AWS, создайте функцию Lambda и выберите язык Python.
Шаг 2
Теперь нажмите кнопку Создать функцию и введите сведения для создания простой лямбда-AWS в Python. Этот код возвращает сообщение Hello от Lambda с использованием Python и выглядит так, как показано здесь —
Шаг 3
Теперь сохраните изменения и протестируйте код, чтобы увидеть результат. При тестировании в консоли AWS с помощью кнопки тестирования в пользовательском интерфейсе вы должны увидеть следующие выходные данные и журналы.
Шаг 4
Теперь вы можете написать код внутри любого редактора или IDE для Python. Здесь мы используем визуальный студийный код для написания кода. Позже вам следует заархивировать файл и загрузить его в консоль AWS.
Здесь мы заархивировали код и используем его консоль AWS.
Шаг 5
Теперь выберите вариант « Загрузить файл .ZIP», как показано ниже —
Детали обработчика для 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
Объект контекста предоставляет такие детали, как имя лямбда-функции, оставшееся время в миллисекундах, идентификатор запроса, имя группы наблюдения за облаком, сведения о тайм-ауте и т. Д.
Методы и атрибуты, доступные для объекта контекста, показаны в таблицах, приведенных ниже —
Sr.No | Название и описание метода |
---|---|
1 |
get_remaining_time_in_millis () Этот метод дает оставшееся время в миллисекундах, пока лямбда-функция не завершит функцию |
get_remaining_time_in_millis ()
Этот метод дает оставшееся время в миллисекундах, пока лямбда-функция не завершит функцию
Sr.No | Атрибут и описание |
---|---|
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 |
идентичность Это даст подробную информацию о Amazon Cognito провайдера идентификации при использовании с AWS Mobile SDK. Подробности приведены ниже:
|
9 |
client_context Это будет подробная информация о клиентском приложении при использовании с AWS Mobile SDK. Детали приведены ниже:
|
function_name
Это дает имя лямбда-функции aws
function_version
Это дает версию выполнения лямбда-функции aws
invoked_function_arn
Это даст ARN детали.
memory_limit_in_mb
Это показывает ограничение памяти, добавленное при создании лямбда-функции
aws_request_id
Это дает идентификатор запроса aws.
og_group_name
Это даст название имени группы CloudWatch
log_stream_name
Это даст имя имени потока журнала cloudwatch, в котором записываются журналы.
идентичность
Это даст подробную информацию о Amazon Cognito провайдера идентификации при использовании с AWS Mobile SDK. Подробности приведены ниже:
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 мы можем использовать функцию печати или регистрации. Давайте используем приведенный выше пример контекста и проверим inCloudWatch, чтобы увидеть, распечатаны ли журналы. Соблюдайте следующий код —
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!')
Отображение журнала, как показано на рисунке здесь —