Terraform导入多JSON文件创建Google监控仪表板报错求助
问题分析与修复
错误原因
google_monitoring_dashboard的dashboard_json属性要求传入JSON格式的字符串,你的代码存在两个核心问题:
- 错误地将整个
local.json_data(包含解码后JSON对象的映射)赋值给dashboard_json,而非单个文件的JSON字符串 - 提前用
jsondecode把文件内容转成了Terraform对象,违背了dashboard_json对输入类型的要求
修复后的代码
locals{ json_files = fileset(path.module, "dash/*.json") dashboard_data = { for file_path in local.json_files : file_path => file(file_path) } } resource "google_monitoring_dashboard" "dashboards" { for_each = local.dashboard_data project = var.monitoring_project dashboard_json = each.value }
关键调整说明
- 移除
jsondecode:直接用file()读取JSON文件的原始字符串内容,完全匹配dashboard_json的类型要求 - 使用
each.value绑定当前实例的JSON内容:通过for_each遍历dashboard_data映射时,每个资源实例对应一个JSON文件,each.value就是该文件的JSON字符串内容
内容的提问来源于stack exchange,提问作者adithyar24200
相关产品推荐
相关产品推荐

