Учебники

AWS Lambda — функция в Python

В этой главе мы создадим простую лямбда-функцию AWS в Python и разберемся с ее рабочими концепциями, следуя подробностям.

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

Шаг 1

Войдите в консоль AWS, создайте функцию Lambda и выберите язык Python.

Лямбда-функция Python

Шаг 2

Теперь нажмите кнопку Создать функцию и введите сведения для создания простой лямбда-AWS в Python. Этот код возвращает сообщение Hello от Lambda с использованием Python и выглядит так, как показано здесь —

Создать функцию Python

Шаг 3

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

AWS_console_Python

Шаг 4

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

IDE для Python.

Здесь мы заархивировали код и используем его консоль AWS.

Шаг 5

Теперь выберите вариант « Загрузить файл .ZIP», как показано ниже —

Загрузить файл

Детали обработчика для Python

Обратите внимание, что обработчик должен быть именем файла, за которым следует имя функции. В приведенном выше случае имя нашего файла — hellopython.py, а имя функции — my_handler; поэтому обработчик будет hellopython.my_handler .

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

Подробности обработчика Python

Теперь давайте разберемся в деталях функции 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. Подробности приведены ниже:

  • 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

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, как показано ниже —

Ведение журнала с использованием Python

Обратите внимание на следующий пример, чтобы понять, как использовать регистратор для печати журналов в 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"

Вывод для этого будет таким, как показано на скриншоте ниже:

Cloudwatch Python

Обработка ошибок в Python для лямбда-функции

В этом разделе давайте рассмотрим рабочий пример, который показывает, как обрабатывать ошибки в Python. Обратите внимание на фрагмент кода, приведенный здесь —

def error_handler(event, context):
   raise Exception('Error Occured!')

Обработка ошибок в Python

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