来自Lambda的AWSXRay.captureAsyncFunc() - 我错过了什么吗?

时间:2017-10-17 03:09:57

标签: node.js amazon-web-services lambda aws-sdk-nodejs aws-xray

我正在尝试获取自定义X射线片段报告,但我没有看到任何痕迹。我的代码看起来像这样:

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);
    }
  });
});

我是否需要将其添加到父段或其他内容?

2 个答案:

答案 0 :(得分:0)

啊。 AWSXRay.captureHTTPs()似乎存在错误 - 如果我删除该调用captureAsyncFunc()开始工作

答案 1 :(得分:-1)

对于AWS X-Ray Node SDK,自动模式构建在continuation-local-storage(cls)包上,该包已知与promise库的兼容性问题。这就是为什么你的'然后'似乎失去了背景。但是,大多数这些库都有各种CLS填充程序可用于提供工作所需的兼容性。

您使用的是哪个承诺库? 对于蓝鸟,那里有蓝鸟'或者对于Q' cls-q'可以使它发挥作用。

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

希望这有帮助。