resource "aws_scheduler_schedule" "refresh_lambda_schedule" {
  #checkov:skip=CKV_AWS_297:triggered because of empty messages
  name       = "qa-lambda-sr-tiktok-ack-processor-schedule"
  group_name = "default"

  flexible_time_window {
    mode = "OFF"
  }

  schedule_expression          = "cron(*/5 * ? * * *)"
  schedule_expression_timezone = "America/New_York"

  target {
    arn      = module.lambda_sr_delivery_tiktok_ack_processor.lambda_arn
    role_arn = aws_iam_role.tiktok_ack_processor_execution_role.arn
  }
}

// policy to assume role for scheduler
data "aws_iam_policy_document" "tiktok_ack_processor_execution_policy" {
  statement {
    effect = "Allow"

    principals {
      type = "Service"
      identifiers = [
        "scheduler.amazonaws.com",
      ]
    }
    actions = ["sts:AssumeRole"]
  }
}

// policy to allow scheduler to invoke lambda
data "aws_iam_policy_document" "invoke_lambda_policy" {
  statement {
    effect  = "Allow"
    actions = ["lambda:InvokeFunction"]

    resources = [module.lambda_sr_delivery_tiktok_ack_processor.lambda_arn]
  }
}

// role to attach policy to allow scheduler to assume role via policy
resource "aws_iam_role" "tiktok_ack_processor_execution_role" {
  name               = "qa-lambda-sr-tiktok-ack-processor-invoke-lambda-role"
  assume_role_policy = data.aws_iam_policy_document.tiktok_ack_processor_execution_policy.json
}

// attach policy and role to allow scheduler to invoke lambda
resource "aws_iam_role_policy" "scheduler_invoke_lambda_role_policy_attachment" {
  name   = "qa-lambda-sr-tiktok-ack-processor-invoke-lambda-policy"
  role   = aws_iam_role.tiktok_ack_processor_execution_role.name
  policy = data.aws_iam_policy_document.invoke_lambda_policy.json
}
