如何使用 AWS Xray 跨多个 lambda 和 SQS 连接跟踪

How to use AWS Xray to connect traces across multiple lambda and SQS

我们正在尝试使用 AWS Xray 通过多项服务来跟踪事件。我们通过复选框在 lambda 中启用了 Xray,并添加了 python (v2) SDK。这为我们提供了每个 lambda 的良好信息,但它们没有关联。这是我们的模型:

  1. 事件点击 SNS
  2. 触发 Lambda 以预处理写入 SQS
  3. SQS 中的事件
  4. 另一个 Lambda 获取事件并处理,写入另一个 SNS

我们可以通过 patch_all() 看到 python 正在调用的 python 库。

我希望看到端到端的连接,但我不知道如何关联这些组件。现在我们将 Lambda 视为独立的部分,与 SQS 无关。

目前 X-Ray 不支持上述用例并积极致力于此。目前我们无法分享 ETA 何时可用。

详情请看 https://forums.aws.amazon.com/thread.jspa?messageID=873142&#873142

虽然 Rusty 正确地说它目前不受官方支持,但您可以通过在 Lambda 函数内创建一个新的 AWS-Xray 段并使用来自 SQS 消息的传入 TraceID 自行解决此问题。这将为您的 lambda 调用生成两个段。一种是 Lambda 自己创建的,另一种是您创建的以扩展现有跟踪。这对于您的用例是否可以接受是您必须自己决定的事情!

如果您使用 Python,您可以使用 aws-xray-lambda-segment-shim
如果你正在使用 NodeJS,你可以关注 this guide on dev.to.
如果您使用的是 .NET,那么这里有一些示例 GitHub issue