data "aws_lb" "sendgrid_webhooks_lb" {
  name = local.load_balancer_name
}

data "aws_lb_listener" "sendgrid_webhooks_listener" {
  load_balancer_arn = data.aws_lb.sendgrid_webhooks_lb.arn
  port              = 443
}

resource "aws_lb_listener_rule" "sendgrid_webhooks_custom_handlers_listener_rule" {
  listener_arn = data.aws_lb_listener.sendgrid_webhooks_listener.arn
  priority     = 200

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.sendgrid_webhooks_custom_handlers_target_group.arn
  }

  condition {
    path_pattern {
      values = [
        "/events-custom-theorchard",
        "/events-custom-sme",
      ]
    }
  }

  tags = local.tags
}

resource "aws_lb_target_group" "sendgrid_webhooks_custom_handlers_target_group" {
  name        = "${var.environment}-${var.application_family}-sg-wbhks-cstm-tg"
  target_type = "lambda"

  tags = local.tags
}

resource "aws_lambda_permission" "load_balancer_sendgrid_webhooks_custom_handlers_lambda_permissions" {
  action        = "lambda:InvokeFunction"
  principal     = "elasticloadbalancing.amazonaws.com"
  source_arn    = aws_lb_target_group.sendgrid_webhooks_custom_handlers_target_group.arn
  function_name = module.lambda_audience_sendgrid_webhooks_custom_handlers.lambda_arn
}

resource "aws_lb_target_group_attachment" "sendgrid_webhooks_custom_handlers_lambda_target_group_attachment" {
  target_group_arn = aws_lb_target_group.sendgrid_webhooks_custom_handlers_target_group.arn
  target_id        = module.lambda_audience_sendgrid_webhooks_custom_handlers.lambda_arn

  depends_on = [
    aws_lambda_permission.load_balancer_sendgrid_webhooks_custom_handlers_lambda_permissions
  ]
}

