resource "aws_ce_anomaly_monitor" "cost_anomaly_detection" {
  name              = "${var.environment}-${var.service_name}"
  monitor_type      = "DIMENSIONAL"
  monitor_dimension = "SERVICE"

  tags = {
    application_family = var.application_family
    environment        = var.environment
  }
}

resource "aws_ce_anomaly_subscription" "cost_anomaly_subscription" {
  name      = "${var.application_family}-team"
  frequency = var.frequency

  monitor_arn_list = [
    aws_ce_anomaly_monitor.cost_anomaly_detection.arn
  ]

  subscriber {
    type    = "EMAIL"
    address = var.subscriber_email
  }

  threshold_expression {
    and {
      dimension {
        key           = "ANOMALY_TOTAL_IMPACT_ABSOLUTE"
        match_options = ["GREATER_THAN_OR_EQUAL"]
        values        = [var.cost_threshold_absolute]
      }
    }
    and {
      dimension {
        key           = "ANOMALY_TOTAL_IMPACT_PERCENTAGE"
        match_options = ["GREATER_THAN_OR_EQUAL"]
        values        = [var.cost_threshold_percentage]
      }
    }
  }

  tags = {
    application_family = var.application_family
    environment        = var.environment
  }
}
