Files
acdl/modules/l1/waf/terraform/main.tf
T
Jon Chery 0ca383dae6 feat(P4): transparent terraform + feature flags + run_platform.sh split (REQ-233..238)
Create run_codegen.sh (pre-TF: env check, validate, resolve, adapt).
Create run_postapply.sh (post-TF: Checkov, confidence, HITL, outbox, SSM, uptime).
Add variable 'enabled' (bool, default true) + count=var.enabled?1:0 to all 12
L1 modules (alb, cloudfront, ecr, ecs-cluster, ecs-service, iam-role, kms-key,
rds, s3, uptime, vpc, waf). Fix all cross-resource references with [0] indexing.
Update interface.json for all modules to declare 'enabled' input.
Fix stale artifact path /tmp/acdl_platform_run_v18 → /tmp/nova_platform_run (REQ-238).
run_platform.sh remains as backward-compat shim for local-dev usage.

---ci---
project: acdl
phase: 4
milestone: v1.20
status: execute
requirements: [REQ-233, REQ-234, REQ-235, REQ-236, REQ-237, REQ-238]
---/ci---
2026-08-07 18:49:56 +00:00

53 lines
1.3 KiB
Terraform

resource "aws_wafv2_web_acl" "this" {
count = var.enabled ? 1 : 0
name = var.name
scope = local.scope
default_action {
dynamic "allow" {
for_each = local.action_type == "allow" ? [1] : []
content {}
}
dynamic "block" {
for_each = local.action_type == "block" ? [1] : []
content {}
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "nova-waf-metrics"
sampled_requests_enabled = true
}
dynamic "rule" {
for_each = var.rules
content {
name = lookup(rule.value, "name", "custom-rule-${rule.key}")
priority = lookup(rule.value, "priority", rule.key)
override_action {
none {}
}
statement {
byte_match_statement {
search_string = lookup(rule.value, "search_string", "/")
positional_constraint = "CONTAINS"
field_to_match {
single_header {
name = "user-agent"
}
}
text_transformation {
priority = 0
type = "NONE"
}
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "${lookup(rule.value, "name", "custom-rule-${rule.key}")}-metrics"
sampled_requests_enabled = true
}
}
}
}