resource "aws_efs_file_system" "efs" {
  kms_key_id       = var.kms_key_id
  encrypted        = true
  creation_token   = var.name
  performance_mode = "generalPurpose"
  tags = merge(var.service_tags, {
    Name = "${var.name}",
    env  = "backup"
  })
}

resource "aws_efs_mount_target" "mount_target" {
  file_system_id  = aws_efs_file_system.efs.id
  security_groups = var.mount_target_security_group_ids
  subnet_id       = var.mount_target_subnet_id
}

resource "aws_efs_access_point" "efs" {
  lifecycle {
    create_before_destroy = false
  }
  file_system_id = aws_efs_file_system.efs.id

  root_directory {
    path = var.root_directory_path
    creation_info {
      owner_uid   = "1000"
      owner_gid   = "1000"
      permissions = "755"
    }
  }

  posix_user {
    uid = "1000"
    gid = "1000"
  }

  tags = merge(var.service_tags, {
    Name = "${var.name}-access-point"
  })
}

resource "aws_efs_backup_policy" "policy" {
  file_system_id = aws_efs_file_system.efs.id

  backup_policy {
    status = "ENABLED"
  }
}
