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

Terraform中如何展开CloudWatch Dashboard指标的嵌套列表

解决Terraform中CloudWatch Dashboard Metrics平铺问题

你可以用Terraform的flatten函数直接打平嵌套的列表结构,具体修改如下:

原代码中metrics部分的循环会生成嵌套列表,只需要把整个循环结果用flatten()包裹,就能将所有子列表的元素平铺到顶层:

resource "aws_cloudwatch_dashboard" "a_dashboard" {
  dashboard_name = "my_dashboard"
  dashboard_body = jsonencode({
    widgets = [
       {
          "height": 6,
          "width": 24,
          "y": 18,
          "x": 0,
          "type": "metric",
          "properties": {
              # 用flatten打平循环生成的嵌套列表
              metrics = flatten([
                for i, name in var.list_names : [
                  { "expression": name, "label": i, "id": i },      
                  ["abcd", {"id": i}]
                ]
              ])
          }
        }
     ]
})
}

原理说明

  • 原for循环会为list_names中的每个元素生成一个包含2个元素的子列表,最终得到[[元素1,元素2], [元素3,元素4]]的嵌套结构
  • flatten函数会遍历嵌套列表,将所有层级的元素提取出来合并成一个单层列表,正好符合你需要的[元素1,元素2,元素3,元素4]结构

另外注意修正代码里的两个小问题:

  • 变量引用要写var.list_names而非"$list_names"
  • ["abcd", "id":i]的语法不符合JSON规范,调整为["abcd", {"id": i}](如果是CloudWatch指标的维度格式,可根据实际需求调整,但核心平铺逻辑不受影响)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:53:28