我在 Azure 中创建了一个 ServiceBus 命名空间,以及一个主题和一个订阅。我还有一个简单的 Azure 版本 1 函数,该函数在 ServiceBus 中触发接收到的主题,如下所示:
[FunctionName("MyServiceBusTriggerFunction")]
public static void Run([ServiceBusTrigger("myTopic", "mySubscription", Connection = "MyConnection")]string mySbMsg, TraceWriter log)
{
log.Info($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
当我使用主题的共享访问策略在函数应用程序设置中定义连接字符串时,该函数很好地触发了 ServiceBus 中的主题,如下所示:
Endpoint=sb://MyNamespace.servicebus.windows.net/;SharedAccessKeyName=mypolicy;SharedAccessKey=UZ...E0=
现在,我想使用托管服务标识 (MSI) 来访问 ServiceBus,而不是共享访问密钥。根据这个(https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/services-support-msi)应该是可能的,除非我误解了一些东西。我还没有设法让它工作。
我尝试的是
- 在 Azure 门户中为我的函数设置托管服务标识“开启”
- 为 Azure 门户的 ServiceBus 访问控制部分中的函数赋予所有者角色
- 像这样设置 MyFunction 的连接字符串:Endpoint=sb://MyNamespace.servicebus.windows.net/
该功能在此设置中未触发,所以我错过了什么或我做错了什么?我将不胜感激任何可以帮助我进一步发展的建议。谢谢。