Я пытаюсь выполнить простой запрос CloudWatch, чтобы получить некоторые метри c данные. Я хочу получить актуальные показатели. Используя AWS CLI, я получаю ожидаемое поведение. Однако при использовании клиентских SDK (пробовал оба пакета Boto Python и SDK Java) один и тот же (кажущийся) запрос не возвращает мои показатели.
Мои критерии запроса определены в query.json
:
[
{
"Id": "test",
"MetricStat": {
"Metric": {
"Namespace": "MyNamespace",
"MetricName": "MyMetric",
"Dimensions": [
{
"Name": "SOURCE",
"Value": "TEST"
}
]
},
"Period": 3600,
"Stat": "SampleCount",
"Unit":"Seconds"
},
"ReturnData": true
}
]
CLI это работает. Возвращает мою метрику c значение и метку времени
aws cloudwatch get-metric-data --max-items 10 --start-time "2020-05-01T00:00:00Z" --end-time "2020-06-01T00:00:00Z" --metric-data-queries file://./query.json
{
"MetricDataResults": [
{
"Id": "test",
"Label": "MyMetric",
"Timestamps": [
"2020-05-15T13:00:00Z",
...
],
"Values": [
1.0,
...
],
"StatusCode": "Complete"
}
],
"Messages": []
}
Boto не возвращает метрики даже из того же файла
In [77]: cw.get_metric_data(MetricDataQueries=json.load(open("query.json")), StartTime=datetime.datetime(2020,5,1), EndTime=datetime.datetime(2020,6,1), MaxDatapoints=10)
Out [77]: {'MetricDataResults': [{'Id': 'test',
'Label': 'MyMetric',
'Timestamps': [], <--Why isn't this populated?
'Values': [],
'StatusCode': 'PartialData'}],
Java Примерно те же критерии ввода
MetricDataQuery query = new MetricDataQuery().withReturnData(true);
query.setMetricStat(new MetricStat()
.withStat("SampleCount")
.withPeriod(36000)
.withMetric(
new Metric()
.withMetricName("MyMetric")
.withNamespace("MyNamespace)
.withDimensions(new Dimension()
.withName("SOURCE")
.withValue("TEST"))));
cw.getMetricData(new GetMetricDataRequest()
.withStartTime(Date.from(Instant.now().minus(100, ChronoUnit.DAYS)))
.withEndTime(Date.from(Instant.now()))
.withScanBy(ScanBy.TimestampDescending)
.withMaxDatapoints(10)
.withMetricDataQueries(query))
// Result ==> {Id: TestQuery,Label: MyMetric,Timestamps: [],Values: [],StatusCode: PartialData,Messages: []}
Я не понимаю, почему cli вернет значения metri c, но оба CDK, которые я пробовал, похоже, не верят. Есть подсказки?