如何通过代码获取当前的 Azure 服务总线命名空间连接字符串
How to get current Azure Service Bus Namespace Connection String via code
是否可以通过提供命名空间名称来获取 Azure 服务总线命名空间的连接字符串?
我目前在配置中硬编码了连接字符串,但这会在部署到下一个环境后发生变化。我知道命名空间是什么,但无法访问门户以检索其连接字符串。
有人知道这是否可行,或者是否有针对这种情况的更好方法?
无法仅从命名空间名称派生 Azure 服务总线命名空间连接字符串。这将是完全不安全的,任何人都可以访问任何名称空间。有关于秘密管理的常见做法。我将列出其中的一些,您必须研究并了解哪些适用于您的场景。
- 环境变量 - 值可以根据环境而改变,但代码使用相同的环境变量来读取不同环境中的连接字符串。
- Secret manager
- Azure App Configuration Service - 预览版,但稳定且效果很好
在 ARM 模板中,您可以使用以下代码从服务总线命名空间检索连接字符串
"connectionString": "[listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('ServiceBusNamespace_name'), 'RootManageSharedAccessKey'), '2017-04-01').primaryConnectionString]"
是否可以通过提供命名空间名称来获取 Azure 服务总线命名空间的连接字符串?
我目前在配置中硬编码了连接字符串,但这会在部署到下一个环境后发生变化。我知道命名空间是什么,但无法访问门户以检索其连接字符串。
有人知道这是否可行,或者是否有针对这种情况的更好方法?
无法仅从命名空间名称派生 Azure 服务总线命名空间连接字符串。这将是完全不安全的,任何人都可以访问任何名称空间。有关于秘密管理的常见做法。我将列出其中的一些,您必须研究并了解哪些适用于您的场景。
- 环境变量 - 值可以根据环境而改变,但代码使用相同的环境变量来读取不同环境中的连接字符串。
- Secret manager
- Azure App Configuration Service - 预览版,但稳定且效果很好
在 ARM 模板中,您可以使用以下代码从服务总线命名空间检索连接字符串
"connectionString": "[listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('ServiceBusNamespace_name'), 'RootManageSharedAccessKey'), '2017-04-01').primaryConnectionString]"