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. Приведены следующие подробности -

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

Это будет подробная информация о клиентском приложении при использовании с aws mobile sdk. Подробности приведены ниже -

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom - в нем есть пользовательские значения из мобильного клиентского приложения
  • client_context.env - содержит сведения о среде из 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!')

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