provider "aws" {
  region = var.aws_region
}

terraform {
  backend "s3" {
    bucket  = "dev-orcd-terraform-state"
    encrypt = "true"
    key     = "dev/lambda/feed-status-notifier/terraform.tfstate"
    region  = "us-east-1"
  }
}

module "dev_lambda_feed_status_notifier" {
  source = "git@github.com:theorchard/terraform-lambda.git?ref=2.11.1"

  application_family       = var.application_family
  environment              = var.environment
  datadog_advanced_enabled = var.datadog_advanced_enabled
  dlq_enabled              = var.dlq_enabled
  lambda_name              = var.lambda_name
  lambda_description       = "Takes alerts from Monty and sends them to Slack and Jira"
  lambda_function_environment_variables = {
    ENV = var.environment
    MONTY_BASE_URL = var.monty_base_url
    SLACK_WEBHOOK_URL = var.slack_webhook_url
  }
  lambda_runtime           = var.lambda_runtime
  vpc_id                   = var.vpc_id
  vpc_subnet_ids           = var.vpc_subnet_ids
  use_container_image      = var.use_container_image
}

resource "aws_cloudwatch_event_rule" "dev_lambda_feed_status_notifier_event_rule" {
  name = "dev-lambda-feed-status-notifier-event-rule"
  description = "Monty-Check_At_10AM"
  schedule_expression = var.event_bridge_schedule_expression
}

resource "aws_cloudwatch_event_target" "dev_lambda_feed_status_notifier_target" {
  arn = module.dev_lambda_feed_status_notifier.lambda_arn
  rule = aws_cloudwatch_event_rule.dev_lambda_feed_status_notifier_event_rule.name
}

resource "aws_lambda_permission" "allow_dev_lambda_feed_status_notifier_execution" {
  statement_id = "AllowExecutionFromCloudWatch"
  action = var.aws_lambda_permission_invoke_action
  function_name =module.dev_lambda_feed_status_notifier.lambda_name
  principal = var.aws_lambda_permission_principal
  source_arn = aws_cloudwatch_event_rule.dev_lambda_feed_status_notifier_event_rule.arn
}
