# Lambda definition for start_gda_score_calculation

# allow invoking step function
data "aws_iam_policy_document" "start_gda_score_calculation_policy_document" {
  statement {
    actions = [
      "states:StartExecution",
    ]

    resources = [
      aws_sfn_state_machine.gda_score_calculation.arn,
    ]
  }
}

resource "aws_iam_policy" "start_gda_score_calculation_policy" {
  name        = "${var.environment}-start-gda-score-calculation-lambda-policy"
  description = "start gda score calculation lambda policy"
  policy      = data.aws_iam_policy_document.start_gda_score_calculation_policy_document.json
}


# lambda definition
module "lambda_start_gda_score_calculation" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=1.2.3"

  environment         = var.environment
  use_container_image = true
  lambda_name         = "lambda-start-gda-score-calculation"
  lambda_description  = "For start_gda_score_calculation on msk topic event.gdaSubmitApplication call gda-score-calculation step function."

  lambda_function_environment_variables = {
    ENVIRONMENT = var.environment
    SENTRY_DSN  = module.sentry_gda_score_calculation.sentry_key_dsn_public_output
    BOOTSTRAP_SERVERS = data.aws_msk_cluster.msk_cluster.bootstrap_brokers_tls
    TOPIC_NAME = var.kafka_topic
  }

  iam_managed_policy_attachments = [
    aws_iam_policy.start_gda_score_calculation_policy.arn,
    "arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole"
  ]

  lambda_function_handler                        = var.lambda_handler
  lambda_function_memory_size                    = "256"
  lambda_function_timeout                        = var.lambda_default_timeout
  vpc_security_group_ids                         = var.vpc_security_group_ids
  vpc_subnet_ids                                 = var.vpc_subnet_ids
  lambda_function_reserved_concurrent_executions = var.lambda_concurrent_executions
  datadog_advanced_enabled                       = var.datadog_enabled


  msk_event_enabled                              = true
  event_source_mapping_msk_cluster_name          = var.msk_cluster_name
  event_source_mapping_msk_cluster_uuid          = var.msk_cluster_uuid
  event_source_mapping_batch_size                = 1
  msk_topics                                     = [var.trigger_msk_topic]
  event_source_mapping_starting_position         = "LATEST"
}


# create datadog dashboards.
module "datadog_lambda_start_gda_score_calculation" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=3.0.6"

  environment                       = var.environment
  service_name                      = "lambda-start-gda-score-calculation"
  lambda_invocation_monitor_enabled = false
}

