You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform通过for_each创建Azure SQL用户时属性引用错误排查

解决方案:修正Azure SQL用户创建中的属性引用错误

你的代码出现的错误是因为变量db_details定义的属性为db_name,但在mssql_user资源中错误引用成了each.value.db,需将所有错误的引用替换为each.value.db_name,涵盖database、username和password三个字段。

修正后的完整代码如下:

variable "db_details" {
  description = "Details of certs to be created"
  type = list(object({
    db_name       = string
    roles         = list(string)
  }))
}

## Random Password for SQL db's
resource "random_password" "db_passwords" {
  for_each     = { for db in var.db_details : db.db_name => db }
  length = 32
  special = false
}

resource "mssql_user" "db_users" {
  server {
    host = "mysqlserverr"
    port = "1433"
    login {
      username = local.sql_server_username
      password = data.azurerm_key_vault_secret.sql_server_password.value
    }
  }
  for_each     = { for db in var.db_details : db.db_name => db }
  database = join("-", [
    local.resource_name_prefix,
    each.value.db_name
  ])
  username = join("-", [
    "svc",
    each.value.db_name,
    "user"
  ])
  password = random_password.db_passwords[each.value.db_name].result
  roles    = each.value.roles
}

错误原因说明

Terraform报错提示each.value对象没有db属性,是因为你在var.db_details的类型定义里明确声明的属性是db_name而非db。修正所有属性引用后,random_password资源生成的密码就能正确关联到对应的数据库用户,实现每个数据库生成独立密码并绑定专属用户的需求。

内容的提问来源于stack exchange,提问作者Adesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:20:30