module "lambda_start_sfn_execution_create_sentry_project" {
  source = "git@github.com:theorchard/terraform-sentry.git?ref=5.0.0"

  application_family = var.application_family
  environment        = var.environment
  platform           = "python"
  service_name       = var.lambda_start_sfn_execution_name
  teams              = [var.environment]
}

resource "aws_iam_policy" "start_sfn_execution_policy" {
  name   = "${var.environment}-metadata-consistency-checks-start-sfn-execution-policy"
  policy = data.aws_iam_policy_document.start_sfn_execution_policy_document.json
}

module "lambda_start_sfn_execution" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=5.3.0"

  application_family       = var.application_family
  datadog_enabled          = true
  datadog_advanced_enabled = true
  environment              = var.environment
  lambda_name              = var.lambda_start_sfn_execution_name
  lambda_description       = "Lambda for fetching incorrect Track records for Metadata Consistency"
  use_container_image      = true
  vpc_id                   = var.vpc_id
  vpc_subnet_ids           = var.vpc_subnet_ids

  // The lambda will be triggered by a MSK event
  msk_event_enabled                      = true
  event_source_mapping_batch_size        = 1
  kafka_topics                             = ["STREAM_DIGITAL_PRODUCT_SUBMIT"]
  event_source_mapping_msk_cluster_name  = var.trigger_msk_cluster_name
  event_source_mapping_msk_cluster_uuid  = var.trigger_msk_cluster_uuid
  event_source_mapping_starting_position = "LATEST"

  lambda_function_reserved_concurrent_executions = "1"

  datadog_function_destination_lambda_name = "DatadogLambdaFunction"

  iam_managed_policy_attachments = [
    aws_iam_policy.start_sfn_execution_policy.arn
  ]

  lambda_function_environment_variables = {
    ENVIRONMENT         = var.environment
    SCHEMA_REGISTRY_URL = var.schema_registry_url
    STEP_FUNCTIONS_ARN  = resource.aws_sfn_state_machine.mcc_state_machine.arn
    SENTRY_DSN          = module.lambda_start_sfn_execution_create_sentry_project.sentry_key_dsn_public_output
}
}