AWS Xray:如何检查Xray段是否打开?

时间:2018-08-24 10:48:46

标签: python aws-lambda aws-xray

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

仅当段可用时,我才可以将其放入try-except块中以启动子段,但是有什么方法可以检查段是否打开。

现在与此配合使用:

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

1 个答案:

答案 0 :(得分:2)

没有专门的方法来检查是否存在一个开放的段/子段,但是您发布的代码段肯定能很好地工作。

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

您可以在https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24处检查源代码。基本上,Lambda容器将设置环境变量Time.now.round_to_closest(increment_in_min: 15),因此SDK知道它是“在Lambda内部运行”,并基于https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L94创建立面线段。您可以将跟踪头设置为不对任何子段进行采样,以使SDK不会生成数据。

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