module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=1.0.0"
  environment        = var.environment
  application_family = var.application_family
  service_name       = var.service_name
}

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = module.default_tags.tags
  }
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "prod-mobile-code-push-terraform-state"
    key     = "prod/reserved-instances/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_elasticache_reserved_cache_node_offering" "redis_t4g_small_reserved_cache_node_offering" {
  cache_node_type     = "cache.t4g.small"
  duration            = "P1Y"
  offering_type       = "No Upfront"
  product_description = "redis"
}

# Reserved Instance for Mobile Code Push Server Redis cache (Production)
# 1-year No Upfront commitment for cost optimization
resource "aws_elasticache_reserved_cache_node" "redis_t4g_small_reserved_cache_node" {
  reserved_cache_nodes_offering_id = data.aws_elasticache_reserved_cache_node_offering.redis_t4g_small_reserved_cache_node_offering.offering_id
  id                               = "redist4gsmall-${var.environment}"
  cache_node_count                 = 2
}
