Azure functions Azure Function with QueueTrigger:是否可以仅配置存储帐户Url并使用托管标识访问队列?

Azure functions Azure Function with QueueTrigger:是否可以仅配置存储帐户Url并使用托管标识访问队列?,azure-functions,connection-string,azure-queues,azure-managed-identity,queuetrigger,Azure Functions,Connection String,Azure Queues,Azure Managed Identity,Queuetrigger,我定义了这个函数: [FunctionName(“我的队列触发器”)] 公共任务RunAsync([QueueTrigger(“我的队列名称”,Connection=“azurewebjobstorage”)]字符串文本) { //代码在这里。。。 } 而AzureWebJobsStorage(在Azure上)包含以下内容:“DefaultEndpointsProtocol=https;AccountName=my存储帐户;AccountKey=mykey;EndpointSuffix=cor

我定义了这个函数:

[FunctionName(“我的队列触发器”)]
公共任务RunAsync([QueueTrigger(“我的队列名称”,Connection=“azurewebjobstorage”)]字符串文本)
{
//代码在这里。。。
}
而AzureWebJobsStorage(在Azure上)包含以下内容:
“DefaultEndpointsProtocol=https;AccountName=my存储帐户;AccountKey=mykey;EndpointSuffix=core.windows.net”

(注意,对于本地开发,值为
“UseDevelopmentStorage=true”


我的问题是,也可以在这里定义存储帐户名,如
”https://my-storage-account.queue.core.windows.net“
并使用Azure函数中的托管标识(具有处理器权限)来读取/触发消息。

我认为您的要求是不可能的

连接到存储的底层代码已封装在WebJob包中,该包作为成员包包含在整个函数的扩展包中。您必须修改底层代码以实现所需的功能

检查queuetrigger属性的源代码:

使用系统;
使用系统诊断;
使用Microsoft.Azure.WebJobs.Description;
命名空间Microsoft.Azure.WebJobs
{
/// 
///属性,用于将参数绑定到Azure队列消息,使函数在
///消息已排队。
/// 
/// 
///方法参数类型可以是以下类型之一:
/// 
///CloudQueueMessage
/// 
/// 
///用户定义的类型(序列化为JSON)
/// 
/// 
[AttributeUsage(AttributeTargets.Parameter)]
[调试程序显示(“{QueueName,nq}”)]
[连接提供程序(类型(StorageAccountAttribute))]
[有约束力]
公共密封类QueueTriggerAttribute:属性,IConnectionProvider
{
私有只读字符串_queueName;
///初始化类的新实例。
///要绑定到的队列的名称。
公共QueueTriggerAttribute(字符串queueName)
{
_queueName=队列名称;
}
///获取要绑定到的队列的名称。
公共字符串队列名
{
获取{return\u queueName;}
}
/// 
///获取或设置包含Azure存储连接字符串的应用程序设置名称。
/// 
公共字符串连接{get;set;}
}
}
您可以找到源代码,它告诉我们需要提供连接字符串,而不是存储url

下载,并检查queuetrigger的源代码,您会发现源代码没有实现您想要的。您无法告诉函数您想要使用MSI,并且它也不提供任何使用此功能的方法


简而言之,源代码无法实现您的想法。除非您修改源代码的底层实现,重新编译并导入包,否则这是不可能的。

queuetrigger的具体实现已经封装在webjob包中,并且源代码没有执行您提到的MSI验证,因此您的想法是不可能的。这是出于设计,您必须提供连接字符串而不是存储url。嗨,如果您没有更多疑问,我们现在可以结束这个问题吗?