[英]Azure Function App Blob Triggers using identity-based authentication returns a powershell error
我们有一个带有 blob 触发器的 function 应用程序。 最近,我已根据此文档将触发器迁移到基于身份的身份验证。 它在我的机器和 function 应用程序上本地运行良好。 请注意,该应用程序是在 Python 中编写的。尽管错误发生在应用程序被调用之前,所以我怀疑语言是这里的一个因素。
我的同事最近开始在function上进行协作。当他尝试在本地调试时,当他尝试启动function时(当function将连接到触发器的队列服务时),他就出现了这个错误
发生了未处理的异常。 主机正在关闭。 Azure.Identity: Azure PowerShell 由于未知错误,身份验证失败。 'az' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我告诉他安装 Azure CLI,错误切换为:
发生了未处理的异常。 主机正在关闭。 Azure.Identity: Azure PowerShell 由于未知错误,身份验证失败。 'pwsh' 不是内部或外部命令,也不是可运行的程序或批处理文件。
该错误显然似乎是缺少 powershell 核心 CLI。 让我感到困扰的是,除了 windows 捆绑的 powershell 之外,pwsh 在我的机器上也不是可识别的命令。 因此,我应该得到这个错误,但我的同事却没有。
这是我们尝试过的:
我们在 Windows 10 19044 工作
主机.json
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[2.*, 5.0.0)"
},
"functionTimeout": "00:55:00",
"extensions": {
"blobs": {
"maxDegreeOfParallelism": 1
},
"queues": {
"batchSize": 1,
"newBatchThreshold": 0
}
}
}
function.json
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"direction": "in",
"path": "PROJECT/documents/{name}",
"connection": "PROJECT"
}
]
}
我通过阅读this弄明白了。
当无法从 VSC 获取用户上下文时,身份验证将通过 Azure CLI 进行。 所以,这就解释了为什么我的同事和我有不同的结果。 对我来说,该程序将使用我的 VSC 凭据进行身份验证,但它对我的同事不起作用。
为了解决这个问题,我们:
az login
来确保它正常工作不能肯定地说这是解决它的第一步,但它已经解决了。
此错误的可能原因之一是用户(或系统)PATH 环境变量不包含 PowerShell 可执行文件所在的目录。 它通常位于C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
,虽然 PATH 变量包含C:\Windows\System32
目录,但 Windows 可能无法在其子文件夹中找到可执行文件。
解决方案需要将PATH环境变量设置为 PowerShell 可执行文件所在的目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.