为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查是否已配置 AWS X-Ray

如何检查是否已配置 AWS X-Ray

Go
动漫人物 2022-05-18 16:15:45
我们有一个在 Go 中运行的 AWS Lambda,在初始化时运行以下命令来初始化 AWS X-Rayerr := xray.Configure(xray.Config{  LogLevel:       "info",  ServiceVersion: "1.2.3",})在一个单独的存储库中,我们有一个 utils 存储库,它为我们的内部内容公开了一个 HTTP 库。这作为 git 子模块导入到所有其他 Lambda。代码如下:ctx, subseg := xray.BeginSubsegment(incomingContext, "Outbound HTTP call")client := xray.Client(&http.Client{Transport: tr})// further downclient.Do(req)// finallysubseg.Close(resp)这在 AWS 上部署时按预期工作,生成了一个漂亮的图表。问题是在 utils 存储库上运行单元测试。仅在该存储库的上下文中,尚未配置 X-Ray,因此在BeginSubsegment调用时我感到恐慌:panic: failed to begin subsegment named 'Outbound HTTP call': segment cannot be found.我想优雅地处理未配置 X-Ray 的情况,记录它并继续执行。当 BeginSubsegment 不返回错误对象时,如何确保正确处理对它的调用?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在 lambda 的情况下,这段代码执行时没有任何恐慌,因为 lambda 创建了一个外观段,然后您的代码将创建子段。在非 lambda 环境中,您必须先创建一个段,然后再创建一个子段。如果你不这样做,它会产生恐慌。现在,如果您想记录这个恐慌并继续执行您的单元测试,那么我建议您将 AWS_XRAY_CONTEXT_MISSING 环境变量设置为 LOG_ERROR。它基本上会记录你的恐慌并继续执行你的单元测试。



查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信