resource "aws_cloudwatch_event_bus" "atlas_um_event_bus" {
  name = "${local.name_prefix}-atlas_um"

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "EventBridge",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_EB"
    }
  )
}

resource "aws_cloudwatch_log_group" "atlas_um_event_bus" {
  name              = "/aws/events/${local.name_prefix}-atlas_um"
  retention_in_days = module.cloudwatch_logs_retention_by_env[local.env_prefix]

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "CloudWatch",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_CW"
    }
  )
}

resource "aws_cloudwatch_event_rule" "atlas_um_event_bus_capture_all_rule" {
  name        = "${local.name_prefix}-atlas_um_all"
  description = "Capture all events"

  event_bus_name = aws_cloudwatch_event_bus.atlas_um_event_bus.name
  event_pattern  = <<PATTERN
{
  "account": [
    "${local.account_id}"
  ]
}
PATTERN

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "EventBridge",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_EB"
    }
  )
}

resource "aws_cloudwatch_event_target" "atlas_um_event_bus_cloudwatch_target" {
  rule           = aws_cloudwatch_event_rule.atlas_um_event_bus_capture_all_rule.name
  event_bus_name = aws_cloudwatch_event_bus.atlas_um_event_bus.name
  arn            = aws_cloudwatch_log_group.atlas_um_event_bus.arn
  target_id      = "${local.name_prefix}-atlas_um_cw"
  dead_letter_config {
    arn = module.atlas_um_event_bus_dlq.queue.arn
  }
}

