terraform 模板文件函数无效的模板插值值(AKS 群集名称)

terraform templatefile Function Invalid template interpolation value(AKS Cluster Name)

我尝试使用 terraform 模块和模板文件提供 azure 仪表板,但我收到一条错误消息:

Call to function "templatefile" failed:
src/main/terraform/environment/modules/someservice/resources/dashboards/infrastructure-dashboard.tpl:41,39-55:
Invalid template interpolation value; Cannot include the given value in a
string template: string required., and 25 other diagnostic(s).

错误是由模板中的代码引起的。它不接受仪表板属性中声明的变量。模板中导致错误的代码:

"clusterName": "${k8s_cluster_name}",


地形代码:
resource "azurerm_dashboard" "infra-dashboard" {
  name                = "${upper(terraform.workspace)}-Infrastructure"
  resource_group_name = azurerm_resource_group.rgp-dashboards.name
  location            = azurerm_resource_group.rgp-dashboards.location
  tags = {
    source = "terraform"
  }
  dashboard_properties = templatefile("${path.module}/resources/dashboards/infrastructure-dashboard.tpl",
    {
      md_content                  = var.infra_dashboard_md_content,
      dashboard_title             = var.infra_dashboard_title,
      dashboard_subtitle          = var.infra_dashboard_subtitle,
      sub_id                      = data.azurerm_subscription.current.subscription_id,
      rgp_k8s                     = azurerm_resource_group.seervice-k8s.name,
      k8s_cluster_name            = azurerm_kubernetes_cluster.service-k8s.*.name,
      rgp_service_env_global_name   = azurerm_resource_group.service-env-global.name,
      log_analyt_wrkspc              = local.log_analyt_wrkspc
  })
}

发生错误的 tmeplate 中的片段:
"1": {
            "position": {
              "x": 0,
              "y": 4,
              "colSpan": 9,
              "rowSpan": 4
            },
            "metadata": {
              "inputs": [
                {
                  "name": "queryParams",
                  "value": {
                    "metricQueryId": "node-count",
                    "clusterName": "${k8s_cluster_name}",
                    "clusterResourceId": "/subscriptions/${sub_id}/resourceGroups/${rgp_k8s}/providers/Microsoft.ContainerService/managedClusters/${k8s_cluster_name}",
                    "workspaceResourceId": "/subscriptions/${sub_id}/resourcegroups/${rgp_service_env_global_name}/providers/microsoft.operationalinsights/workspaces/${log_analyt_wrkspc}",
                    "timeRange": {
                      "options": {},
                      "relative": {
                        "duration": 21600000
                      }
                    },
                    "cpuFilterSelection": "total",
                    "memoryFilterSelection": "total_memoryrss"
                  }
                }

例如:

join(",", azurerm_kubernetes_cluster.service-k8s.*.name)

将用“,”连接所有条目。用你需要的替换它

正如 luk2302 所说 azurerm_kubernetes_cluster.service-k8s.*.name 它不是字符串。其实就是一个元组