AWS Xray手动模式设置段
问题描述:
我正在尝试将一些数据跟踪到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.
我创建一个段,并通过它通过PARAMS到receiveMessage。但它似乎没有工作。有任何想法吗?
答
您需要执行全局级捕获(captureAWS)或客户级捕获(captureAWSClient),而不是两者。使用'captureAWS',所有创建的客户端都会自动进行修补,因此当您在已经修补的客户端上执行另一个'captureAWSClient'时,捕获函数将运行两次,并且无法正确解析上下文。
删除其中一个捕获,它应该工作。 我会看看我是否可以添加修复程序来防止此问题。
希望这会有所帮助, Sandra
这样做的确解决了这个问题。但是,上面的代码直接来自xray/nodejs文档中的示例。 –
你能附加一个链接到页面吗?我会尽快纠正。 – AWSSandra