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

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


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

  environment        = var.environment
  application_family = var.application_family
  lambda_name        = var.fan_triggered_send_definitions_lambda_name

  use_container_image                            = true
  lambda_description                             = "Retrieve triggered send definitions from Salesforce Marketing Cloud API"
  vpc_enabled                                    = true
  vpc_id                                         = module.vpc_info.vpc_id
  vpc_subnet_ids                                 = module.vpc_info.default_private_subnet_ids
  datadog_enabled                                = true
  datadog_advanced_enabled                       = true
  lambda_function_reserved_concurrent_executions = 10
  lambda_function_timeout                        = 60

  lambda_function_environment_variables = {
    ENVIRONMENT = var.environment
    SENTRY_DSN  = module.lambda_fan_triggered_send_definitions_sentry_project.sentry_key_dsn_public_output
  }

}

module "fan_triggered_send_definitions_secrets" {
  source = "git@github.com:theorchard/terraform-secrets-manager.git//?ref=1.5.1"

  environment        = var.environment
  service_name       = var.fan_triggered_send_definitions_lambda_name
  secret_name        = "MARKETING_CLOUD_API_CREDENTIALS"
  application_family = var.application_family
}

module "lambda_fan_triggered_send_definitions_datadog_monitoring" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=6.13.9"

  environment  = var.environment
  service_name = var.fan_triggered_send_definitions_lambda_name
  teams        = ["kdh"]

  notification_endpoints = var.notification_endpoints
}

# permission to be invoked by api gateway.
resource "aws_lambda_permission" "lambda_fan_triggered_send_definitions_api_integration_permission" {
  statement_id  = "AllowAPIGatewayIntegrationInvoke"
  action        = "lambda:InvokeFunction"
  function_name = module.lambda_fan_triggered_send_definitions.lambda_arn
  principal     = "apigateway.amazonaws.com"
  source_arn    = "${aws_api_gateway_rest_api.fan_response_rest_api.execution_arn}/*"
}
