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

AWS CDK部署WAFv2时遇EXACTLY_ONE_CONDITION_REQUIRED错误求助

解决AWS CDK部署WAFv2 ATP规则组时的配置错误

问题原因分析

第一个错误(EXACTLY_ONE_CONDITION_REQUIRED)

AWS WAFv2的AWSManagedRulesATPRuleSet托管规则组要求ManagedRuleGroupConfig必须明确指定配置类型,并将对应参数嵌套在该类型的字段下。你之前直接把loginPath、payloadType等字段放在managedRuleGroupConfigs的对象外层,不符合WAF API的参数结构要求,导致API无法识别配置类型,返回该错误。

第二个错误(必填字段缺失)

只保留loginPath时,仍然缺少配置类型标识和正确的嵌套结构,WAF API认为核心配置字段缺失,因此返回新的错误。

修正方案

调整managedRuleGroupConfigs的结构:

  1. 每个配置对象必须添加type: 'AWSManagedRulesATPRuleSet'字段,明确配置类型
  2. 将登录相关的配置参数(loginPath、payloadType等)嵌套在awsManagedRulesATPRuleSet字段下

修正后的完整代码

import * as cdk from 'aws-cdk-lib';
import * as wafv2 from 'aws-cdk-lib/aws-wafv2';

export class CdkWorkshopStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // defines an AWS WAFv2 WebACL resource
    const webACL = new wafv2.CfnWebACL(this, 'WebACL', {
      defaultAction: {
        block: {},
      },
      scope: 'REGIONAL',
      name: 'waf-sample',
      description: 'this is a test',
      visibilityConfig: {
        cloudWatchMetricsEnabled: true,
        metricName: 'WebACL',
        sampledRequestsEnabled: true
      },
      rules: [
        {
          priority: 9,
          name: 'AWS-AWSManagedRulesATPRuleSet',
          statement: {
            managedRuleGroupStatement: {
              name: 'AWSManagedRulesATPRuleSet',
              vendorName: 'AWS',
              // 修正后的managedRuleGroupConfigs结构
              managedRuleGroupConfigs: [{
                type: 'AWSManagedRulesATPRuleSet',
                awsManagedRulesATPRuleSet: {
                  loginPath: '/loginPath',        
                  payloadType: 'JSON',
                  usernameField: {
                    identifier: '/form/username', 
                  },
                  passwordField: {
                    identifier: '/form/password',
                  },
                },
              }],
            }
          },
          overrideAction: { none: {} },
          visibilityConfig: {
            cloudWatchMetricsEnabled: true,
            metricName: 'AWS-AWSManagedRulesATPRuleSet',
            sampledRequestsEnabled: true
          }
        },
      ],
    });
  }
}

验证方法

修改代码后重新执行cdk deploy,此时WAF API能正确识别ATP规则组的配置参数,部署即可成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:55:25