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

如何在Terraform中获取Azure Notification Hub的连接字符串?

问题

已通过Terraform创建Azure Notification Hub,需要在Azure Function的应用设置中配置格式为Endpoint=<endpoint_with_sb_protocol>;SharedAccessKeyName=<notification_hub_auth_rule_name>;SharedAccessKey=<access_key>的连接字符串,但现有两种获取方式均不符合要求:

  • 使用azurerm_notification_hub_authorization_rule.notifications-ntf-carriers-rules.primary_access_key仅得到签名密钥
  • 使用azurerm_notification_hub_namespace.notifications_ntfns.servicebus_endpoint仅得到HTTPS协议的端点

相关Terraform资源(命名空间、通知中心、授权规则)已创建完成,需生成符合要求的连接字符串。

解决方案

AzureRM Terraform Provider未直接提供拼接好的目标格式连接字符串,但可通过字符串插值+协议替换手动构建:

核心逻辑:

  1. 将命名空间的servicebus_endpoint中的https协议替换为sb协议
  2. 拼接授权规则的名称、主访问密钥,组合成目标格式

修改Azure Function的app_settings配置如下:

resource "azurerm_linux_function_app" "notifications_func_push" {
  # 保留原有配置不变

  app_settings = {
    # 保留其他应用设置不变
    Notification_HubConnectionString = "Endpoint=${replace(azurerm_notification_hub_namespace.notifications_ntfns.servicebus_endpoint, "https://", "sb://")};SharedAccessKeyName=${azurerm_notification_hub_authorization_rule.notifications-ntf-carriers-rules.name};SharedAccessKey=${azurerm_notification_hub_authorization_rule.notifications-ntf-carriers-rules.primary_access_key}"
    Notification_HubName             = azurerm_notification_hub.notifications_ntf-carriers.name
  }

  # 保留原有配置不变
}

关键细节说明

  • replace(..., "https://", "sb://"):将命名空间端点的HTTPS协议替换为Notification Hub要求的SB协议
  • 直接引用授权规则的name字段作为SharedAccessKeyName
  • 引用授权规则的primary_access_key字段作为SharedAccessKey

通过以上配置即可自动生成符合要求的连接字符串,无需手动拼接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:33:07