You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS WAF Python CDK 修改托管规则组子规则Rule Action及报错咨询

问题原因及解决方法

1. 报错根因

你收到的400错误是WAFv2参数校验不通过导致的,核心问题有两个:

  • 引用AWS托管规则组时参数配置冲突:WAF要求标识规则组只能二选一配置,要么单独填写规则组的ARN,要么填写vendorName+name组合,你的代码里同时填写了两类参数,还加了无效的占位符ARN: 'string',符合报错提示的"字段只能填一个值"的错误描述
  • 声明类型不匹配:你用了RuleGroupReferenceStatement(该属性仅用于引用自定义规则组)来引用AWS托管规则组,正确的属性名应为managedRuleGroupStatement
    另外你用到的ExcludedRules参数作用是完全关闭指定子规则(等于不生效),并不能修改子规则的动作,不符合你的需求。

2. 正确配置子规则Count动作的两种方案

方案一:将整个托管规则组的所有子规则统一设为Count动作

只需要修改规则的overrideAction参数即可,完整示例代码:

from aws_cdk import (
    core,
    aws_wafv2 as wafv2
)

class PyCdkStack(core.Stack):
    def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        web_acl = wafv2.CfnWebACL(
            scope_=self, id='WebAcl',
            default_action=wafv2.CfnWebACL.DefaultActionProperty(allow={}),
            scope='REGIONAL',
            visibility_config=wafv2.CfnWebACL.VisibilityConfigProperty(
                cloud_watch_metrics_enabled=True,
                sampled_requests_enabled=True,
                metric_name='testwafmetric',
            ),
            name='Test-Test-WebACL',
            rules=[
                # 通用规则组配置
                {
                    'name': 'AWS-AWSManagedRulesCommonRuleSet',
                    'priority': 1,
                    'statement': {
                        'managedRuleGroupStatement': {
                            'vendorName': 'AWS',
                            'name': 'AWSManagedRulesCommonRuleSet',
                        }
                    },
                    # 整组动作覆盖为Count
                    'overrideAction': {
                        'count': {}
                    },
                    'visibilityConfig': {
                        'sampledRequestsEnabled': True,
                        'cloudWatchMetricsEnabled': True,
                        'metricName': "AWS-AWSManagedRulesCommonRuleSet"
                    }
                },
                # IP信誉库规则组配置
                {
                    'name': 'AWS-AWSManagedRulesAmazonIpReputationList',
                    'priority': 2,
                    'statement': {
                        'managedRuleGroupStatement': {
                            'vendorName': 'AWS',
                            'name': 'AWSManagedRulesAmazonIpReputationList',
                        }
                    },
                    'overrideAction': {
                        'count': {}
                    },
                    'visibilityConfig': {
                        'sampledRequestsEnabled': True,
                        'cloudWatchMetricsEnabled': True,
                        'metricName': "AWS-AWSManagedRulesAmazonIpReputationList"
                    }
                }
            ]
        )

方案二:仅将指定子规则设为Count,其他子规则保持托管组默认动作

使用ruleActionOverrides参数单独配置需要修改的子规则即可,示例(以CommonRuleSet为例):

{
    'name': 'AWS-AWSManagedRulesCommonRuleSet',
    'priority': 1,
    'statement': {
        'managedRuleGroupStatement': {
            'vendorName': 'AWS',
            'name': 'AWSManagedRulesCommonRuleSet',
            # 单独配置指定子规则的动作
            'ruleActionOverrides': [
                {
                    'name': 'CrossSiteScripting_QUERYARGUMENTS',
                    'actionToUse': {
                        'count': {}
                    }
                },
                {
                    'name': 'GenericLFI_QUERYARGUMENTS',
                    'actionToUse': {
                        'count': {}
                    }
                },
                # 其他需要修改的子规则按同样格式添加即可
            ]
        }
    },
    # 整组保持默认动作
    'overrideAction': {
        'none': {}
    },
    'visibilityConfig': {
        'sampledRequestsEnabled': True,
        'cloudWatchMetricsEnabled': True,
        'metricName': "AWS-AWSManagedRulesCommonRuleSet"
    }
}

注意事项

  • 需确保你使用的AWS CDK版本不低于2.50.0,否则ruleActionOverrides属性可能无法识别
  • 托管规则组的子规则名称需要和AWS官方公布的名称完全一致,大小写敏感

内容的提问来源于stack exchange,提问作者hightest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:39:01