#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
. Здесь документы.