@@ -54,7 +54,15 @@ resource "aws_security_group_rule" "ingress_cidr_blocks" {
54
54
55
55
locals {
56
56
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 ) : []
58
66
}
59
67
60
68
resource "aws_elasticache_subnet_group" "default" {
@@ -118,7 +126,7 @@ resource "aws_elasticache_replication_group" "default" {
118
126
# CloudWatch Resources
119
127
#
120
128
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
122
130
alarm_name = " ${ element (local. elasticache_member_clusters , count. index )} -cpu-utilization"
123
131
alarm_description = " Redis cluster CPU utilization"
124
132
comparison_operator = " GreaterThanThreshold"
@@ -140,7 +148,7 @@ resource "aws_cloudwatch_metric_alarm" "cache_cpu" {
140
148
}
141
149
142
150
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
144
152
alarm_name = " ${ element (local. elasticache_member_clusters , count. index )} -freeable-memory"
145
153
alarm_description = " Redis cluster freeable memory"
146
154
comparison_operator = " LessThanThreshold"
0 commit comments