我有一个具有系统分配的托管标识的应用程序服务,以及一个通过队列触发器运行的 WebJob。如果我为应用程序服务提供 AzureWebJobsStorage 连接字符串,它就可以工作,没有问题。它从队列中获取消息并执行其操作。但这不太安全,到目前为止我还无法让它在托管身份下工作。
我使用以下设置来提供所需的信息:
AzureWebJobsStorage__accountName:[我的存储帐户名称]
AzureWebJobsStorage__credential:托管身份
它应该拥有使用存储帐户名称和队列触发器中设置的队列名称所需的一切(加上托管身份上存储帐户的权限,我已为其提供了贡献者、Key Vault Secrets 用户和存储队列Data Contributor)来监听队列。但它没有给出任何迹象表明它正在这样做。它也不会给出错误。它只是说“作业主机已开始”。
哦,我设置了 AzureWebJobsDashboard,因为似乎有必要使用仪表板,但显然它不使用它来与队列交互。
如果有什么区别的话,应用程序服务是 Windows。
我的问题是:
我的
appsettings.json
文件:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Azure.Core": "None"
}
}
}
确保您已设置 LogLevel。
感谢@techcommunity提供清晰的步骤。
我从这个博客中获取了参考资料,并对 WebApp 遵循相同的做法。
AzureWebJobsStorage__accountname
设置,并将其值设置为您的存储帐户名称。Storage Account Contributor
Storage Blob Data Owner
Storage Queue Data Contributor
并运行 Web 作业
输出: