首页 > 解决方案 > 如何使用 X-Ray 和 SNS 获得一个大链而不是多个小链?

问题描述

我有一个链条(只是为了让事情更简单):

  1. Lambda1(发布者)
  2. 社交网络
  3. Lambda2(订阅者)

两个 lambda 都启用了 X-Ray,它们在 X-Ray 控制台中显示为两个独立的链,每个链包含“clients=>AWS::Lambda=>AWS::Lambda::Function”。如何将它们加入一个链?在这里,我看到“对于启用了主动跟踪的 Lambda 订阅者,Lambda 记录一个包含函数调用详细信息的段,并将其发送到发布者的跟踪”。从我在 X-Ray 控制台中看到的情况来看,我的设置并不适用。

我尝试在 Lambda2 中使用 SDK for python,如下所示:

from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all

patch_all()
def lambda_handler(event, context):
   ... some code

我确实在此函数的跟踪中看到了 SUBsegments,我可以创建并查看另一个 SUBsegments,但此函数的主要部分仍未连接到发布者。

我究竟做错了什么?是否可以将 xray_recorder 配置为使用我通过 SNS 从 Lambda1 传递的 xray_trace_id?还是有更简单的方法?

标签: pythonamazon-web-servicesaws-lambdaaws-xray

解决方案


文档中没有明确说明,但您必须使用相同的

from aws_xray_sdk.core 
from aws_xray_sdk.core import patch_all
patch_all()

不仅在订阅者中,在发布者中也是如此。这对我有用。


推荐阅读