2017-07-15 12 views
0

明示ミドルウェアなしで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.

私はセグメントを作成し、receiveMessageへのparamsを経由してそれを渡しています。しかし、それは動作していないようです。何か案は?

答えて

2

グローバルレベルキャプチャ(captureAWS)またはクライアントレベルキャプチャ(captureAWSClient)のいずれかを実行する必要があります。両方を行うことはできません。 'captureAWS'を使用すると、作成されたすべてのクライアントに自動的にパッチが適用されるので、すでにパッチ適用されているクライアントで別の 'captureAWSClient'を実行すると、キャプチャ機能が2回実行され、

キャプチャの1つを削除すると効果があります。 これを防ぐための修正を加えることができるかどうかがわかります。

希望します。 Sandra

+0

これを行うと問題が解決しました。しかし、上のコードは、xray/nodejsドキュメントの例から直接得られたものです。 –

+0

ページへのリンクを添付できますか?私はそれをできるだけ早く修正します。 – AWSSandra

関連する問題