咨询Terraform中for_each循环动态生成资源的引用语法正确性
问题分析与修复
配置错误定位
你的google_monitoring_notification_channel资源存在取值错误:
each.key是var.projects的键(如project_A、project_B),属于字符串类型,没有.email属性- 正确的邮箱地址取值应该是
each.value.email,each.value才是对应键下包含email字段的map对象
错误代码片段:
labels = { email_address = each.key.email }
修正后的代码:
labels = { email_address = each.value.email }
for_each资源引用语法确认
你使用google_monitoring_notification_channel.basic[each.key].id的引用语法是正确的。当资源通过for_each基于map创建时,实例引用格式为资源名称[map键].属性,这里each.key与notification_channel实例的键完全匹配,引用逻辑没问题。
空notification_channels的原因
由于之前的通知通道配置错误,生成的通道可能处于无效状态(比如邮箱地址非法或为空),虽然Terraform部署无报错,但GCP端的通知通道未正常生效,导致alert_policy无法关联到有效通道ID,最终显示为空。修正上述错误后重新部署即可解决问题。
内容的提问来源于stack exchange,提问作者John Tan
相关产品推荐
相关产品推荐

