Функции Terraform необходимо обернуть в синтаксис выражения, чтобы показать, что это не буквальное значение: "${}"
Поэтому попробуйте это: project_name_list = "${keys(var.project_map)}"
Пример в документации написанкак будто он запускается из командной строки terraform, которая уже предполагает, что команда является выражением HCL и не требует этого синтаксиса.
UPDATE
Я сказал выше, чтосинтаксис выражения должен показать, что это не буквальное значение.Вероятно, более точно говорить об этом как синтаксис выражения против синтаксис конфигурации .Синтаксис конфигурации - это первый уровень интерполяции, который формирует базовую структуру вашего файла terraform с блоками ресурсов, блоками данных и т. Д. Второй уровень интерполяции - это синтаксис выражения, который используется для генерации значений, используемых вашей конфигурацией.
Думая об этом в этих терминах, лучше понять сообщение об ошибке Unknown token
, потому что terraform пытается прочитать его как ключевое слово конфигурации.
Я сравнил его с буквальным значением, потому что оно вта же позиция, что и для буквального значения.