如何更改X射线的lambda中的跟踪ID?

问题描述

启用了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,它会起作用。