我使用最新的稳定aws_xray_sdk用Python3.6编写了一个AWS,并将其部署为Lambda函数,而不是作为一个API网关端点。
但是,一切都如期而至,但是,我已经为我的lambda创建了一个自定义异常处理程序,因此如果出现异常,就会记录错误,并将错误响应发送给调用方,而不仅仅是return false。
是否有方法将我当前的aws x射线子段标记为错误?我发现subsegment对象有一个apply_status_code方法,但是这似乎也没有达到我所期望的效果。
def unhandled_exception(e, event: LambdaDict, context: LambdaContext):
logging.exception(e)
logging.error(f"""Event: {str(event)}
Context: {str(dict(context))}""")
sub_segment = xray_recorder.current_subsegment()
sub_segment.apply_status_code(500)
return {
'sms_sent': False,
'error': f"{type(e).__name__}:{e}",
}编辑1:我已经能够获得至少我自己的子段报告了400和错误状态在x射线跟踪中使用下面的代码。
...
# when an error state exists
if sub_segment:
sub_segment.add_error_flag()
sub_segment.apply_status_code(400)
...
...
# directly before the return
try:
xray_recorder.end_subsegment()
xray_recorder.end_segment()
except Exception as xray_e:
logging.warning(xray_e)
return response

然而,这并不是用来生成xray服务映射的。

我开始认为我应该做我的lambdas rest,因为至少这些API会返回我可以跟踪的HTTP状态代码。
发布于 2019-04-16 22:37:02
服务映射中的节点对应于段,因此为了看到错误或错误的反映,需要将错误标志添加到段中。不幸的是,Lambda::Function段是由Lambda创建的,不能被修改,所以如果您自己处理异常,就没有办法设置Lambda::Function段错误标志。
但是,您可以通过将Lambda有效负载中返回的状态代码映射到应用程序代码中的段错误或错误,从而使im-xmpp节点反映服务映射中的错误或错误。您可以这样做(假设这也是Python),方法是调用segment = xray_recorder.current_segment()获取当前段,然后调用segment.add_error_flag()或segment.add_fault_flag()将段错误或错误属性设置为true。
https://stackoverflow.com/questions/55683640
复制相似问题