2017-10-17 11 views
0

사용자 정의 X- 레이 세그먼트보고를 얻으려고하고 있지만 트레이스에서 아무 것도 볼 수 없습니다. 내 코드는 다음과 같습니다.AWSXRay.captureAsyncFunc() from Lambda - 뭔가 빠졌습니까?

 
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()의 버그가있는 것 같습니다. 해당 전화를 제거하면

0

AWS X-Ray 노드 SDK의 경우 자동 모드는 알려진 호환성 문제가있는 연속 로컬 저장소 (cls) 패키지에서 빌드됩니다 약속 라이브러리. 이것이 당신의 '그'가 맥락을 잃어 버리는 이유입니다. 그러나 대부분의 라이브러리에는 작동에 필요한 호환성을 제공하기 위해 다양한 CLS shim이 있습니다.

어떤 약속 라이브러리를 사용하고 있습니까? bluebird의 경우 'cls-bluebird'가 있거나 Q의 경우 'cls-q'가 사용 가능합니다.

그들은 대개 xray.getNamespace()에서 사용할 수있는 CLS 네임 스페이스를 전달하도록 요청합니다.

희망이 도움이됩니다.

+0

기본 노드 약속을 사용하고 있습니다. –

+0

동시에 여러 요청을 처리 할 수있는 백엔드에서 CLS를 사용해도 안전합니까? –

+0

CLS는 스레드 로컬 저장소와 비슷한 함수 호출 체인에 범위가 지정된 변수를 저장합니다. 제 3 자 라이브러리 약속 지원을 위해서는 shim이 필요합니다. 여기에서 자세한 내용을보실 수 있습니다 : https://github.com/othiym23/node-continuation-local-storage – AWSSandra