Не удается вызвать метод start_query

#amazon-cloudwatchlogs #amazon-cloudwatch-metrics #amazon-cloudwatch #aws-cloudwatch-log-insights

#amazon-cloudwatchlogs #amazon-cloudwatch-metrics #amazon-cloudwatch #aws-cloudwatch-журнал-аналитика

Вопрос:

Не удается вызвать метод start_query

Я пытаюсь запросить журналы cloudwatch с помощью приведенного ниже кода. Но я получил приведенную ниже ошибку TypeError: cloudwatchlogs.startQuery это не функция

Похоже, API не смог найти метод startQuery. Пожалуйста, помогите мне решить проблему.

 var AWS = require('aws-sdk');
var cloudwatchlogs = new AWS.CloudWatchLogs({apiVersion: '2014-03-28',
  region: 'us-west-2'
});
// Set the region 
exports.handler = (event,context,callback) => {
    console.log("hai");
    AWS.config.update({region: 'us-west-2'});
    var params = {
      endTime: 1553686248, /* required */
      logGroupName: '/aws/lambda/tset', /* required */
      queryString: 'fields  @message| filter @message like /START/| fields strcontains(@message, "$LATEST") as @CONTAINS_ap | stats sum(@CONTAINS_ap) as @sample',
      startTime: 1553538648,
      limit: 0
    };
      cloudwatchlogs.startQuery(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
}
  

Ответ №1:

Какую версию aws-sdk вы используете? StartQuery был добавлен в 2.364.0 : https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#23640

Комментарии:

1. можете ли вы привести один хороший пример выполнения startQuery. при выполнении моего запроса я получаю следующую ошибку «сообщение: ‘ошибка распознавания токена в: ‘ ‘ (Service: AWSLogs; Код состояния: 400; Код ошибки: Исключение MalformedQueryException; Идентификатор запроса: f949299b-b5ea-431e-aeb9-45834fcae19a)’, код: ‘Исключение MalformedQueryException’,

2. Запрос сверху выглядит хорошо, я смог выполнить его без проблем (просто пришлось изменить limit, чтобы он был больше 0).

3. Спасибо за ваш ответ, теперь я могу получить результат, теперь результат получается в виде строкового значения, если я выполню приведенный выше запрос в Clouwatch-insights, я получу число, как я могу преобразовать этот идентификатор запроса ответа в значение?

4. как узнать идентификатор пакета для начального запроса? я пытаюсь использовать describeBundleTasks с ссылкой на приведенный ниже URL ( docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS / … ) как определить идентификатор пакета, и я получаю сообщение об ошибке StateNotFoundError: Состояние bundleTaskComplete не найдено. как это решить

5. Кстати: я знаю, что OP спрашивал о Node / JS, но если вы взаимодействуете с журналами CloudWatch через API и кодируете в Go, я настоятельно рекомендую библиотеку Incite — github.com/gogama/incite . Это упрощает API, заменяет неприятные концепции, такие как опрос, удобными, такими как потоковая передача, и поддерживает мультиплексирование, разбиение результатов на фрагменты, разделение результатов на произвольные структуры данных точно так же, как encoding/json . Здесь документы.