# The attribute `${data.aws_caller_identity.current.account_id}` will be current account number.
data "aws_caller_identity" "current" {}

# The attribue `${data.aws_iam_account_alias.current.account_alias}` will be current account alias
data "aws_iam_account_alias" "current" {}

module "aws_accounts_list" {
  source = "../../../modules/iam/aws_accounts_list"
}

module "domains" {
  source = "../../../modules/domains/atlas"
}

data "aws_s3_bucket" "security_logs" {
  bucket = "security-${local.account_id}-logs"
}

module "cloudwatch_logs_retention_by_env" {
  source = "../../../modules/cloudwatch/logs_retention_by_env"
}

module "client_platforms_list" {
  source       = "../../../modules/vpc/whitelist_nat_by_platform"
  allowed_envs = var.nat_whitelist
}

module "web_ip_whitelist" {
  source = "../../../modules/ip_whitelist_v2"
  users  = var.web_whitelist
}

module "projectgroup_whitelist" {
  source = "../../../modules/ip_whitelist_v2"
  users  = var.projectgroup_whitelist
}

module "main_sg_map" {
  source = "../../module_sg_map"

  name_prefix             = local.name_prefix
  vpc_id                  = module.main_vpc.vpc_id
  projectgroup_whitelist  = module.projectgroup_whitelist.whitelist_for_sg
  external_access_mode    = "vpn"
  external_https_access   = concat(module.web_ip_whitelist.whitelist_for_sg, module.client_platforms_list.rules_list)
  vpn_masq_cidrs          = var.vpn_servers
  managed_prefix_list_ids = [data.aws_ec2_managed_prefix_list.vpn_ny_users.id]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "Networking",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_NTW"
    }
  )
}
