4

要创建子分段 aws-xray 需要打开有效分段。默认情况下,远程 lambda 执行会为您打开一个段,您只需添加一个子段,但是在本地运行时,我们需要在添加子段之前手动打开段。

我可以将东西放在 try-except 块中以仅在段可用时启动子段,但是是否有任何方法可以检查段是否打开。

现在正在处理这个:

try:
  xray_recorder.current_segment()
except:
  xray_recorder.begin_segment(self.segment_name)
4

1 回答 1

3

没有专门用于检查是否存在开放段/子段的方法,但您发布的代码片段肯定运行良好。

在本地测试 Lambda 函数的更好方法是模拟 Lambda 容器行为,以便您的检测 Lambda 函数在本地和实际 Lambda 中的行为完全相同。

您可以在此处查看源代码https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24。基本上,Lambda 容器将设置环境变量LAMBDA_TASK_ROOT,以便 SDK 知道它“在 Lambda 内运行”并基于https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/创建外观段核心/lambda_launcher.py#L94。您可以将跟踪标头设置为不对任何子分段进行采样,这样 SDK 就不会生成数据。

这取决于您本地测试的用途。解决方案可能会有所不同,具体取决于您是要存根 X-Ray SDK 来测试您的功能,还是要测试 X-Ray 仪器并需要在 X-Ray 控制台上查看实际数据。

于 2018-08-27T21:54:41.667 回答