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

使用Terraform创建Azure Databricks挂载点的可行性咨询

关于Azure Databricks挂载点的Terraform配置方案

能否通过Azure Databricks资源提供程序创建挂载点?

可以,但Azure原生的azurerm_databricks_mount资源仅支持挂载Azure Blob存储,不兼容ADLS Gen2。若要挂载ADLS Gen2,需使用Databricks专属的Terraform Provider(databricks_mount资源)来实现。

用Terraform配置带服务主体权限的ADLS Gen2挂载点

核心步骤

  • 提前为每个挂载点对应的服务主体配置ADLS Gen2容器的必要权限(如Storage Blob Data Contributor),可通过Terraform的azurerm_role_assignment完成权限绑定。
  • 使用Databricks Provider的databricks_mount资源,指定服务主体的客户端ID、租户ID及密钥(建议通过密钥托管服务存储密钥)。

示例代码片段

# 创建ADLS Gen2存储账户及容器
resource "azurerm_storage_account" "adls" {
  name                     = "mystorageaccount"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "GRS"
  is_hns_enabled           = true # 必须启用分层命名空间以支持ADLS Gen2特性
}

resource "azurerm_storage_container" "adls_container" {
  name                  = "mycontainer"
  storage_account_name  = azurerm_storage_account.adls.name
  container_access_type = "private"
}

# 为服务主体分配ADLS容器权限
resource "azurerm_role_assignment" "sp_adls_access" {
  scope                = azurerm_storage_container.adls_container.id
  role_definition_name = "Storage Blob Data Contributor"
  principal_id         = azurerm_service_principal.sp.id
}

# 配置Databricks挂载点
resource "databricks_mount" "adls_mount" {
  name        = "/mnt/adls-container"
  cluster_id  = databricks_cluster.example.id # 也可指定instance_pool_id

  adls_gen2 {
    storage_account_name = azurerm_storage_account.adls.name
    container_name       = azurerm_storage_container.adls_container.name
    service_principal {
      client_id     = azurerm_service_principal.sp.application_id
      tenant_id     = data.azurerm_client_config.current.tenant_id
      client_secret = azurerm_service_principal_password.sp_password.value
    }
  }
}

最优实现方式

  • 敏感信息托管:避免将服务主体密钥硬编码在代码中,使用azurerm_key_vault_secret存储密钥,再通过Databricks Provider引用,降低泄露风险。
  • 模块化复用:将挂载点配置、服务主体权限分配封装为Terraform模块,方便快速复用不同挂载点的配置逻辑。
  • 最小权限原则:为每个服务主体仅分配所需的ADLS权限(如只读场景分配Storage Blob Data Reader),减少权限溢出风险。
  • 挂载验证:Terraform部署完成后,通过Databricks Notebook执行dbutils.fs.ls("/mnt/adls-container")验证挂载状态及权限有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:03:18