amazon-web-services - 如何将新的“aws_wafregional_rule”与现有的 WAF ACL 关联
问题描述
我使用 AWS 控制台创建了 WAF ACL。现在我需要使用 Terraform 创建 WAF 规则,所以我实现了以下规则。
resource "aws_wafregional_byte_match_set" "blocked_path_match_set" {
name = format("%s-%s-blocked-path", local.name, var.module)
dynamic "byte_match_tuples" {
for_each = length(var.blocked_path_prefixes) > 0 ? var.blocked_path_prefixes : []
content {
field_to_match {
type = lookup(byte_match_tuples.value, "type", null)
}
target_string = lookup(byte_match_tuples.value, "target_string", null)
positional_constraint = lookup(byte_match_tuples.value, "positional_constraint", null)
text_transformation = lookup(byte_match_tuples.value, "text_transformation", null)
}
}
}
resource "aws_wafregional_rule" "blocked_path_allowed_ipaccess" {
metric_name = format("%s%s%sBlockedPathIpaccess", var.application, var.environment, var.module)
name = format("%s%s%sBlockedPathIpaccessRule", var.application, var.environment, var.module)
predicate {
type = "ByteMatch"
data_id = aws_wafregional_byte_match_set.blocked_path_match_set.id
negated = false
}
}
但是如何将此新规则映射到通过 AWS 控制台创建的现有“web_acl”。根据文档,我可以使用“aws_wafregional_web_acl”来创建新的 web_acl,但是有没有办法将通过 terraform 创建的规则与现有的 waf_acl 相关联?我有一个将 terraform 代码部署到 aws 的 gitlab 管道,因此最终我将传递现有 web_acl 的 id/arn 并通过管道添加/更新新规则,而不会影响通过控制台创建的现有规则。
请分享您的宝贵意见。
谢谢你。
解决方案
根据您通过 AWS WAF 资源关联规则的 WAF 文档,请参阅下面的示例以获取代码片段。
resource "aws_wafregional_web_acl" "foo" {
name = "foo"
metric_name = "foo"
default_action {
type = "ALLOW"
}
rule {
action {
type = "BLOCK"
}
priority = 1
rule_id = aws_wafregional_rule.blocked_path_allowed_ipaccess.id
}
}
但是,正如您所说,您已经在 AWS 控制台中创建了资源。Terraform 确实支持 AWS 资源的导入,因此如果您想通过 Terraform 管理它,则需要使用此方法。
推荐阅读
- javascript - Express Router 不显示端点请求
- java - 使用 Java 中的加载类导入属性文件时出错
- python - Python Pexpect 期望得到超时错误
- next.js - Next.js 忽略 NODE_ENV=development
- azure-devops - YAML CI 正在扁平化文件结构
- conda - conda 安装在测试环境中
- couchbase - 在 Couchbae 中选择动态键的 N1QL 查询
- r - 通过 knitr 将 R sweave 文件编译为 pdf 时,\includegraphics{} 命令放错了位置
- file-upload - 在 Web 应用程序上存储上传文档的最佳方式
- javascript - 如何使用 IntersectionObserver 制作无限滚动条,使其不会触底?