首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在动态块中使用Terraform多个块?

在动态块中使用Terraform多个块?
EN

Stack Overflow用户
提问于 2020-06-23 05:36:16
回答 1查看 1.4K关注 0票数 0

我正在尝试为aws_wafv2_web_acl资源创建一个模块,但是我不知道如何在一个动态块中添加多个'excluded_rule‘块。这个是可能的吗?以下是资源:

代码语言:javascript
运行
复制
resource "aws_wafv2_web_acl" "web-acl" {


  name        = var.name
  description = ""
  scope       = "REGIONAL"

  default_action {
    allow {}
  }

  dynamic "rule" {
    for_each = var.rules
    content {
        name     = rule.value["name"]
        priority = rule.value["priority"]

        override_action {
          count {}
        }

        statement {
          managed_rule_group_statement {
            name        = rule.value["name"]
            vendor_name = "AWS"

            excluded_rule {              
              name = "excluded rule"
            }

          }
        }

        visibility_config {
          cloudwatch_metrics_enabled = false
          sampled_requests_enabled   = false
          metric_name                = rule.value["name"]

        }
    }
  }
  visibility_config {
      cloudwatch_metrics_enabled = false
      sampled_requests_enabled   = false
      metric_name                = "webaclmetric"
  }
}

下面是要传递的变量:

代码语言:javascript
运行
复制
  name = "test"
  rules = [
    {"name": "AWSManagedRulesLinuxRuleSet", "priority": 0, "exclusions": "LFI_QUERYARGUMENTS,LFI_URIPATH"},
    {"name": "AWSManagedRulesWindowsRuleSet", "priority": 1, "exclusions": "PowerShellCommands_Set1_QUERYARGUMENTS"}
  ]
EN

Stack Overflow用户

回答已采纳

发布于 2020-06-23 05:49:55

这是可能的。您可能想看看我为WafV2 web acl -> https://github.com/umotif-public/terraform-aws-waf-webaclv2编写的terraform模块。

回到你的问题,你可以用下面的代码块解决它:

代码语言:javascript
运行
复制
dynamic "excluded_rule" {
  for_each = length(lookup(managed_rule_group_statement.value, "excluded_rule", {})) == 0 ? [] : toset(lookup(managed_rule_group_statement.value, "excluded_rule"))
  content {
    name = excluded_rule.value
  }
}

然后,您可以将以下内容传入模块中

代码语言:javascript
运行
复制
managed_rule_group_statement = {
  name        = "AWSManagedRulesCommonRuleSet"
  vendor_name = "AWS"
  excluded_rule = [
    "SizeRestrictions_QUERYSTRING",
    "SizeRestrictions_BODY",
    "GenericRFI_QUERYARGUMENTS"
  ]
}
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62523875

复制
相关文章

相似问题

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