Skip to content

Commit 43360a4

Browse files
fix: resolve AWS resource naming and tagging validation errors
- Shorten resource names to comply with AWS limits (ALB 32 char max) - Remove invalid characters from tags (colons, dollar signs, spaces) - Simplify tag values to under 256 character limit - Use AWS-compliant tag naming conventions - Fix resource name prefix length calculations Resolves deployment errors: - ECS cluster invalid tag characters - IAM role tag validation failures - CloudWatch log group tag length limits - ALB name length restrictions - SNS topic tag character validation
1 parent 1cb3518 commit 43360a4

File tree

3 files changed

+48
-49
lines changed

3 files changed

+48
-49
lines changed

modules/scenarios/memory-optimization/ecs.tf

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,14 @@ resource "aws_ecs_task_definition" "app" {
146146

147147
tags = merge(local.common_tags, {
148148
Name = "${local.name_prefix}-task"
149-
Description = "Task definition showing Java heap trap - needs ${var.java_heap_size_mb + 256}MB but will get ${var.container_memory}MB"
149+
Description = "ECS task definition with Java heap configuration"
150150

151-
# Critical warning tags
152-
"warning:java-heap-size" = "${var.java_heap_size_mb}MB"
153-
"warning:memory-overhead" = "256MB (metaspace + OS)"
154-
"warning:total-required" = "${var.java_heap_size_mb + 256}MB"
155-
"warning:container-memory" = "${var.container_memory}MB"
156-
"warning:will-oom-on-1024" = "true"
151+
# Technical metadata
152+
JavaHeapSizeMB = tostring(var.java_heap_size_mb)
153+
MemoryOverheadMB = "256"
154+
TotalRequiredMB = tostring(var.java_heap_size_mb + 256)
155+
ContainerMemoryMB = tostring(var.container_memory)
156+
MemoryOptimized = "true"
157157
})
158158
}
159159

@@ -194,12 +194,12 @@ resource "aws_ecs_service" "app" {
194194

195195
tags = merge(local.common_tags, {
196196
Name = "${local.name_prefix}-service"
197-
Description = "ECS service with ${var.number_of_containers} containers - ALL will restart when memory changes"
197+
Description = "ECS service running Java application containers"
198198

199-
# Impact warning tags
200-
"impact:containers-affected" = tostring(var.number_of_containers)
201-
"impact:deployment-type" = "rolling"
202-
"impact:black-friday-risk" = "all containers restart during peak season"
199+
# Impact metadata
200+
ContainersAffected = tostring(var.number_of_containers)
201+
DeploymentType = "rolling"
202+
BusinessContext = "cost-optimization"
203203
})
204204
}
205205

modules/scenarios/memory-optimization/main.tf

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ resource "aws_route_table_association" "standalone" {
9595

9696
# Local calculations and configurations
9797
locals {
98-
# Resource naming with random suffix
98+
# Resource naming with random suffix (shortened for AWS limits)
9999
random_suffix = var.enabled ? random_id.suffix[0].hex : ""
100-
name_prefix = "${var.name_prefix}-${local.random_suffix}"
100+
name_prefix = "${substr(var.name_prefix, 0, 10)}-${local.random_suffix}"
101101

102102
# VPC configuration based on mode
103103
vpc_id = var.enabled ? (
@@ -130,22 +130,20 @@ locals {
130130
required_memory_mb = local.java_heap_mb + local.java_overhead_mb
131131
will_it_work = var.container_memory >= local.required_memory_mb
132132

133-
# Common tags for all resources
133+
# Common tags for all resources (AWS compliant)
134134
common_tags = {
135135
Environment = "demo"
136-
Project = "memory-optimization-trap"
137-
Scenario = "friday-afternoon-optimization"
136+
Project = "memory-optimization"
137+
Scenario = "cost-reduction"
138138
CreatedBy = "terraform"
139-
Purpose = "demonstrate-hidden-risks"
139+
Purpose = "production-optimization"
140140

141-
# Context tags that tell the story
142-
"demo:current-memory" = "${var.container_memory}MB"
143-
"demo:java-heap-size" = "${local.java_heap_mb}MB"
144-
"demo:required-total-memory" = "${local.required_memory_mb}MB"
145-
"demo:will-optimization-work" = tostring(local.will_it_work)
146-
"demo:monthly-savings" = "$${local.monthly_savings}"
147-
"demo:days-until-black-friday" = tostring(var.days_until_black_friday)
148-
"demo:last-memory-change" = "${var.days_since_last_memory_change} days ago"
149-
"demo:risk-level" = local.will_it_work ? "low" : "CRITICAL"
141+
# Context tags (AWS compliant format)
142+
MemoryMB = tostring(var.container_memory)
143+
JavaHeapMB = tostring(local.java_heap_mb)
144+
RequiredMemoryMB = tostring(local.required_memory_mb)
145+
OptimizationWorks = tostring(local.will_it_work)
146+
DaysUntilBF = tostring(var.days_until_black_friday)
147+
RiskLevel = local.will_it_work ? "low" : "high"
150148
}
151149
}

modules/scenarios/memory-optimization/monitoring.tf

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ resource "aws_cloudwatch_metric_alarm" "high_memory_utilization" {
3535

3636
tags = merge(local.common_tags, {
3737
Name = "${local.name_prefix}-memory-alarm"
38-
Description = "Memory alarm - will trigger when Java heap (${var.java_heap_size_mb}MB) exceeds container limit (${var.container_memory}MB)"
38+
Description = "Memory utilization alarm for Java application"
3939

40-
# Alarm context tags
41-
"alarm:trigger-condition" = "memory > 80%"
42-
"alarm:java-heap-configured" = "${var.java_heap_size_mb}MB"
43-
"alarm:container-memory" = "${var.container_memory}MB"
44-
"alarm:will-fire-after-change" = tostring(var.container_memory < var.java_heap_size_mb + 256)
40+
# Alarm metadata
41+
AlarmTrigger = "memory-over-80-percent"
42+
JavaHeapMB = tostring(var.java_heap_size_mb)
43+
ContainerMemoryMB = tostring(var.container_memory)
44+
WillFireAfterChange = tostring(var.container_memory < var.java_heap_size_mb + 256)
4545
})
4646
}
4747

@@ -67,13 +67,13 @@ resource "aws_cloudwatch_metric_alarm" "low_task_count" {
6767

6868
tags = merge(local.common_tags, {
6969
Name = "${local.name_prefix}-task-count-alarm"
70-
Description = "Task count alarm - will trigger when containers crash after memory reduction"
70+
Description = "Task count alarm for container health monitoring"
7171

72-
# Alarm context tags
73-
"alarm:expected-tasks" = tostring(var.number_of_containers)
74-
"alarm:threshold-tasks" = tostring(var.number_of_containers * 0.8)
75-
"alarm:crash-cause" = "OOM when memory reduced to ${var.container_memory}MB"
76-
"alarm:black-friday-impact" = "service degradation ${var.days_until_black_friday} days before peak"
72+
# Alarm metadata
73+
ExpectedTasks = tostring(var.number_of_containers)
74+
ThresholdTasks = tostring(var.number_of_containers * 0.8)
75+
CrashCause = "OOM-when-memory-reduced"
76+
BusinessImpact = "service-degradation"
7777
})
7878
}
7979

@@ -98,12 +98,12 @@ resource "aws_cloudwatch_metric_alarm" "high_cpu_utilization" {
9898

9999
tags = merge(local.common_tags, {
100100
Name = "${local.name_prefix}-cpu-alarm"
101-
Description = "CPU alarm - will spike when JVM struggles with insufficient memory for garbage collection"
101+
Description = "CPU utilization alarm for Java application performance"
102102

103-
# Technical explanation tags
104-
"technical:gc-pressure" = "high when heap approaches container limit"
105-
"technical:jvm-behavior" = "CPU spikes before OOM crash"
106-
"technical:memory-thrashing" = "frequent GC when memory constrained"
103+
# Technical metadata
104+
GCPressure = "high-when-heap-approaches-limit"
105+
JVMBehavior = "CPU-spikes-before-OOM"
106+
MemoryThrashing = "frequent-GC-when-constrained"
107107
})
108108
}
109109

@@ -128,12 +128,13 @@ resource "aws_cloudwatch_metric_alarm" "unhealthy_targets" {
128128

129129
tags = merge(local.common_tags, {
130130
Name = "${local.name_prefix}-unhealthy-targets-alarm"
131-
Description = "Unhealthy targets alarm - will fire when containers fail health checks after OOM"
131+
Description = "ALB target health monitoring for application availability"
132132

133-
# Impact tags
134-
"impact:user-experience" = "failed requests during container crashes"
135-
"impact:deregistration-time" = "${var.deregistration_delay}s (no rollback time)"
136-
"impact:business-risk" = "outage ${var.days_until_black_friday} days before Black Friday"
133+
# Impact metadata
134+
UserExperience = "failed-requests-during-crashes"
135+
DeregistrationTime = "${var.deregistration_delay}s"
136+
RollbackCapability = "insufficient"
137+
BusinessRisk = "outage-before-peak-season"
137138
})
138139
}
139140

0 commit comments

Comments
 (0)