使用Terraform创建带范围缩小语句的AWS WAFv2托管规则报错如何解决
解决方案
你之前的配置错误是因为将byte_match_statement与managed_rule_group_statement平级放在同一statement块下,违反了单条WAF规则仅允许配置1条顶级语句的要求,因此AWS返回报错。
要实现托管规则组的范围缩小语句配置,你需要先将HashiCorp AWS Provider升级至v3.64.0及以上版本,该版本正式新增了managed_rule_group_statement下的scope_down_statement配置支持,对应AWS官方的范围缩小语句能力。
正确的配置示例如下:
rule { name = "AWS-AWSManagedRulesAdminProtectionRuleSet" priority = 0 override_action { count {} } statement { managed_rule_group_statement { name = "AWSManagedRulesAdminProtectionRuleSet" vendor_name = "AWS" # 托管规则组的范围缩小语句直接嵌套在此处 scope_down_statement { byte_match_statement { field_to_match { uri_path {} } search_string = "abc" text_transformation { priority = 0 type = "NONE" } positional_constraint = "CONTAINS_WORD" } } } } visibility_config { sampled_requests_enabled = true metric_name = "AWS-AWSManagedRulesAdminProtectionRuleSet" cloudwatch_metrics_enabled = true } }
补充注意事项
- 如果是CloudFront作用域的WAFv2 Web ACL,创建
aws_wafv2_web_acl资源时必须指定scope = "CLOUDFRONT",且Provider区域需设置为us-east-1,符合CloudFront WAF的全局区域要求。
内容的提问来源于stack exchange,提问作者Asim
相关产品推荐
相关产品推荐

