python - 如何使用 X-Ray 和 SNS 获得一个大链而不是多个小链?
问题描述
我有一个链条(只是为了让事情更简单):
- Lambda1(发布者)
- 社交网络
- 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?还是有更简单的方法?
解决方案
文档中没有明确说明,但您必须使用相同的
from aws_xray_sdk.core
from aws_xray_sdk.core import patch_all
patch_all()
不仅在订阅者中,在发布者中也是如此。这对我有用。
推荐阅读
- git - 签出单个文件以保留历史记录
- python - 用于图像处理的 cython 嵌套循环
- oracle - 在应用程序设计器“指定的列名数量无效”上构建视图时出错
- javascript - 使用 pako 压缩文件,然后使用 HTML 表单上传
- python - 如何获得一个数字的中间5位数字
- mysql - 错误代码:1109。字段列表中的未知表“evrz.account”
- python - 我无法在 pyCharm 上安装任何软件包并出现错误:“连接被 'SSLError(SSLError(1,'[SSL: TLSV1_ALERT_ACCESS_DENIED]
- r - 用特定列的前一个字符替换 NA 在 R 中添加一些字母
- elasticsearch - 如何获取 ES 索引的每个术语的出现次数和 doc_count?
- latex - 如何在普通乳胶文档中添加 IEEE 样式部分?