Явная установка requestId для разных лямбда-функций

Я пытаюсь создать бессерверное приложение, используя интеграцию функций AWS APIGateway / Lambda.

У меня следующая установка:

  * Two APIGateway resources. Calling them service A and service B for now.
  * Two Lambda functions which act the the backend, responsible for processing the requests from APIGateway. Calling them LambdaFunction A and LambdaFunction B for now. 


ServiceA -> LambdaFunctionA
ServiceB -> LambdaFunctionB

ServiceA->ServiceB

Теперь, согласно настройке serviceA, можно позвонить в ServiceB. Я хотел бы отследить запрос, исходящий от serviceA к serviceB. Один из способов, которым я думал это сделать, - это requestIds. Я пытался увидеть, есть ли какой-то конкретный способ сохранить / явно предоставить requestIds, когда serviceA вызывает serviceB? Я просмотрел документацию AWS и не смог найти здесь какого-либо конкретного механизма.

Другой альтернативой, которая у меня была, была интеграция моих лямбда-функций с Xray, а затем, возможно, передача requestId в контекстной карте / трассировке Xray. Я сомневаюсь, что я первый, кто пытается отслеживать запросы по нескольким функциям Lambda, и думал, что механизм для этого уже существует. Любая помощь будет принята с благодарностью!


person chrisrhyno2003    schedule 27.03.2019    source источник
comment
вы изучали пошаговые функции? Я бы представил, что они предоставляют именно то, что вы хотите, отслеживая шаги, вызывающие каждую лямбда-функцию.   -  person Gaz_Edge    schedule 27.03.2019


Ответы (1)


AWS X-Ray уже использует идентификаторы трассировки, которые используются для распространения контекста по двум ресурсам в вашем случае servicea и serviceb. Для API Gateway и Lambda распространение контекста для идентификатора трассировки является автоматическим, если у вас включен X-Ray на шлюзе api точки входа или лямбда. Идентификатор трассировки, созданный для вас X-Ray SDK в API Gateway или лямбда-выражении, используется для однозначной идентификации запроса. Если у вас есть собственный идентификатор запроса, вы можете дополнительно добавить его в сегменты рентгеновского снимка в качестве аннотаций.

person Rohit Banga    schedule 27.03.2019
comment
Спасибо за ваш ответ. Что касается журналов трассировки, я не уверен, можно ли сопоставить идентификаторы X-Ray трассировки с requestIds / или каким-то идентификатором в журналах CloudWatch. У вас есть какие-нибудь рекомендации? - person chrisrhyno2003; 27.03.2019
comment
Я думаю, что идентификатор трассировки должен появиться в журналах cloudwatch для выполнения вашей лямбда-функции. Вы можете дополнительно указать пользовательский идентификатор запроса, если хотите, в своей аннотации. - person Rohit Banga; 27.03.2019
comment
О, я вижу. Я не знал, что идентификаторы трассировки Xray печатаются в журналах CloudWatch для выполнения моей функции Lambda. Спасибо за внимание. Я займусь этим. - person chrisrhyno2003; 27.03.2019