Skip to content

Commit 9aa4730

Browse files
committed
Update replica group count mechanism to pre-calculate count before apply (#56)
The "count" value depends on resource attributes that cannot be determined until apply. So precalculate.
1 parent a0ea3ba commit 9aa4730

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

main.tf

+11-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,15 @@ resource "aws_security_group_rule" "ingress_cidr_blocks" {
5454

5555
locals {
5656
elasticache_subnet_group_name = var.elasticache_subnet_group_name != "" ? var.elasticache_subnet_group_name : join("", aws_elasticache_subnet_group.default.*.name)
57-
elasticache_member_clusters = tolist(aws_elasticache_replication_group.default.member_clusters)
57+
# if !cluster, then node_count = replica cluster_size, if cluster then node_count = shard*(replica + 1)
58+
# Why doing this 'The "count" value depends on resource attributes that cannot be determined until apply'. So pre-calculating
59+
member_clusters_count = (var.cluster_mode_enabled
60+
?
61+
(var.cluster_mode_num_node_groups * (var.cluster_mode_replicas_per_node_group + 1))
62+
:
63+
var.cluster_size
64+
)
65+
elasticache_member_clusters = var.enabled ? tolist(aws_elasticache_replication_group.default.0.member_clusters) : []
5866
}
5967

6068
resource "aws_elasticache_subnet_group" "default" {
@@ -118,7 +126,7 @@ resource "aws_elasticache_replication_group" "default" {
118126
# CloudWatch Resources
119127
#
120128
resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
121-
count = var.enabled ? length(local.elasticache_member_clusters) : 0
129+
count = var.enabled ? local.member_clusters_count : 0
122130
alarm_name = "${element(local.elasticache_member_clusters, count.index)}-cpu-utilization"
123131
alarm_description = "Redis cluster CPU utilization"
124132
comparison_operator = "GreaterThanThreshold"
@@ -140,7 +148,7 @@ resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
140148
}
141149

142150
resource "aws_cloudwatch_metric_alarm" "cache_memory" {
143-
count = var.enabled ? length(local.elasticache_member_clusters) : 0
151+
count = var.enabled ? local.member_clusters_count : 0
144152
alarm_name = "${element(local.elasticache_member_clusters, count.index)}-freeable-memory"
145153
alarm_description = "Redis cluster freeable memory"
146154
comparison_operator = "LessThanThreshold"

0 commit comments

Comments
 (0)