data "archive_file" "trigger" {
  type        = "zip"
  source_file = "${path.module}/../lambda/handler.py"
  output_path = "${path.module}/build/trigger.zip"
}

resource "aws_lambda_function" "trigger" {
  function_name = "quber-trigger"
  role          = aws_iam_role.lambda.arn
  runtime       = "python3.13"
  handler       = "handler.handler"
  timeout       = 60

  filename         = data.archive_file.trigger.output_path
  source_code_hash = data.archive_file.trigger.output_base64sha256

  environment {
    variables = {
      ECS_CLUSTER          = aws_ecs_cluster.quber.name
      TASK_DEFINITION      = aws_ecs_task_definition.table.family
      CONTAINER_NAME       = local.container_name
      SUBNETS              = join(",", data.aws_subnets.default.ids)
      SECURITY_GROUPS      = aws_security_group.task.id
      OUTPUT_BUCKET        = aws_s3_bucket.output.bucket
      INPUT_PREFIX         = var.input_prefix
      RUNPOD_ENDPOINT_ID   = var.runpod_endpoint_id
      RUNPOD_API_KEY_PARAM = aws_ssm_parameter.runpod_api_key.name
      JOIN_LAMBDA_ARN      = aws_lambda_function.join.arn
      SCHEDULER_ROLE_ARN   = aws_iam_role.scheduler.arn
      DEADLINE_MINUTES     = tostring(var.deadline_minutes)
    }
  }

  depends_on = [aws_cloudwatch_log_group.lambda]
}

resource "aws_lambda_permission" "s3_invoke" {
  statement_id   = "AllowS3Invoke"
  action         = "lambda:InvokeFunction"
  function_name  = aws_lambda_function.trigger.function_name
  principal      = "s3.amazonaws.com"
  source_arn     = data.aws_s3_bucket.input.arn
  source_account = data.aws_caller_identity.current.account_id
}
