AWSXRay.captureAsyncFunc() из Lambda - я что-то упустил?

Я пытаюсь получить пользовательские отчеты о сегментах рентгеновского излучения, но ничего не вижу в след. Мой код выглядит примерно так:

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

AWSXRay.captureAsyncFunc ('callSoapService', подсегмент => {
  doSomethingAsync(params, err => {
    if (err) {
      subsegment.close(ERR);
    } еще {
      doSomethingElse().then(result => {
        console.info("все готово, теперь закрываем сегмент");
        subsegment.close();
      }, subsegment.close);
    }
  });
});

Нужно ли добавить его в родительский сегмент или что-то?

2 ответа

Тьфу. кажется, есть ошибка с AWSXRay.captureHTTPs() - если я уберу этот звонок captureAsyncFunc() начинает работать

Для пакета AWS X-Ray Node SDK автоматический режим основан на пакете с продолжением локального хранилища (cls), в котором есть известные проблемы совместимости с библиотеками обещаний. Вот почему ваше "тогда", похоже, теряет контекст. Однако большинство из этих библиотек имеют различные прокладки CLS для обеспечения совместимости, необходимой для работы.

Какую библиотеку обещаний вы используете? Для bluebird есть "cls-bluebird" или для Q есть "cls-q", который заставит его работать.

Обычно они просят передать пространство имен CLS, которое доступно из xray.getNamespace().

Надеюсь это поможет.

Другие вопросы по тегам