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

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

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

resource "aws_cloudwatch_event_target" "awal_register_delivery_target" {
  rule      = aws_cloudwatch_event_rule.awal_register_delivery_s3_event_rule.name
  target_id = "${var.environment}_awal_register_delivery_target"
  arn       = data.aws_lambda_function.lambda_register_delivery_to_ingest.arn
}

resource "aws_lambda_permission" "allow_cloudwatch_trigger_awal_register_delivery_event" {
  statement_id  = "AllowTriggerRegisterAwalDelivery"
  action        = "lambda:InvokeFunction"
  function_name = "ddex-ingester-register-delivery-to-ingest-prod"
  principal     = "events.amazonaws.com"
  source_arn    = aws_cloudwatch_event_rule.awal_register_delivery_s3_event_rule.arn
}
