AWS Xray 手动模式设置分段



我正在尝试在没有快速中间件的情况下将数据跟踪到 AWS Xray。我的代码如下:

const AWSXRay = require('aws-xray-sdk'),
AWS = AWSXRay.captureAWS(require('aws-sdk')),
sqs = AWSXRay.captureAWSClient(new AWS.SQS({apiVersion: '2012-11-05', region: 'eu-west-1'}));
AWSXRay.enableManualMode();
var segment = new AWSXRay.Segment('sqsSegment');
var params = {
QueueUrl: "https://sqs.eu-west-1.amazonaws.com/123/queuename",
VisibilityTimeout: 0,
WaitTimeSeconds: 0,
XraySegment: segment
};
sqs.receiveMessage(params, function(err, data) {
if (err) console.log(err, err.stack);
else     console.log(data);
});
segment.close();

我收到错误:Error: No sub/segment specified. A sub/segment must be provided for manual mode.

我正在创建一个段并通过参数将其传递给接收消息。但它似乎不起作用。有什么想法吗?

您需要执行全局级捕获(captureAWS(或客户端级捕获(captureAWSClient(,而不是两者兼而有之。使用"captureAWS",创建的所有客户端都会被自动修补,因此当您在已经修补的客户端上执行另一个"captureAWSClient"时,捕获函数会运行两次,并且无法正确解析上下文。

删除其中一个捕获,它应该可以工作。 我会看看我是否可以添加一个修复程序来防止这种情况。

希望这有帮助, 桑德拉

最新更新