amazon-web-services - 为基于速率的规则创建 CfnWebACL 失败(AWS CDK WAF 区域)
问题描述
我正在尝试使用 AWS CDK(@aws-cdk/aws-wafregional
v1.4.0)设置基于速率的规则。
这是我非常简单的 JavaScript 设置:
const cdk = require('@aws-cdk/core');
const waf = require('@aws-cdk/aws-wafregional');
class TstStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const rule = new waf.CfnRateBasedRule(this, 'rule', {
metricName: `rateRule`,
name: 'rate-rule',
rateKey: 'IP',
rateLimit: 2010
});
const acl = new waf.CfnWebACL(this, 'acl', {
defaultAction: { type: 'ALLOW' },
metricName: 'rateAcl',
name: 'rate-acl',
rules: [{
action: { type: 'BLOCK' },
priority: 1,
ruleId: rule.ref
}]
});
}
}
module.exports = { TstStack }
创建规则是没有问题的。但是在 Web ACL 上创建堆栈失败。错误信息是:
The referenced item does not exist. (Service: AWSWAFRegional; Status Code: 400; Error Code: WAFNonexistentItemException
我在这里缺少什么,为什么无法创建 CfnWebACL 对象?
作为参考,完整的输出:
3/4 | 9:49:31 PM | CREATE_FAILED | AWS::WAFRegional::WebACL | acl The referenced item does not exist. (Service: AWSWAFRegional; Status Code: 400; Error Code: WAFNonexistentItemException; Request ID: e4d897ef-c138-11e9-bf23-fb4702c5a89a)
new TstStack (/app/infrastructure/apps/tst/lib/tst-stack.js:16:21)
\_ Object.<anonymous> (/app/infrastructure/apps/tst/bin/tst.js:9:1)
\_ Module._compile (internal/modules/cjs/loader.js:778:30)
\_ Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
\_ Module.load (internal/modules/cjs/loader.js:653:32)
\_ tryModuleLoad (internal/modules/cjs/loader.js:593:12)
\_ Function.Module._load (internal/modules/cjs/loader.js:585:3)
\_ Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
\_ startup (internal/bootstrap/node.js:283:19)
\_ bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
解决方案
这也让我恼火了一阵子。我终于在 CloudFormation 文档中看到了rate-rules的以下内容:
请注意,您只能使用 CloudFormation 模板创建基于速率的规则。要将通过 CloudFormation 创建的基于速率的规则添加到 Web ACL,请使用 AWS WAF 控制台、API 或命令行界面 (CLI)。有关详细信息,请参阅UpdateWebACL。
基本上,您可以创建规则,但不能通过 AWS CloudFormation 将其与 ACL 关联。
推荐阅读
- java - 创建 kubernetes 部署时 Quarkus RestClient 属性的 env 值无效
- excel - 如何在 Excel VBA 中自动增加单元格引用,以便在每一列中运行宏?
- api - 如何在flutter中调用initState中的异步方法
- python - 字典列表的差异
- django - 将父对象传递给子对象的 CreateView
- environment-variables - 如何通过设置环境变量的 Windows 终端启动 Git Bash?
- r - 如何在 R 中为多列创建分层采样
- excel - 从 GitHub 下载 CSV 文件
- utf-8 - 打印 UTF8 编码的笑脸
- javascript - 如何检测路由器路径“/”何时为真?