Я пытаюсь создать панель управления AWS, используя terraform для отображения показателей S3. Я думал перебрать все сегменты S3, хранящиеся в переменной списка, и сгенерировать панель управления json.
The for l oop может добавлять метрики, но я не могу удалить конечная запятая, что приводит к ошибочному json.
- Есть ли простой способ исправить это json с помощью этого подхода?
- Есть ли лучший способ сделать json обработка?
- Следует ли мне использовать terraform для этой обработки?
Фрагмент кода: -
dashboard_body = <<EOF
{
"start":"-P6M",
"widgets": [
{
"type":"metric",
"x":0,
"y":0,
"width":12,
"height":6,
"properties":{
"metrics":[
%{ for bucket in var.buckets }
[
"AWS/S3",
"BucketSizeBytes",
"StorageType",
"StandardStorage",
"BucketName",
"${bucket}"
]
%{ endfor }
],
"period":86400,
"stat":"Average",
"region":"us-east-1",
"title":"Storage usage"
}
}
]
}
EOF
Обходной путь: - Я закончил жесткое кодирование дополнительная агрегация в конце массива «метрик». В любом случае мне нужна была сумма, и это было простым решением. @kharandziuk - идеальный способ реализации, но даже в этом случае вам может потребоваться этот обходной путь.
Окончательный код: -
{
"start":"-P6M",
"widgets": [
{
"type":"metric",
"x":0,
"y":0,
"width":12,
"height":6,
"properties":{
"metrics":[
%{ for bucket in buckets }
[
"AWS/S3",
"BucketSizeBytes",
"StorageType",
"StandardStorage",
"BucketName",
"${bucket}"
],
%{ endfor }
[
{ "expression": "SUM(METRICS())", "label": "Total Storage", "id": "e3" }
]
],
"period":86400,
"stat":"Average",
"region":"us-east-1",
"title":"Storage usage"
}
}
]
}