你可以有一个变量作为块定义名称吗?

问题描述

我正在尝试添加一个 AWS WAF 规则,该规则从变量中获取值并将其作为块定义添加到资源中。我不确定我正在尝试的是否可行,我收到错误:

此处需要参数或块定义。要设置参数,请使用等号“=”来引入参数值。

我猜这是因为它看到了引号中的变量并期望它有一个参数。

下面有问题的块是“field_to_match”块。

有什么办法可以做到这一点或替代方案吗?

resource "aws_wafv2_web_acl" "static_hosting" {
  provider    = aws.acm_us_region

  name        = "${var.cityName}-static-hosting"
  description = "WAF for ${var.cityName}-static-hosting"
  scope       = "CLOUDFRONT"

  default_action {
    block {}
  }

  rule {
    name     = "Check_Domain"
    priority = 1

    action {
      allow {}
    }

    statement {
      byte_match_statement {
        text_transformation {
            priority = 0
            type = "NONE"
        }
        field_to_match {
            var.serviceConfig.static_hosting.conditionalType.type {
                name = var.serviceConfig.static_hosting.conditionalType.name
            }

        }
        positional_constraint = var.serviceConfig.static_hosting.conditionalType.conditional
        search_string = var.serviceConfig.static_hosting.conditionalType.string
      }
    }
}

"conditionalType": {
                "type": "single_header","name": "referrer","conditional": "CONTAINS","string": "domain.com"
            }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)