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

使用AWS CDK启用WAF WebAcl日志功能失败问题排查

解决AWS CDK中WAFv2区域WebAcl日志配置的ARN无效问题

问题分析

你遇到的错误根源在于传递给CfnLoggingConfiguration的logDestinationConfigs参数存在两处问题:

  • 该参数要求为字符串数组,但你的代码直接传入了单个ARN字符串;
  • 错误日志显示ARN末尾带有:*通配符,这不符合WAF日志配置的要求——目标必须是日志组本身的ARN,不能包含流通配符。

修正后的代码

import { LogGroup, PolicyStatement } from 'aws-cdk-lib/aws-logs';
import { CfnLoggingConfiguration } from 'aws-cdk-lib/aws-wafv2';

// 创建指定名称的日志组
const webAclLogGroup = new LogGroup(scope, "awsWafLogs", {
  logGroupName: `aws-waf-logs`
});

// 给日志组添加权限,允许WAF服务写入日志
webAclLogGroup.addToResourcePolicy(new PolicyStatement({
  actions: ['logs:PutLogEvents'],
  resources: [webAclLogGroup.logGroupArn],
  principals: [{ Service: 'wafv2.amazonaws.com' }],
}));

// 创建日志配置(注意logDestinationConfigs为数组格式)
new CfnLoggingConfiguration(scope, "webAclLoggingConfiguration", {
  logDestinationConfigs: [webAclLogGroup.logGroupArn], // 改为数组包裹单个ARN
  resourceArn: aclArn // WebAcl的ARN
});

关键说明

  1. 数组格式要求:AWS WAF的LoggingConfiguration强制要求logDestinationConfigs为数组类型,哪怕只有一个目标ARN,也必须用数组包裹。
  2. 日志组权限配置:必须显式赋予WAF服务向日志组写入日志的权限,否则即使ARN正确,后续也会触发权限错误。
  3. ARN正确性验证:可以添加输出项确认日志组ARN格式:
    import { CfnOutput } from 'aws-cdk-lib';
    new CfnOutput(scope, 'WebAclLogGroupArn', { value: webAclLogGroup.logGroupArn });
    
    部署后查看输出,正确的ARN格式应为arn:aws:logs:<区域>:<账号ID>:log-group:aws-waf-logs,无:*后缀。

额外注意

如果指定的日志组名称在当前账号+区域下已存在,CDK会复用该日志组,但需确保其权限配置符合要求。另外,WAF区域WebAcl的日志配置仅支持同区域的日志组,不能跨区域设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:57:21