ServiceBus、托管 ID、Azure Functions 和应用程序配置无法协同工作

问题描述 投票:0回答:1

所以我有一个使用应用程序配置和托管身份的解决方案。

函数应用程序作为触发器链接到 ServiceBus,要使用托管标识,它需要一个名为 ServiceBusConnection__filledQualifiedNamespace 的配置参数。如果我将其添加到 local.settings 中,那么函数就会运行。所以我知道 ServiceBus 和 Identity 设置正确。

如果我将其添加到我的应用程序配置中,那么它将无法运行,在应用程序配置中,您必须将 __ 替换为 : 或类似的。

当功能应用程序启动时,我可以查看配置设置。在这些设置中,我可以正确地看到 ServiceBusConnection:filledQualifiedNamespace,并且提供程序是应用程序配置,因此我知道与应用程序配置的连接工作正常。

我尝试了很多组合,到目前为止还没有取得任何进展。我收到的错误因设置而异,但通常

“函数‘Functions.TbQueueTrigger’的监听器无法启动。Azure.Messaging.ServiceBus:无法解析连接字符串;要么格式错误,要么不包含众所周知的令牌”

但是该字符串包含与 local.settings 完全相同的 (FQN)。现在这是我在 local.settings 和 AppConfiguration 中都有设置的时候。如果我查看配置数据,我可以看到应用程序配置选项,而不是 local.settings。

如果我从 local.settings 中删除参数,则错误是

“函数“Functions.TbQueueTrigger”的侦听器无法启动。Microsoft.Azure.WebJobs.Extensions.ServiceBus:设置中不存在名为“ServiceBusConnection”的服务总线帐户连接字符串。请确保它是定义的应用程序设置。”

所以我看起来函数触发器根本没有在应用程序配置中查找。在这种情况下,Run 会被这样装饰

   public async Task Run([ServiceBusTrigger("notifications-dev", Connection = "ServiceBusConnection")]
        ServiceBusReceivedMessage message
        )

那么我错过了什么?如何强制触发器在此处使用应用程序配置?有没有更好的方法来装饰函数或确保 ServiceBus 设置正确?

谢谢!

azure azure-functions servicebus azure-app-configuration
1个回答
0
投票

ServiceBus、托管 ID、Azure Functions 和应用程序配置无法协同工作

使用以下过程对我有用:

首先创建一个函数并部署到azure,然后在环境变量中:

enter image description here

我已将 Azure 服务总线接收器角色授予 Function 应用程序的身份:

enter image description here

输出:

enter image description here

如果您已集成应用程序配置服务,则需要按照以下步骤操作:

首先创建:

enter image description here

然后 IAM 授予应用程序构造数据所有者和贡献者角色:

enter image description here

然后等待 10 分钟,然后将其添加到环境变量中:

enter image description here

@Microsoft.AppConfiguration(Endpoint=https://rithwik98.azconfig.io; Key=test)

添加后拉取参考。

输出:

enter image description here

© www.soinside.com 2019 - 2025. All rights reserved.