我们遇到了 Blob 触发函数的问题。该函数是用javascript编写的。我们很难为它制定一个自动化的部署流程。以下是我们遵循的步骤。
使用 ARM 模板和参数文件在现有资源组中创建函数应用
New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $armParametersFilePath;
通过Kuduapi
部署函数代码Invoke-RestMethod -Uri "$apiUrl" -Method Put -InFile "$functionCodeArchivePath" -Credential $credentials -DisableKeepAlive -UserAgent "powershell/1.0" -TimeoutSec 600
npm install通过kudu api运行命令
Invoke-RestMethod -Uri "$apiCommandUrl" -Method Post -Body $json -DisableKeepAlive -ContentType "application/json" -Credential $credentials -UserAgent "powershell/1.0" -TimeoutSec 1200
在最后一步 -npm install在 Kudu 上获取依赖项 ( )的命令超时,这似乎是一个已知问题。
为了克服这个问题,我们采用 WebPack 将所有依赖项打包到一个 JavaScript 文件中,遵循这种方法。
现在部署速度更快,但该功能似乎没有正确执行。
当我们将一个文件放入我们的 blob 存储帐户时,该函数是从 触发的,该函数似乎并不总是记录执行跟踪。有些运行具有完整的日志,有些运行只包含Function started在其中而没有任何自定义日志语句。
这是直接来自 Kudu 的日志(D:\home\LogFiles\Application\Functions\Function\functionname>) …