我想为azurerm_eventgrid_event_subscription模块定义多个过滤器
我尝试创建一个动态块,如下所示:
resource "azurerm_eventgrid_event_subscription" "subscription" {
name = var.subscription_data["name"]
scope = var.subscription_data["scope"]
expiration_time_utc = var.subscription_data["expiration_time_utc"]
included_event_types = var.included_event_types
dynamic "advanced_filter" {
for_each = var.advanced_filter
content {
dynamic "bool_equals" {
for_each = try(var.advanced_filter.value.bool_equals, {})
content {
key = "test"
value = true
# values = try(bool_equals.value.value_list, null)
}
}
}
}
variable "advanced_filter" {
type = map(any)
description = "Advanced filter maps"
}Terraform:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/eventgrid_event_subscription,但是遇到了如下错误:
Error: Missing required argument
on ../main.tf line 1, in resource "azurerm_eventgrid_event_subscription" "subscription":
1: resource "azurerm_eventgrid_event_subscription" "subscription" {
"advanced_filter.0.number_not_in": one of
`advanced_filter.0.bool_equals,advanced_filter.0.is_not_null,advanced_filter.0.is_null_or_undefined,advanced_filter.0.number_greater_than,advanced_filter.0.number_greater_than_or_equals,advanced_filter.0.number_in,advanced_filter.0.number_in_range,advanced_filter.0.number_less_than,advanced_filter.0.number_less_than_or_equals,advanced_filter.0.number_not_in,advanced_filter.0.number_not_in_range,advanced_filter.0.string_begins_with,advanced_filter.0.string_contains,advanced_filter.0.string_ends_with,advanced_filter.0.string_in,advanced_filter.0.string_not_begins_with,advanced_filter.0.string_not_contains,advanced_filter.0.string_not_ends_with,advanced_filter.0.string_not_in`
must be specified
Error: Missing required argument
on ../main.tf line 1, in resource "azurerm_eventgrid_event_subscription" "subscription":
1: resource "azurerm_eventgrid_event_subscription" "subscription" {
"advanced_filter.0.string_in": one of
`advanced_filter.0.bool_equals,advanced_filter.0.is_not_null,advanced_filter.0.is_null_or_undefined,advanced_filter.0.number_greater_than,advanced_filter.0.number_greater_than_or_equals,advanced_filter.0.number_in,advanced_filter.0.number_in_range,advanced_filter.0.number_less_than,advanced_filter.0.number_less_than_or_equals,advanced_filter.0.number_not_in,advanced_filter.0.number_not_in_range,advanced_filter.0.string_begins_with,advanced_filter.0.string_contains,advanced_filter.0.string_ends_with,advanced_filter.0.string_in,advanced_filter.0.string_not_begins_with,advanced_filter.0.string_not_contains,advanced_filter.0.string_not_ends_with,advanced_filter.0.string_not_in`
must be specified发布于 2022-02-10 16:25:07
我为advanced_filter放置了多个动态块1,为每个过滤器放置了另一个动态块,然后它就开始工作了。
resource "azurerm_eventgrid_event_subscription" "subscription" {
name = var.subscription_data["name"]
scope = var.subscription_data["scope"]
expiration_time_utc = var.subscription_data["expiration_time_utc"]
included_event_types = var.included_event_types
dynamic "advanced_filter" {
for_each = length(try(var.advanced_filter[0], [])) != 0 ? [var.advanced_filter] : []
content {
dynamic "bool_equals" {
for_each = [for filter in advanced_filter.value : [filter.bool_equals] if try(filter.bool_equals, null) != null]
content {
key = bool_equals.value[0].key
value = bool_equals.value[0].value
}
}
dynamic "number_greater_than" {
for_each = [for filter in advanced_filter.value : [filter.number_greater_than] if try(filter.number_greater_than, null) != null]
content {
key = number_greater_than.value[0].key
value = number_greater_than.value[0].value
}
}
dynamic "number_greater_than_or_equals" {
for_each = [for filter in advanced_filter.value : [filter.number_greater_than_or_equals] if try(filter.number_greater_than_or_equals, null) != null]
content {
key = number_greater_than_or_equals.value[0].key
value = number_greater_than_or_equals.value[0].value
}
}
}
variable "advanced_filter" {
description = "Advanced filter maps"
type = any
default = []
}最基本的价值应该是这样的:
advanced_filter = [
{
bool_equals = {
key = "test"
value = true
}
},
{
number_not_in = {
key = "data.counter"
values = [41, 0]
} }
]https://stackoverflow.com/questions/70951359
复制相似问题