在这里,我计划为 azure 事件网格订阅添加高级过滤器,据我了解,高级过滤器只为事件网格添加了一个,所以我更喜欢使用 length 函数通过变量映射来控制它(var.advanced_filter)。在这里,我遇到了第二个动态 block 出现错误的问题:lookup() 需要一个 map 作为第一个参数。
main.tf
dynamic "advanced_filter" {
for_each = length(var.advanced_filter)>0 ?[1]:[0]
content {
dynamic "bool_equals" {
for_each = lookup(var.advanced_filter,"bool_equals", "") != "" ? [1] : []
content {
key = var.advanced_filter.bool_equals.key
value = var.advanced_filter.bool_equals.value
}
}
}
}
}
变量.tf
variable "advanced_filter" {
type = any
description = "Adding advanced filters for azure event grid subscription"
default = [{ bool_equals = {
key = "True"
value = "test" } }]
}
最佳答案
您的 var.advanced_filter
是一个 map 列表,因此您必须使用索引访问列表中的各个 map ,例如 0
、 1
等等。由于列表中只有一个元素,因此它应该是:
for_each = lookup(var.advanced_filter[0], "bool_equals", "") != "" ? [1] : []
关于azure - 如何使用动态 block 进行查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75669830/