如何为Terraform嵌套对象编写输出:告警策略conditions.name输出
正确的Terraform输出配置方案
假设你的告警策略资源定义示例如下:
resource "google_monitoring_alert_policy" "my_alert" { display_name = "My Alert Policy" # 其他基础配置... conditions { display_name = "High CPU Usage" # 该condition的具体规则配置... } conditions { display_name = "Low Disk Space" # 该condition的具体规则配置... } }
要输出以display_name为键、自动生成的conditions.name为值的映射,在output.tf中添加以下配置:
output "alert_condition_name_map" { description = "映射告警条件的显示名称到其生成的唯一资源名称" value = { for cond in google_monitoring_alert_policy.my_alert.conditions : cond.display_name => cond.name } }
核心说明:
- 利用Terraform的for表达式遍历告警策略的
conditions列表,直接构建键值对映射。 - 必须保证所有
conditions的display_name唯一,否则会因键重复触发Terraform报错;若存在重名需求,需给display_name添加唯一标识后缀。 conditions.name属于Terraform apply后才会生成的属性,因此terraform plan阶段该输出会显示为(known after apply),属于正常情况。
如果你的告警策略资源名称不是my_alert,替换为实际的资源标识即可。
内容的提问来源于stack exchange,提问作者adithyar24200
相关产品推荐
相关产品推荐

