data "aws_ecr_repository" "slz_gdpr_deletion_diff_sender" {
  name = "${local.project_group}/lambda/slz-gdpr-deletion-diff-sender"
}

resource "aws_cloudwatch_log_group" "slz_gdpr_deletion_diff_sender" {
  name              = "/aws/lambda/${local.name_prefix}-slz-gdpr-deletion-diff-sender"
  retention_in_days = local.log_retention[local.env_prefix]

  tags = merge(
    local.common_tags,
    {
      project                  = "SLZ",
      service                  = "CloudWatch",
      plat_env_project_service = "${local.aggregated_tag}_SLZ_CW"
    }
  )
}

module "slz_gdpr_deletion_diff_sender_lambda_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "slz_gdpr_deletion_diff_sender_lambda_role"
  allow_execution_inside_vpc = true

  common_tags = merge(
    local.common_tags,
    {
      project                  = "SLZ",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_SLZ_LMB"
    }
  )

  policies_list = [
    data.aws_iam_policy.logging.arn,
    data.aws_iam_policy.secrets-services-ro.arn,
    module.iam_map.s3_env_ro.arn,
    module.iam_map.ses_sender.arn,
    module.iam_map.s3_sme_data_ro.arn,
  ]
}

resource "aws_lambda_function" "slz_gdpr_deletion_diff_sender" {
  function_name = "${local.name_prefix}-slz-gdpr-deletion-diff-sender"
  image_uri     = "${data.aws_ecr_repository.slz_gdpr_deletion_diff_sender.repository_url}:${local.docker_image_env_tag[local.env_prefix]}"
  package_type  = "Image"
  role          = module.slz_gdpr_deletion_diff_sender_lambda_role.role.arn
  description   = "Managed by Terraform."

  timeout     = 900
  memory_size = 256

  vpc_config {
    security_group_ids = [data.aws_security_group.lambda.id]
    subnet_ids         = data.aws_subnets.private_subnets.ids
  }

  environment {
    variables = {
      ENVIRONMENT           = var.platform.prefix
      SENTRY_DSN            = "${local.secrets_name_prefix}/sentry_config"
      DD_API_KEY_SECRET_ARN = aws_secretsmanager_secret.common_env_secrets["common/DD_API_KEY"].arn
      DD_TRACE_ENABLED      = "true"
      DD_SITE               = "datadoghq.com"
      #DD_LAMBDA_HANDLER     = "slz_gdpr_deletion_diff_sender.handler"
    }
  }

  tags = merge(
    local.common_tags,
    {
      project                  = "SLZ",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_SLZ_LMB"
    }
  )

  depends_on = [
    aws_cloudwatch_log_group.slz_gdpr_deletion_diff_sender,
    module.slz_gdpr_deletion_diff_sender_lambda_role,
  ]

  lifecycle {
    ignore_changes = [
      image_uri
    ]
  }
}
