当前位置: 首页 > 知识库问答 >
问题:

Azure函数-使用具有托管标识的队列触发器

万俟超
2023-03-14

我正在尝试将托管标识与Azure功能V3和QueueTrigger一起使用。功能代码的定义如下:

 [Function("ProcessUserData")]
 public async Task ProcessUserData([QueueTrigger("%QueueSettings:UserDataQueue%", Connection = "QueueSettings:StorageAccount")] string queueItem, FunctionContext context)
 {
      var logger = context.GetLogger<QueueListener>();
      ... 
 }

根据微软留档这应该是可能的通过定义一些额外的配置属性

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference?tabs=blob#local-development-with-identity-based-connections

我的本地人。设置。json如下所示:

// "QueueSettings:StorageAccount": "",
"QueueSettings:StorageAccount__queueServiceUri": "https://mytestfa.queue.core.windows.net/",
"QueueSettings:StorageAccount__credential": "managedidentity",

尝试在本地运行项目时,我遇到以下错误:

[2021-12-06T18:07:53.181Z]“ProcessUserData”函数出错:Microsoft。蔚蓝色的WebJobs。主机:错误索引方法的函数。ProcessUserData’。微软蔚蓝色的WebJobs。扩展。存储:存储帐户连接字符串“AzureWebJobsQueueSettings:StorageAccount”不存在。确保它是已定义的应用程序设置。

当我使用和空连接字符串我得到另一个错误:

"QueueSettings:StorageAccount": "",
"QueueSettings:StorageAccount__queueServiceUri": "https://mytestfa.queue.core.windows.net/",
"QueueSettings:StorageAccount__credential": "managedidentity",

错误:

[2021-12-06T18:25:20.262Z]'ProcessUserData'函数出错:Microsoft. Azure. WebJobs. Host: Error索引方法'函式. ProcessUserData'. Microsoft. Azure. Web作业.扩展。存储:'AzureWebJobQueueSetting: Storage帐户'的存储帐户连接字符串无效。

使用带帐户密钥的完整连接字符串时,这可以正常工作,但我们必须使用托管标识。我已升级到最新版本的Azure函数核心Tole(3.0.3904),正在使用Visual Studio 2022。

这应该工作的额外留档:https://devblogs.microsoft.com/azure-sdk/introducing-the-new-azure-function-extension-libraries-beta/

谢谢你的见解。

共有1个答案

羊越
2023-03-14

我通过安装5.0.0-beta版解决了这个问题。4版本的NuGet软件包“Microsoft.Azure.Functions.Worker.Extensions.Storage”。

现在管理识别功能正在按预期工作。希望这将很快进入遗传算法。

 类似资料:
  • 我试图使用托管标识从API管理实例调用Azure函数。我已为我的APIM实例设置了系统管理的标识。我已将参与者角色授予Azure Function应用程序上的此身份。我还将应用程序服务身份验证更改为AD。 现在我尝试从API调用该函数。 我有两个问题: 第一个:当我使用身份验证管理身份策略来获取令牌时,我得到了一个错误,当我使用受众https://myfunctionapp.azurewebsit

  • 我在Azure中创建了一个ServiceBus命名空间,以及一个主题和一个订阅。我还有一个简单的Azure version 1函数,可在ServiceBus中的接收主题上触发,如下所示: 当我通过使用主题的共享访问策略在函数应用程序设置中定义连接字符串时,该函数会很好地触发ServiceBus中的主题,如下所示: 现在,我想使用托管服务标识(MSI)来访问服务总线,而不是共享访问密钥。根据这个(h

  • 有没有办法将Azure托管标识与LinuxVM一起使用来访问AzureSQL数据库?我只能找到这个文档https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql它专门针对Windows VM。Linux机器是否有文档

  • 在.NET core 2.0中使用创建时,我遇到了一个问题。 在体系结构中,当在用于创建用户的队列中创建新消息时,服务必须接收该消息并根据其中的信息在数据库中创建用户。 在Visual Studio2017中,我在下创建了一个新项目。 这种的正确实现是什么?在GitHub上有什么例子吗?提前道谢。

  • 我有一个Java项目,它使用了一些Azure函数,如HttpTrigger和QueueTrigger。我使用原型来生成这个项目,因此它可以使用HttpTrigger的一些样板代码和它的单元测试,但对QueueTrigger没有任何帮助。我正试图得到帮助,为这个QueueTrigger编写一个好的单元测试,它实际上是从队列中读取消息(弹出)。队列的代码如下所示: 有没有人能推荐一下这个队列触发azu

  • 我们计划在我们的单个Azure kubernetes集群上部署多个应用程序,每个应用程序都将拥有自己的一组Azure资源-例如:Key vault、Storage。 我计划为每个应用程序提供个人托管身份,并提供对相关资源的访问。 我知道AZURE AAD POD identify是配置POD以使用托管标识访问AZURE资源的方法。 但是,如何将多个托管标识添加到Azure kubernetes集群