首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为advanced_filter定义动态块

如何为advanced_filter定义动态块
EN

Stack Overflow用户
提问于 2022-02-02 06:33:22
回答 1查看 685关注 0票数 0

我想为azurerm_eventgrid_event_subscription模块定义多个过滤器

我尝试创建一个动态块,如下所示:

代码语言:javascript
复制
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,但是遇到了如下错误:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-02-10 16:25:07

我为advanced_filter放置了多个动态块1,为每个过滤器放置了另一个动态块,然后它就开始工作了。

代码语言:javascript
复制
    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     = []
    }

最基本的价值应该是这样的:

代码语言:javascript
复制
advanced_filter = [
     {
       bool_equals = {
         key   = "test"
         value = true
      }
      },
    {
      number_not_in = {
        key    = "data.counter"
        values = [41, 0]
    } }
  ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70951359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档