From eb4b2dde059288762f5ea8cbaaedacb722dc6514 Mon Sep 17 00:00:00 2001 From: Piyush Jain <122745947+d3vb0ox@users.noreply.github.com> Date: Mon, 9 Jun 2025 12:31:51 +0530 Subject: [PATCH] chore(elasticache): add serverless redis (#5943) --- infra/terraform/elasticache.tf | 47 ++++++++++++++++++++++++++++++++++ infra/terraform/rds.tf | 7 +++-- infra/terraform/secrets.tf | 2 +- 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/infra/terraform/elasticache.tf b/infra/terraform/elasticache.tf index c2fdba2084..aad5a10a4a 100644 --- a/infra/terraform/elasticache.tf +++ b/infra/terraform/elasticache.tf @@ -89,3 +89,50 @@ module "valkey" { tags = local.tags_map[each.key] } + +module "elasticache_user_group" { + for_each = local.envs + source = "terraform-aws-modules/elasticache/aws//modules/user-group" + version = "1.4.1" + + user_group_id = "${each.value}-valkey" + create_default_user = false + default_user = { + user_id = each.value + passwords = [random_password.valkey[each.key].result] + } + users = { + "${each.value}" = { + access_string = "on ~* +@all" + passwords = [random_password.valkey[each.key].result] + } + } + engine = "redis" + tags = merge(local.tags, { + terraform-aws-modules = "elasticache" + }) +} + +module "valkey_serverless" { + for_each = local.envs + source = "terraform-aws-modules/elasticache/aws//modules/serverless-cache" + version = "1.4.1" + + engine = "valkey" + cache_name = "${each.value}-valkey-serverless" + major_engine_version = local.valkey_major_version + # cache_usage_limits = { + # data_storage = { + # maximum = 2 + # } + # ecpu_per_second = { + # maximum = 1000 + # } + # } + subnet_ids = module.vpc.database_subnets + + security_group_ids = [ + module.valkey_sg.security_group_id + ] + user_group_id = module.elasticache_user_group[each.key].group_id +} diff --git a/infra/terraform/rds.tf b/infra/terraform/rds.tf index c1a2b72f5d..41a4ce27b0 100644 --- a/infra/terraform/rds.tf +++ b/infra/terraform/rds.tf @@ -3,7 +3,7 @@ ################################################################################ data "aws_rds_engine_version" "postgresql" { engine = "aurora-postgresql" - version = "16.4" + version = "16.6" } moved { @@ -64,9 +64,8 @@ module "rds-aurora" { enable_http_endpoint = true serverlessv2_scaling_configuration = { - min_capacity = 0 - max_capacity = 50 - seconds_until_auto_pause = 3600 + min_capacity = 0.5 + max_capacity = 50 } instance_class = "db.serverless" diff --git a/infra/terraform/secrets.tf b/infra/terraform/secrets.tf index 220528b901..16aa40b520 100644 --- a/infra/terraform/secrets.tf +++ b/infra/terraform/secrets.tf @@ -18,7 +18,7 @@ resource "aws_secretsmanager_secret_version" "formbricks_app_secrets" { for_each = local.envs secret_id = aws_secretsmanager_secret.formbricks_app_secrets[each.key].id secret_string = jsonencode({ - REDIS_URL = "rediss://:${random_password.valkey[each.key].result}@${module.valkey[each.key].replication_group_primary_endpoint_address}:6379" + REDIS_URL = "rediss://${each.value}:${random_password.valkey[each.key].result}@${module.valkey_serverless[each.key].serverless_cache_endpoint[0].address}:6379" }) }