You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform基于实例列表批量生成CloudWatch Dashboard组件?

使用Terraform迭代生成AWS CloudWatch Dashboard监控组件

要实现通过aws_instance_list列表动态生成CloudWatch Dashboard的监控组件,核心是利用Terraform的**for表达式**遍历实例列表,批量生成每个实例对应的widget配置,同时自动处理布局坐标避免重叠。

完整实现代码

variable "aws_instance_list" {
  type    = list(string)
  default = ["i-07dd009cf6a72720b", "i-047101ccb46330773"]
}

resource "aws_cloudwatch_dashboard" "main" {
  dashboard_name = "my-dashboard"
  dashboard_body = jsonencode({
    widgets = [
      for index, instance in var.aws_instance_list : {
        type   = "metric"
        x      = (index % 2) * 12  # 每行放2个组件,x坐标交替0/12
        y      = floor(index / 2) * 6  # 每组件高度6,自动换行
        width  = 12
        height = 6
        properties = {
          metrics = [
            [
              "AWS/EC2",
              "CPUUtilization",
              "InstanceId",
              instance  # 动态引用当前遍历的实例ID
            ]
          ]
          period = 300
          stat   = "Average"
          region = "us-east-1"
          title  = "EC2 ${instance} CPU Utilization"  # 标题包含实例ID,便于区分
        }
      }
    ]
  })
}

关键细节说明

  • 遍历逻辑:通过for index, instance in var.aws_instance_list同时获取实例索引和实例ID,索引用于计算组件的布局坐标。
  • 布局自动调整:x = (index % 2) * 12实现每行放置2个宽度为12的组件(Dashboard总宽度为24);y = floor(index / 2) * 6根据索引自动计算垂直位置,避免组件重叠。
  • 动态实例引用:将固定的实例ID替换为遍历变量instance,每个widget自动绑定对应实例的监控指标。
  • 标题个性化:标题中加入实例ID,方便在Dashboard中快速区分不同实例的监控面板。

内容的提问来源于stack exchange,提问作者Adam A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:07:41