Результат запроса AWS CloudWatch

Приведенный ниже код возвращает записи, когда я запускаю его в режиме отладки с точкой останова на этой строке и переходом в строку. Но когда я запускаю его в обычном режиме Run и не вхожу в эту строку, он выдает 0 результатов. Что я делаю неправильно? Спасибо

GetQueryResultsResult getQueryResultsResult = awslogs.getQueryResults(getQueryResultsRequest);

3 ответа

Решение

Добавление строки кода ниже до этой строки кода исправило проблему:

TimeUnit.SECONDS.sleep (2);

Спасибо

Запрос не выполняется методом getQueryResults из CloudWatchLogsClient, выполняется при вызове startQuery.

В startQuery может занять много времени, чтобы завершить его выполнение, поэтому, если вы вызовете getQueryResults сразу после startQuery, он не получит результатов, потому что запрос может все еще выполняться.

Итак, чтобы получить результаты, вы можете проверить, выполняется ли запрос, проверив статус GetQueryResultsResponse нравится:

 GetQueryResultsResponse getQueryResultsResponse = null;
 do {
      getQueryResultsResponse = awslogs.getQueryResults(getQueryResultsRequest);
 } while ("Running".equals(getQueryResultsResponse.status().toString()));

Используйте итеративную команду «DescribeQueriesCommand», чтобы проверить и дождаться, пока запрос не перейдет в состояние «Завершен», а затем вызовите «GetQueryResultsCommand».

Итеративный вызов GetQueryResultsCommand только приводит к потере ограничений запросов AWS CloudWatch Insights.

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-logs/command/DescribeQueriesCommand/