flutter-vienna-hackathon-25/wien_talks_server/deploy/aws/terraform/redis.tf
2025-08-17 11:57:58 +02:00

70 lines
No EOL
2 KiB
HCL

resource "aws_elasticache_cluster" "redis" {
count = var.enable_redis ? 1 : 0
cluster_id = var.project_name
engine = "redis"
node_type = "cache.t4g.micro"
num_cache_nodes = 1
engine_version = "6.x"
port = 6379
apply_immediately = true
security_group_ids = [aws_security_group.redis[0].id]
subnet_group_name = aws_elasticache_subnet_group.redis[0].name
}
resource "aws_route53_record" "redis" {
count = var.enable_redis ? 1 : 0
zone_id = var.hosted_zone_id
name = "${var.subdomain_redis}.${var.top_domain}"
type = "CNAME"
ttl = "300"
records = ["${aws_elasticache_cluster.redis[0].cache_nodes[0].address}"]
}
# Makes Redis accessible from the serverpod only.
resource "aws_security_group" "redis" {
count = var.enable_redis ? 1 : 0
name = "${var.project_name}-redis"
ingress {
from_port = 6379
to_port = 6379
protocol = "tcp"
security_groups = [aws_security_group.serverpod.id]
}
vpc_id = module.vpc.vpc_id
}
resource "aws_elasticache_subnet_group" "redis" {
count = var.enable_redis ? 1 : 0
name = "${var.project_name}-subnet"
subnet_ids = module.vpc.public_subnets
}
# Staging
resource "aws_elasticache_cluster" "redis_staging" {
count = var.enable_redis && var.enable_staging_server ? 1 : 0
cluster_id = var.project_name
engine = "redis"
node_type = "cache.t4g.micro"
num_cache_nodes = 1
engine_version = "6.x"
port = 6379
apply_immediately = true
security_group_ids = [aws_security_group.redis[0].id]
subnet_group_name = aws_elasticache_subnet_group.redis[0].name
}
resource "aws_route53_record" "redis_staging" {
count = var.enable_redis && var.enable_staging_server ? 1 : 0
zone_id = var.hosted_zone_id
name = "${var.subdomain_redis_staging}.${var.top_domain}"
type = "CNAME"
ttl = "300"
records = ["${aws_elasticache_cluster.redis_staging[0].cache_nodes[0].address}"]
}