Обработчик запросов
Обработчик запросов — это метод, который используется для обработки каждого вызова функции. При создании версии функции необходимо указать точку входа, которая состоит из имени файла и имени обработчика запросов (например, main.handler
).
Примечание
В каждый момент времени один экземпляр функции обрабатывает только один запрос. Это позволяет использовать глобальные переменные без необходимости обеспечивать контроль целостности данных.
При вызове обработчика среда выполнения передает следующие аргументы:
-
Тело запроса (параметр
event
):- Если тело запроса — JSON-документ, то оно будет преобразовано в
dict
c помощью методаjson.loads
. - Если функция была вызвана с параметром строки запроса
integration=raw
, тело HTTP-запроса передается в функцию как есть, без обработки.
- Если тело запроса — JSON-документ, то оно будет преобразовано в
-
Контекст вызова (параметр
context
).Контекст содержит необходимую информацию о версии функции. Структура этого объекта описана в разделе Контекст вызова.
Виды обработчика
Функция может использовать как синхронный, так и асинхронный обработчик.
Синхронный обработчик
Чтобы вернуть результат выполнения, используйте оператор return
или сигнализируйте об исключении с помощью оператора raise
. Синхронная функция обязана возвращать результат или завершаться исключением.
Асинхронный обработчик
Обработчик может быть асинхронной функцией async def
. В этом случае вы можете использовать следующие операторы:
return
— возвращает ответ функции.raise
— сообщает среде выполнения об ошибке.await
— отслеживает выполнение вызова асинхронных функций.
Примечание
В качестве среды исполнения асинхронных функций поддерживается только библиотека asyncio
.
Подробнее о разработке с помощью async/await
читайте в соответстующем разделе документации.
Примеры
Вывод структуры HTTP-запроса
Следующая функция выводит структуру запроса и контекста вызова одновременно и в журнал выполнения, и в ответ функции:
import json
def handler(event, context):
return {
'statusCode': 200,
'body': json.dumps({
'event': event,
}),
}