如何找到我的 lambda 所在的跟踪 ID?

问题描述

我希望能够在日志中轻松找到我的 lambda 执行的跟踪 ID(和段 ID)。

我意识到这在 lambda 自动执行的 REPORT 日志中可用,但该日志不适合我用于索引和聚合的自定义格式。这意味着从有关错误的日志中获取跟踪 ID 很麻烦。

有没有办法从 lambda 内部访问跟踪 ID(和段 ID)?看起来它不在传递给处理程序的上下文中,我在 XRay SDK 中看不到我需要什么。我看到有关于更改跟踪 ID 的问题,但我不想这样做 - 只需找出它是什么,以便我可以将其添加到我的所有日​​志中。

我使用的是 C# .NET lambdas,尽管这可能并不重要。

谢谢!

解决方法

在您的 Lambda 中设置了一个包含跟踪 ID 的环境变量:

_X_AMZN_TRACE_ID

所以你只需要在你的代码中读取那个环境变量:

string traceId = Environment.GetEnvironmentVariable("_X_AMZN_TRACE_ID");

来源:AWS Documentation