AWS Xray:如何检查 Xray 段是否打开?
AWS Xray: How to check if Xray Segment is open?
要创建子分段 aws-xray 需要打开有效分段。默认情况下,远程 lambda 执行会为您打开一个段,您只需添加一个子段,但在本地 运行 我们需要在添加子段之前手动打开段。
我可以将东西放在 try-except 块中以仅在段可用时启动子段,但是有没有任何方法可以检查段是否打开。
现在正在处理这个:
try:
xray_recorder.current_segment()
except:
xray_recorder.begin_segment(self.segment_name)
没有专门用于检查是否有打开的方法 segment/subsegment 但您发布的代码片段确实有效。
在本地测试 Lambda 函数的更好方法是模仿 Lambda 容器行为,这样您的检测 Lambda 函数在本地和实际 Lambda 中的行为完全相同。
您可以在此处查看源代码https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24. Basically the Lambda container will set environment variable LAMBDA_TASK_ROOT
so the SDK knows it is "running inside Lambda" and create the facade segment based on https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L94。您可以将跟踪 header 设置为不对任何子段进行采样,这样 SDK 就不会生成数据。
这取决于您本地测试的目的。解决方案可能会有所不同,具体取决于您是要存根 X-Ray SDK 来测试您的功能,还是要测试 X-Ray 工具并需要在 X-Ray 控制台上查看实际数据。
要创建子分段 aws-xray 需要打开有效分段。默认情况下,远程 lambda 执行会为您打开一个段,您只需添加一个子段,但在本地 运行 我们需要在添加子段之前手动打开段。
我可以将东西放在 try-except 块中以仅在段可用时启动子段,但是有没有任何方法可以检查段是否打开。
现在正在处理这个:
try:
xray_recorder.current_segment()
except:
xray_recorder.begin_segment(self.segment_name)
没有专门用于检查是否有打开的方法 segment/subsegment 但您发布的代码片段确实有效。
在本地测试 Lambda 函数的更好方法是模仿 Lambda 容器行为,这样您的检测 Lambda 函数在本地和实际 Lambda 中的行为完全相同。
您可以在此处查看源代码https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24. Basically the Lambda container will set environment variable LAMBDA_TASK_ROOT
so the SDK knows it is "running inside Lambda" and create the facade segment based on https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L94。您可以将跟踪 header 设置为不对任何子段进行采样,这样 SDK 就不会生成数据。
这取决于您本地测试的目的。解决方案可能会有所不同,具体取决于您是要存根 X-Ray SDK 来测试您的功能,还是要测试 X-Ray 工具并需要在 X-Ray 控制台上查看实际数据。