Как я могу изменить идентификатор трассировки в лямбде для рентгеновского снимка?

Моя лямбда (Nodejs) сидит за AWS Appsync с включенным рентгеновским лучом. Когда он получает запрос от Appsync, в контексте есть идентификатор трассировки:

'x-amzn-trace-id': 'Root=1-5f4a4a2d-b94f96db34d41be1349080d2'
...

Этот идентификатор генерируется где-то автоматически. Есть ли способ использовать другой идентификатор трассировки? Событие приходит к моей лямбде с transactionId, и я хотел бы использовать этот идентификатор в качестве идентификатора трассировки. Как я могу сделать это в лямбде?

Мой пример использования для этого - как отслеживать событие через Dynamodb, приложение с задержкой, шину событий и т. Д. Например, мой lambdaA записывает элемент в Dynamodb, и потоком Dynamodb запускаются 3 лямбда-выражения. И эти три лямбды обрабатывают событие по-разному. Один из них отправляет событие в систему задержки, один из них отправляет на шину событий. Я бы хотел, чтобы они использовали один и тот же идентификатор трассировки во всем процессе.

Я могу следовать требованиям к идентификатору трассировки. Мой главный вопрос - как передать это через разные сервисы, приложения и т. Д.


person Joey Yi Zhao    schedule 29.08.2020    source источник
comment
Вы не должны изменять идентификатор трассировки. Его назначает первая служба, обрабатывающая событие, для которой включен X-Ray. Зачем вам все равно это менять?   -  person Dunedan    schedule 29.08.2020
comment
В вопросе я указал свой вариант использования.   -  person Joey Yi Zhao    schedule 30.08.2020


Ответы (1)


Вызов лямбда-функции генерирует идентификатор трассировки и автоматически создает сегмент для лямбда-функции. Этот сегмент неизменен. Невозможно изменить traceid извне лямбда-функции, если вы не генерируете его с самого начала с помощью X-Ray SDK. Изнутри лямбда-функции изменять идентификатор трассировки не рекомендуется, так как это может привести к загрязнению контекста трассировки. Идентификатор трассировки AWS X-Ray должен соответствовать эти требования. Не уверен, что если вы решите ввести transactionId, это сработает.

person Prashant Srivastava    schedule 29.08.2020
comment
Я могу следовать требованиям для этого. Если я не могу изменить идентификатор трассировки, могу ли я сохранить его через сервисы различий? В вопросе я указал свой вариант использования. - person Joey Yi Zhao; 30.08.2020
comment
X-Ray пока не поддерживает распространение идентификатора трассировки в потоках DDB, поэтому у пользовательских лямбда-выражений трассировка будет отключена. К сожалению, обходного пути нет. Если вы можете каким-то образом передать transactionId через потоки DDB в 3 лямбда-выражения, вы можете затем установить его как аннотацию для сегмента лямбда (docs.aws.amazon.com/xray/latest/devguide/). Затем в консоли X-Ray вы сможете искать следы с этим значением аннотации. - person Prashant Srivastava; 31.08.2020
comment
Поместите его в аннотацию, действительно, не связывает трассировку как отношения между партией и потомком, верно? - person Joey Yi Zhao; 01.09.2020