AWS Xray: Как проверить, открыт ли сегмент Xray? - PullRequest
0 голосов
/ 24 августа 2018

Для создания подсегмента aws-xray требует, чтобы был открыт действительный сегмент. По умолчанию удаленное лямбда-выполнение открывает сегмент для вас, и вам просто нужно добавить подсегмент, но при локальном запуске нам нужно открыть сегмент вручную перед добавлением подсегмента.

Я могу поместить вещи в блок try-Кроме того, чтобы инициировать подсегменты, только когда сегменты доступны, но есть ли метод, который проверяет, открыт ли сегмент.

Сейчас работаем с этим:

try:
  xray_recorder.current_segment()
except:
  xray_recorder.begin_segment(self.segment_name)

1 Ответ

0 голосов
/ 28 августа 2018

Нет метода, предназначенного для проверки, есть ли открытый сегмент / подсегмент или нет, но фрагмент кода, который вы разместили, определенно работает хорошо.

Лучший способ локально протестировать функцию Lambda - это имитировать поведение контейнера Lambda, чтобы ваша инструментальная функция Lambda вела себя точно так же как локально, так и в реальной Lambda.

Вы можете проверить исходный код здесь https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24. По существу, контейнер Lambda установит переменную среды LAMBDA_TASK_ROOT, поэтому SDK знает, что он «работает внутри Lambda» и создаст сегмент фасада на основе https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L94. Вы можете установить заголовок трассировки так, чтобы не отбирать какие-либо подсегменты, чтобы SDK не генерировал данные.

Это зависит от того, для чего предназначено ваше местное тестирование. Решение может варьироваться в зависимости от того, хотите ли вы заблокировать X-Ray SDK для проверки своей функции или хотите проверить аппаратуру X-Ray и должны видеть фактические данные на консоли X-Ray.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...