locals {
  name_position = length(split(":", var.function_arn))
  function_name = split(":", var.function_arn)[local.name_position - 1]
}
resource "aws_cloudwatch_event_rule" "scheduler_rule" {
  name                = "${replace(local.function_name, "-", "")}Scheduler"
  description         = "${local.function_name} scheduler"
  schedule_expression = var.schedule_expression

  lifecycle {
    ignore_changes = [is_enabled]
  }
}

resource "aws_cloudwatch_event_target" "ecs_scheduler_event_targets" {
  rule = aws_cloudwatch_event_rule.scheduler_rule.name
  arn  = var.function_arn
}

resource "aws_lambda_permission" "allow_cloudwatch_to_call_lambda" {
  statement_id_prefix = "AllowExecutionFromCloudWatch"
  action              = "lambda:InvokeFunction"
  function_name       = var.function_arn
  principal           = "events.amazonaws.com"
  source_arn          = aws_cloudwatch_event_rule.scheduler_rule.arn
}
