首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查是否已配置AWS X-Ray

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

Stack Overflow用户
提问于 2020-03-02 17:17:35
回答 1查看 245关注 0票数 2

我们在Go中运行了一个AWS Lambda,并在初始化时运行以下命令来初始化AWS X-Ray

代码语言:javascript
复制
err := xray.Configure(xray.Config{
  LogLevel:       "info",
  ServiceVersion: "1.2.3",
})

在一个单独的存储库中,我们有一个utils存储库,它为我们的内部内容公开了一个HTTP库。这将作为git子模块导入到所有其他Lambdas中。代码如下:

代码语言:javascript
复制
ctx, subseg := xray.BeginSubsegment(incomingContext, "Outbound HTTP call")
client := xray.Client(&http.Client{Transport: tr})
// further down
client.Do(req)
// finally
subseg.Close(resp)

当部署在AWS上时,它可以按预期工作,生成一个很好的图形。

问题是在utils存储库上运行单元测试。仅在该存储库的上下文中,尚未配置X射线,因此在调用BeginSubsegment时,我得到了一个死机:

代码语言:javascript
复制
panic: failed to begin subsegment named 'Outbound HTTP call': segment cannot be found.

我想要优雅地处理尚未配置X-Ray的情况,将其记录下来,然后继续执行。

当对BeginSubsegment的调用没有返回错误对象时,如何确保正确处理该调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 04:03:31

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

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

https://stackoverflow.com/questions/60485688

复制
相关文章

相似问题

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