Files
acdl/modules/l1/waf/terraform/main.tf
T
Jon Chery bb3ac7c74d
acdl-ci / Lint (pull_request) Successful in 8s
acdl-ci / Platform check-only (offline) (pull_request) Successful in 24s
acdl-modules-lifecycle / CI VPC apply (pull_request) Successful in 40s
acdl-ci / Test (pull_request) Successful in 4m1s
acdl-modules-lifecycle / L1 lifecycle (alb) (pull_request) Failing after 1m54s
acdl-modules-lifecycle / L1 lifecycle (cloudfront) (pull_request) Successful in 9m20s
acdl-modules-lifecycle / L1 lifecycle (ecr) (pull_request) Successful in 2m38s
acdl-modules-lifecycle / L1 lifecycle (ecs-cluster) (pull_request) Successful in 2m58s
acdl-modules-lifecycle / L1 lifecycle (iam-role) (pull_request) Successful in 2m37s
acdl-modules-lifecycle / L1 lifecycle (ecs-service) (pull_request) Failing after 5m13s
acdl-modules-lifecycle / L1 lifecycle (rds) (pull_request) Failing after 1m18s
acdl-modules-lifecycle / L1 lifecycle (kms-key) (pull_request) Successful in 2m54s
acdl-modules-lifecycle / L1 lifecycle (s3) (pull_request) Successful in 2m55s
acdl-modules-lifecycle / L1 lifecycle (vpc) (pull_request) Successful in 2m49s
acdl-modules-lifecycle / L1 lifecycle (uptime) (pull_request) Failing after 6m3s
acdl-modules-lifecycle / L1 lifecycle (waf) (pull_request) Successful in 3m11s
acdl-modules-lifecycle / CI VPC destroy (pull_request) Failing after 20m40s
fix(P60): WAF scope case + VPC modify DependencyViolation
Two module defects found in the prior live matrix run (3000, SHA
a55752e2) that hadn't been fixed:

1. WAF: `scope: cloudfront` in complex example failed with "expected
   scope to be one of [CLOUDFRONT REGIONAL], got cloudfront". AWS
   requires uppercase. Added `scope = upper(var.scope)` in locals.tf
   so the module is resilient to either casing, and fixed the complex
   example to use CLOUDFRONT.

2. VPC: simple→complex modify tried to replace the VPC (CIDR changed
   10.0.0.0/16 → 10.50.0.0/16, which is ForceNew) while subnets/IGW/
   route tables still referenced it → DependencyViolation. Fixed the
   complex example to use the same CIDR (10.0.0.0/16) so terraform
   modifies in-place (adds a 3rd AZ subnet, updates tags). Also added
   create_before_destroy lifecycle on the VPC as a defensive measure.

Regression: 479 passed, 5 deselected. 24 example contracts resolve.

---ci---
project: acdl
phase: P60
milestone: v1.11
status: execute
---/ci---
2026-07-28 20:13:07 +00:00

52 lines
1.3 KiB
Terraform

resource "aws_wafv2_web_acl" "this" {
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 = "acdl-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
}
}
}
}