Terraform创建Azure Synapse Azure Function链接服务时函数密钥缺失报错
解决Azure Synapse链接服务流水线报错「Azure function activity missing function key」
问题根源
你当前配置的authentication为Anonymous,但同时传入了functionKey,这会导致Synapse链接服务无法正确存储密钥信息,进而流水线中的Azure Function Activity找不到所需密钥。匿名认证模式下Synapse不会使用传入的密钥,而流水线活动需要密钥调用函数,这是核心矛盾点。
修复方案
1. 修改认证方式为FunctionKey
将type_properties_json中的authentication字段从Anonymous改为FunctionKey,确保Synapse链接服务正确存储密钥并在流水线中正常调用。
2. 验证密钥数据源
确认data.azurerm_function_app_host_keys.FunctionName.default_function_key能正确获取Function App的默认函数密钥,该数据源是获取函数密钥的标准方式。
修改后的完整代码
resource "azurerm_synapse_linked_service" "FunctionName" { name = "FunctionName" synapse_workspace_id = azurerm_synapse_workspace.synapse.id type = "AzureFunction" type_properties_json = <<JSON { "functionAppUrl": "https://${data.azurerm_function_app.FunctionName.default_hostname}", "authentication": "FunctionKey", "functionKey": "${data.azurerm_function_app_host_keys.FunctionName.default_function_key}" } JSON depends_on = [ azurerm_synapse_firewall_rule.allowAll, data.azurerm_function_app.FunctionName, data.azurerm_function_app_host_keys.FunctionName ] }
额外说明
你提到azurerm_function_app没有connectionString导出项,这是正常情况——Azure Function链接服务并不依赖connectionString,仅需functionAppUrl和对应认证方式的密钥即可,该点不影响当前问题的解决。
内容的提问来源于stack exchange,提问作者Ehsan
相关产品推荐
相关产品推荐

