Следы JS на узле AWS не отображаются - PullRequest
0 голосов
/ 27 марта 2019

Я использую Lambda (Node 8.10) и работаю с AWS X Ray.Я звоню на внешний IP-адрес, используя обещание.Когда я звоню, отображаются другие следы, но не может получить пользовательский сегмент.Я не использую никаких фреймворков, просто чистый узел js.

const AWSXRay = require('aws-xray-sdk-core');

AWSXRay.enableManualMode();
AWSXRay.captureHTTPsGlobal(require('https'));

const https = AWSXRay.captureHTTPs(require('https'));

exports.handler = async (event, context, callback) => {
// other code

const response = await doSomething(event);
    return callback(error, response);
};

async doSomething(event) {
return new Promise((resolve, reject) => {
    const segment = new AWSXRay.Segment('custom_segment_here');

    AWSXRay.captureAsyncFunc('send', (subsegment) => {
        const options = {
                    hostname: host,
                    port: 443,
                    path: '/',
                    method: 'GET',
                    XRaySegment: subsegment,
                };

        const req = https.request(options, (res) => {
            code = res.statusCode;
            resolve(code);
        });

        req.on('error', (error) => {
                    subsegment.addError(error);
                    reject(error);
                });

                subsegment.close();
                req.end();
    }, segment);

}

}

1 Ответ

0 голосов
/ 04 апреля 2019

В сценарии Lambda Lambda отвечает за создание сегментов, а AWS X-Ray SDK только создают подсегменты, а затем испускает их. Основываясь на вашем фрагменте кода, вы создали сегмент (const сегмент = новый AWSXRay.Segment ('custom_segment_here');) внутри лямбда-функции, которая не может быть запущена, чтобы вы не могли увидеть ее в нашей консоли. Надеюсь, мой ответ ясен. :)

...