通过 Azure DevOps 部署 Azure Function App 时。我们收到以下错误:
Starting: AzureFunctionApp
==============================================================================
Task : Azure Functions Deploy
Description : Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications
Version : 2.225.1
Author : Microsoft Corporation
Help : https://aka.ms/azurefunctiontroubleshooting
==============================================================================
Got service connection details for Azure App Service:'***'
Updating App Service Application settings. Data: {"WEBSITES_ENABLE_APP_SERVICE_STORAGE":"true","WEBSITE_RUN_FROM_PACKAGE":"1"}
App Service Application settings are already present.
Package deployment using ZIP Deploy initiated.
##[error]Failed to deploy web package to App Service.
##[warning]Can't find loc string for key: KuduStackTraceURL
仅在部署约 45 分钟后超时后才会出现该错误。其他功能都部署得很好,就是这个好像有问题。
我看到了很多关于这个特定错误的答案,但没有一个真正击中要害。
导致我走上这条路的是帐户的“存储”可能是错误的。因此,首先要检查的是
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
环境变量的设置。这应该是指向存储帐户的指针。
如果此连接字符串错误或损坏,请修复此问题。
接下来,如果这是 KeyVault 参考(或者即使不是),您可能有一个设置
WEBSITE_SKIP_CONTENTSHARE_VALIDATION: '1'
设置此选项后,将跳过 Azure 存储中“FileShare”的自动创建。当您使用 KeyVault 引用时,这是必需的,但本质上打开此功能后,它不会自动创建函数应用程序所需的文件夹。
如果设置为 1,则需要手动创建文件共享。
就我而言,使用二头肌(尽管您可以手动创建)
resource fileServices 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01'= {
name: '${storageAccountName}/default/${functionAppName}'
}
如果您不确定此文件共享的创建位置或命名,请通过门户针对同一存储帐户创建新的 azure 函数,并检查它自动创建的文件夹。
手动创建此文件共享后,我可以部署我的函数应用程序。