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

如何用Terraform创建无容器存储账户的Databricks外部位置?

解决Databricks外部位置无容器时的创建问题

核心原因

Databricks外部位置的URL必须指向已存在的Azure存储容器,创建时会立即验证该路径的可访问性。如果容器不存在,会触发InvalidUriAuthorityException权限验证失败错误,哪怕后续计划动态添加容器也不行。

解决步骤

  1. 先创建占位容器
    通过Terraform同时创建一个临时占位容器,确保创建外部位置时容器已存在。示例代码:
# 创建临时占位容器(后续可保留或删除)
resource "azurerm_storage_container" "placeholder" {
  name                  = "temp-initial-container"
  storage_account_name  = data.azurerm_storage_account.storage.name
  container_access_type = "private" # 根据实际权限需求调整
}

# 基于占位容器配置Databricks外部位置
resource "databricks_external_location" "external_location" {
  url             = format("abfss://%s@%s.dfs.core.windows.net", azurerm_storage_container.placeholder.name, data.azurerm_storage_account.storage.name)
  credential_name = "your-storage-access-credential" # 替换为实际的Databricks访问凭证名称
  owner           = "account users" # 替换为实际权限所有者
}
  1. 后续动态添加容器的处理
    当需要添加新容器时,可以直接创建新的存储容器,再按需创建对应的Databricks外部位置:
# 动态添加新容器
resource "azurerm_storage_container" "new_container" {
  name                  = "your-new-container"
  storage_account_name  = data.azurerm_storage_account.storage.name
  container_access_type = "private"
}

# 为新容器创建外部位置
resource "databricks_external_location" "new_external_location" {
  url             = format("abfss://%s@%s.dfs.core.windows.net", azurerm_storage_container.new_container.name, data.azurerm_storage_account.storage.name)
  credential_name = "your-storage-access-credential"
  owner           = "account users"
}

注意事项

  • 确保Databricks的访问凭证(如服务主体、托管身份)拥有存储账户的Storage Blob Data Contributor或对应权限,否则即使容器存在也会验证失败。
  • 占位容器可根据后续需求保留或删除,删除前需确保没有依赖该外部位置的作业或数据对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:30:14