У меня есть приложение Flask, работающее как функция AWS Lambda, развернутая с Zappa, и я хотел бы активировать X-Ray, чтобы получить дополнительную информацию о различных функциях.
Активировать X-Ray с помощью Zappa было достаточно просто - для этого достаточно добавить эту строку в zappa-settings.json:
"xray_tracing": true
Кроме того, я установил AWS X-Ray Python SDK и добавил несколько декораторов в некоторые функции, например:
@xray_recorder.capture()
Когда я развертываю это как функцию Lambda, все работает хорошо. Проблема заключается в использовании системы локально, как при запуске тестов, так и при запуске Flask на локальном сервере, а не в качестве лямбда-функции.
Когда я использую любую из функций, оформленных либо в тесте, либо через локальный сервер, возникает следующее исключение:
aws_xray_sdk.core.exceptions.exceptions.SegmentNotFoundException: cannot find the current segment/subsegment, please make sure you have a segment open
Что, конечно, имеет смысл, потому что AWS Lambda занимается созданием сегментов.
Есть ли хорошие способы отключить локальный захват? Это было бы полезно, например, для локального запуска модульных тестов функций, которые я хотел бы наблюдать в X-Ray.