locals {
  name = "${var.env_prefix}-${var.project_group}-${var.project}"
}

resource "aws_cloudwatch_event_rule" "this" {
  for_each            = var.schedule_expression
  name                = "${local.name}-${each.key}"
  description         = "Run ${local.name} task at a scheduled time (${each.value.expression})"
  schedule_expression = each.value.expression
  is_enabled          = each.value.enabled
}

resource "aws_cloudwatch_event_target" "this" {
  for_each  = var.schedule_expression
  target_id = "${local.name}-scheduled_task_target"
  rule      = aws_cloudwatch_event_rule.this[each.key].name
  arn       = var.cluster_arn
  role_arn  = var.scheduler_role_arn

  ecs_target {
    propagate_tags      = "TASK_DEFINITION"
    task_count          = var.task_count
    task_definition_arn = var.task_definition_arn
    launch_type         = "FARGATE"
    network_configuration {
      subnets         = var.subnets
      security_groups = var.security_groups
    }
  }
  input = var.cw_event_target_input
}
