data "template_file" "sme_analytics_register_delivery_event_definition" {
  template = file("${path.module}/${var.sme_analytics_ingester_cloudwatch_event_rule_pattern_file}")

  vars = {
    observed_bucket_name          = "${var.environment}-${var.ddex_ingester_input_bucket}"
    sme_analytics_ingester_prefix = var.sme_analytics_ingester_prefix
  }
}

# Event rule for DDEX ingester.
resource "aws_cloudwatch_event_rule" "sme_analytics_register_delivery_s3_event_rule" {
  name          = "${var.environment}-sme_analytics-ingester-delivery-s3-event-rule"
  description   = "The CloudWatch event rule for put/copy object events on the ddex_ingester bucket sme_analytics folder"
  event_pattern = data.template_file.sme_analytics_register_delivery_event_definition.rendered
}

resource "aws_cloudwatch_event_target" "sme_analytics_register_delivery_target" {
  rule      = aws_cloudwatch_event_rule.sme_analytics_register_delivery_s3_event_rule.name
  target_id = "${var.environment}_sme_analytics_register_delivery_target"
  arn       = data.aws_lambda_function.lambda_register_delivery_to_ingest.arn
}

resource "aws_lambda_permission" "allow_cloudwatch_trigger_sme_analytics_register_delivery_event" {
  statement_id  = "AllowTriggerRegisterSmeAnalyticsDelivery"
  action        = "lambda:InvokeFunction"
  function_name = "ddex-ingester-register-delivery-to-ingest-qa"
  principal     = "events.amazonaws.com"
  source_arn    = aws_cloudwatch_event_rule.sme_analytics_register_delivery_s3_event_rule.arn
}
