问题描述
启用了X射线的我的lambda(Nodejs)坐在<body link="white" alink="yellow" vlink="orange">
<h1 class="rainbow-text" align="center"><u class="rainbow-text">Welcome!☻</u></h1>
<font color="white">
<hr>
<button onclick="switch(car)">Welcome</button>
后面。当它收到来自AWS Appsync
的请求时,上下文中将包含一个跟踪ID:
Appsync
此ID是在某处自动生成的。有没有办法让我使用其他跟踪ID?
事件传到我的lambda上有一个'x-amzn-trace-id': 'Root=1-5f4a4a2d-b94f96db34d41be1349080d2'
...
,我想将此ID用作trace-id。我该如何在lambda中做到这一点?
我的用例是如何在dynamodb,延迟应用程序,事件总线等上跟踪事件。例如,我的transactionId
向Dynamodb写入了一个项目,并且dynamodb流触发了3个lambda。这三个lambda以不同的方式处理事件。其中之一将事件发送到延迟系统,其中之一发送到事件总线。我想让他们在整个过程中使用相同的跟踪ID。
我可以遵循跟踪ID的要求。我的主要问题是如何将其通过不同的服务,应用程序等。
解决方法
lambda函数调用将生成一个跟踪ID,并自动为lambda函数创建一个Segment。该段是不可变的。如果您不是从一开始就使用X-Ray SDK生成的,则无法从lambda函数外部更改traceid。在lambda函数中,不建议更改跟踪ID,因为它可能会污染跟踪上下文。 AWS X-Ray跟踪ID必须遵循these requirements才能被接受。不知道您是否决定注入transactionId
,它会起作用。