Сегмент AWS X-Ray AmazonDynamoDBv2 не найден

У меня есть веб-приложение (весна), которое я хочу использовать с помощью AWS-XRay. Я добавил "AWSXRayServletFilter" в мой web.xml и приведенный ниже фрагмент в моем классе конфигурации Spring согласно документации.

static {
    AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard()
        .withPlugin(new EC2Plugin()).withPlugin(new ECSPlugin());

    builder.withSamplingStrategy(new DefaultSamplingStrategy());

    AWSXRay.setGlobalRecorder(builder.build());
}

Приведенная ниже зависимость также добавлена ​​в pom.xml

<dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-xray-recorder-sdk-aws-sdk-instrumentor</artifactId>
            <version>1.2.0</version>
</dependency>

Во время запуска приложения я получаю следующее исключение.

com.amazonaws.xray.exceptions.SegmentNotFoundException: не удалось начать подсегмент с именем "AmazonDynamoDBv2": сегмент не найден

Любые указатели для решения этой проблемы будут полезны

2 ответа

Когда вы запускаете глобальный регистратор, вы также должны запустить родительский сегмент. Вы пытаетесь создать подсегмент без сегмента.

AWSXRay.setGlobalRecorder(AWSXRayRecorderBuilder.defaultRecorder());
AWSXRay.beginSegment("MySeg");

Я получил это только в junit-тестах, где динамодб был высмеян. Чтобы исправить я поставил

AWSXRay.beginSegment("AmazonDynamoDBv2");

в тестовой настройке (@Before)

Я не касался реализации, так как считаю, что это то, что Amazon уже делает в своем SDK?

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