Terraform部署AWS WAFv2 Web ACL时visibility_config配置报错求助
问题分析与解决方案
核心问题定位
你遇到的两类错误根源是代码缩进错误和ignore.tf的配置不当:
- 第一个错误:
rule块内的visibility_config被错误嵌套在statement块内部,导致Terraform无法识别到rule级别的visibility配置。 - 第二个错误:ignore.tf第78行的资源中错误添加了
visibility_config块,而该资源类型并不支持这个配置项。
代码修复步骤
1. 修正aws_wafv2_web_acl的rule块缩进
将visibility_config从statement块中移出,放到rule块的直接子层级,确保和override_action、statement同级:
//ip-set resource "aws_wafv2_ip_set" "this" { name = "${var.name}-ip-whitelist" description = var.description scope = var.scope ip_address_version = var.ip-add-ver addresses = var.ip-address tags = var.tags } //web acl resource "aws_wafv2_web_acl" "this" { name = "${var.name}-web-acl" description = "${var.name}-web-acl" scope = var.scope tags = var.tags default_action { allow {} } visibility_config { cloudwatch_metrics_enabled = false metric_name = "friendly-rule-metric-name" sampled_requests_enabled = false } rule { name = "ip-set-rule" priority = 1 override_action { count {} } statement { ip_set_reference_statement { arn = aws_wafv2_ip_set.this.arn } } // 修正:将visibility_config移到statement块外部,属于rule的直接子元素 visibility_config { cloudwatch_metrics_enabled = false metric_name = "friendly-rule-metric-name" sampled_requests_enabled = false } } } //acl association resource "aws_wafv2_web_acl_association" "default_web_acl_association" { resource_arn = var.target_resource web_acl_arn = aws_wafv2_web_acl.this.arn }
2. 处理ignore.tf的错误
打开ignore.tf文件定位到第78行:
- 检查对应的资源类型,若为
aws_wafv2_ip_set或aws_wafv2_web_acl_association这类不支持visibility_config的资源,直接删除该visibility_config块。 - 对照该资源的官方配置文档,只保留其支持的配置项。
验证修复
完成修改后,执行terraform validate检查语法合法性,确认无错误后再执行terraform apply。
内容的提问来源于stack exchange,提问作者BigRed247
相关产品推荐
相关产品推荐

