如何通过Terraform为Databricks访问连接器分配存储账户Blob权限?
解决Terraform中Databricks访问连接器角色分配的“principal id is not guid”错误
你遇到的报错根源是:角色分配代码里误用了Databricks访问连接器的资源ID作为principal_id,但这个字段要求传入的是身份主体的GUID,而非资源本身的ID。
错误代码示例:
resource "azurerm_role_assignment" "databricks_connector_role_assignment" { scope = azurerm_storage_account.storage_account.id role_definition_name = "Storage Blob Data Contributor" principal_id = azurerm_databricks_access_connector.databricks_cdf_audit_access_connector.id }
由于你的Databricks访问连接器已经配置了系统分配身份(identity { type = "SystemAssigned" }),正确的principal_id需要引用该系统身份的主体ID,而非资源ID。
修正后的代码:
resource "azurerm_role_assignment" "databricks_connector_role_assignment" { scope = azurerm_storage_account.storage_account.id role_definition_name = "Storage Blob Data Contributor" principal_id = azurerm_databricks_access_connector.databricks_cdf_audit_access_connector.identity[0].principal_id }
说明:当资源启用系统分配身份后,Terraform会在identity列表字段中返回该身份的详细信息,其中principal_id就是符合要求的GUID格式主体ID,通过identity[0].principal_id即可正确引用。
内容的提问来源于stack exchange,提问作者ZZZSharePoint
相关产品推荐
相关产品推荐

