如何将 X-Ray 与 SNS 一起使用以获得一个大链而不是许多小链?
How to use X-Ray with SNS to get one big chain instead of many small?
我有一个链条(只是为了让事情更简单):
- Lambda1(发布者)
- 社交网络
- Lambda2(订阅者)
两个 lambda 都启用了 X-Ray,它们在 X-Ray 控制台上显示为两个单独的链,每个链包含 "clients=>AWS::Lambda=>AWS::Lambda::Function"。如何将它们加入一个链? Here 我明白了 "For Lambda subscribers with active tracing enabled, Lambda records a segment with details about the function invocation, and sends it to the publisher's trace"。从我在 X-Ray 控制台中看到的情况来看,我的设置并不正确。
我尝试在 Lambda2 中为 python 使用 SDK,如下所示:
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 以使用 xray_trace_id 我通过 SNS 从 Lambda1 传递?或者有更简单的方法吗?
文档中没有明确说明,但你必须使用相同的
from aws_xray_sdk.core
from aws_xray_sdk.core import patch_all
patch_all()
不仅在订阅者中,在发布者中也是如此。这对我有用。
我有一个链条(只是为了让事情更简单):
- Lambda1(发布者)
- 社交网络
- Lambda2(订阅者)
两个 lambda 都启用了 X-Ray,它们在 X-Ray 控制台上显示为两个单独的链,每个链包含 "clients=>AWS::Lambda=>AWS::Lambda::Function"。如何将它们加入一个链? Here 我明白了 "For Lambda subscribers with active tracing enabled, Lambda records a segment with details about the function invocation, and sends it to the publisher's trace"。从我在 X-Ray 控制台中看到的情况来看,我的设置并不正确。
我尝试在 Lambda2 中为 python 使用 SDK,如下所示:
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 以使用 xray_trace_id 我通过 SNS 从 Lambda1 传递?或者有更简单的方法吗?
文档中没有明确说明,但你必须使用相同的
from aws_xray_sdk.core
from aws_xray_sdk.core import patch_all
patch_all()
不仅在订阅者中,在发布者中也是如此。这对我有用。