Azure 函数 ServiceBusTrigger 连接字符串值不在应用程序设置中

Azure function ServiceBusTrigger connection string value not in application settings

在我通过 PowerShell > ARM 模板部署函数应用程序和函数之前,我动态获取服务总线连接字符串并更新 function.json 文件中连接绑定中的值。然后我部署函数应用程序和函数。

部署有效,但函数应用 returns 一条错误消息:

Microsoft.Azure.WebJobs.ServiceBus: Microsoft Azure WebJobs SDK ServiceBus connection string 'Endpoint=sb://sbname.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;[Hidden Credential]' is missing or empty.

问题是:我们真的必须在包含此连接字符串的函数应用程序上创建应用程序设置吗?除了使用应用程序设置没有其他选择吗?

感觉将连接字符串存储在服务总线以外的其他位置只会造成另一个漏洞。 我知道我可以在 function.json 文件中定义 "connection": "RootManageSharedAccessKey_SERVICEBUS",然后创建一个具有相同名称的应用程序设置,但这不是我想要的前进方向。

请检查我的发现是否对有帮助:

  • 您可以利用 Azure Key Vault 服务Azure 应用程序配置服务,而不是直接存储服务总线连接字符串。

  1. 您可以在 Azure Key Vault.
  2. 中存储连接字符串、Key-value 对、客户端机密、证书密码等机密值

假设您已将 ServiceBus 连接字符串存储在 Key Vault 中。您想通过应用程序设置在功能应用程序中检索,但在应用程序设置中您可以定义为:

"connection": @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/RootManageSharedAccessKey_SERVICEBUS/)

此 KeyVault URI 不能被任何其他用户访问,直到他们被分配 System用户分配的托管标识权限。

  1. Azure 应用程序配置 是一个中心位置,您可以在其中集中管理应用程序设置并保护其访问。有关详细信息,请参阅