2017-10-17 105 views
0

我正在尝试获取自定义X-Ray细分报告,但我在跟踪中没有看到任何内容。我的代码看起来像这样:来自Lambda的AWSXRay.captureAsyncFunc() - 我错过了什么?

 
var AWSXRay = require('aws-xray-sdk-core'); 

AWSXRay.captureAsyncFunc('callSoapService', subsegment => { 
    doSomethingAsync(params, err => { 
    if (err) { 
     subsegment.close(err); 
    } else { 
     doSomethingElse().then(result => { 
     console.info('all done, now close the segment'); 
     subsegment.close(); 
     }, subsegment.close); 
    } 
    }); 
}); 

是否需要将它添加到父段或其他?

回答

0

呃。似乎有与AWSXRay.captureHTTPs()错误 - 如果我没有调用captureAsyncFunc()开始工作

0

对于AWS X射线节点SDK,自动模式是建立在延续本地存储(CLS)包,它存在已知的兼容性问题与承诺库。这就是为什么你的'当时'似乎失去了上下文。然而,大多数这些库有各种CLS垫片可用于提供工作所需的兼容性。

您使用哪种承诺库? 对于蓝鸟,这里有'cls-bluebird'或Q,有'cls-q'可用,它可以使它工作。

它们通常会要求传入CLS命名空间,该命名空间可从xray.getNamespace()获得。

希望这会有所帮助。

+0

我正在使用本地节点承诺 –

+0

CLS可以安全地在可以同时处理多个请求的后端中使用吗? –

+0

CLS将变量作用域保存到函数调用链中,类似于线程本地存储。它需要第三方库承诺支持的垫脚。你可以在这里阅读更多关于它的信息:https://github.com/othiym23/node-continuation-local-storage – AWSSandra