首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS xray + lambda异常处理,如何返回错误消息并将xray跟踪标记为失败

AWS xray + lambda异常处理,如何返回错误消息并将xray跟踪标记为失败
EN

Stack Overflow用户
提问于 2019-04-15 06:32:11
回答 1查看 1.3K关注 0票数 1

我使用最新的稳定aws_xray_sdk用Python3.6编写了一个AWS,并将其部署为Lambda函数,而不是作为一个API网关端点。

但是,一切都如期而至,但是,我已经为我的lambda创建了一个自定义异常处理程序,因此如果出现异常,就会记录错误,并将错误响应发送给调用方,而不仅仅是return false

是否有方法将我当前的aws x射线子段标记为错误?我发现subsegment对象有一个apply_status_code方法,但是这似乎也没有达到我所期望的效果。

代码语言:javascript
复制
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射线跟踪中使用下面的代码。

代码语言:javascript
复制
...
# 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状态代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55683640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档