locals {
  secrets = [
    "SENTRY_DSN",
    "SLACK_TOKEN"
  ]
}

data "aws_ecr_repository" "billing_report_ecr" {
  name     = "infra/lambda/billing-report"
  provider = aws.gdb-infra-dev
}

data "aws_kms_key" "secrets_general_key" {
  key_id = "alias/prod/${local.project_group}/secrets_general"
}

resource "aws_cloudwatch_log_group" "log_group" {
  name              = "/aws/lambda/${local.name_prefix}-billing-report"
  retention_in_days = 180

  tags = {
    project                  = "Infrastructure",
    service                  = "CW",
    plat_env_project_service = "${local.aggregated_tag}_CW"
  }
}

resource "aws_secretsmanager_secret" "secret" {
  for_each = toset(local.secrets)

  name       = "${local.secret_prefix}/billing_report/${each.value}"
  kms_key_id = data.aws_kms_key.secrets_general_key.id

  tags = {
    project                  = "Infrastructure",
    service                  = "Secrets Manager",
    plat_env_project_service = "${local.aggregated_tag}_SCRT"
  }
}

/* resource "aws_lambda_function" "lambda" {
  function_name = "${local.name_prefix}-billing-report"
  image_uri     = "${data.aws_ecr_repository.billing_report_ecr.repository_url}:master"
  package_type  = "Image"
  role          = module.lambda_role.role.arn
  description   = "Billing report lambda creates an aggregated report from Cost Explorer in each account, uploads it to s3 and refreshes Quicksight data source"

  memory_size = 256
  timeout     = 900

  environment {
    variables = merge(
      {
        ENVIRONMENT    = var.env_prefix
        TEMP_FILE_PATH = "/tmp/billing_report/"
      },
      { for secret in local.secrets : secret => aws_secretsmanager_secret.secret[secret].name }
    )
  }

  tags = {
    project                  = "Infrastructure",
    service                  = "Lambda",
    plat_env_project_service = "${local.aggregated_tag}_LMB"
  }

  depends_on = [
    aws_secretsmanager_secret.secret,
    aws_cloudwatch_log_group.log_group,
    module.lambda_role,
  ]

  lifecycle {
    ignore_changes = [
      image_uri
    ]
  }
}

module "schedule_trigger" {
  source              = "../../../modules/lambda/schedule_trigger_v2"
  function_name       = aws_lambda_function.lambda.id
  account_id          = local.account_id
  schedule_expression = "cron(30 16 * * ? *)"
} */
