Лучший способ получить правильный json для вашего запроса - использовать консоль CloudWatch для построения графика, затем перейти на вкладку Source
, выбрать Image API
view и нажать Copy Source
, чтобы скопировать сгенерированный json. Вам также нужно заключить JSON в одинарные кавычки, например:
aws cloudwatch get-metric-widget-image --metric-widget \
'{
"width": 600,
"height": 395,
"metrics": [
[ "AWS/EC2", "CPUUtilization", "InstanceId", "i-01234567890123456", { "stat": "Average" } ]
],
"period": 300,
"stacked": false,
"yAxis": {
"left": {
"min": 0.1,
"max": 1
},
"right": {
"min": 0
}
},
"title": "CPU",
"annotations": {
"horizontal": [
{
"color": "#ff6961",
"label": "Troublethresholdstart",
"fill": "above",
"value": 0.5
}
],
"vertical": [
{
"visible": true,
"color": "#9467bd",
"label": "Bugfixdeployed",
"value": "2018-11-19T07:25:26Z",
"fill": "after"
}
]
},
"view": "timeSeries"
}'
Ответом на это будет изображение в кодировке base64, например:
{
"MetricWidgetImage": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGLEAYA..."
}
Если вам нужно необработанное изображение в формате png, вам нужно будет декодировать ответ, выполнив что-то вроде этого:
aws cloudwatch get-metric-widget-image --metric-widget 'JSON_GOES_HERE' | grep MetricWidgetImage | awk '{split($0,a,"\""); print a[4]}' | base64 --decode > graph.png