“ az functionapp部署”报告成功,但Azure中的“功能”视图为空

时间:2020-09-23 17:02:17

标签: azure azure-functions azure-cli

我有1个出于某些原因不想部署的功能应用程序(我管理的所有其他30个功能应用程序都可以使用相同的ZipDeploy方法很好地部署)。

运行以下AzureCLI命令以部署到现有的基于消耗的功能应用程序后:

az functionapp deployment source config-zip --resource-group $resourceGroupName --name $functionAppName --src $artifactPath

这将返回成功的部署结果(有关完整的JSON结果,请参阅问题底部),但是在功能应用程序的“功能”刀片中查找的内容为空:

the functions blade in the portal (empty)

我的问题是-我在这里做错了什么?为什么通过AzureCLI部署功能失败?

一些背景:

  • 我们正在使用的功能是预编译的C#
  • 功能应用由Terraform创建
  • 此功能是服务总线触发功能,与其他成功的功能部署具有相同的host.json / functions.json

到目前为止我尝试过的事情:

  • 通过Visual Studio 2019中的“发布”路由进行部署作为测试。这可以成功工作。
  • 在本地运行AzureCLI命令,结果相同
  • 对照suggested folder structure检查了功能代码结构,这符合
  • 将我正在部署的压缩工件与其他成功的部署zip进行了比较。与工作功能结构相同。

AzureCLI命令的完整日志记录: 将SCM_DO_BUILD_DURING_DEPLOYMENT设置为false 等待SCM网站更新为最新的应用程序设置 获取scm站点凭据以进行zip部署 开始zip部署。此操作可能需要一段时间才能完成... 部署终结点使用状态代码202进行了响应

AzureCLI命令的完整JSON响应:

active                : True
author                : N/A
author_email          : N/A
complete              : True
deployer              : ZipDeploy
end_time              : 23/09/2020 16:32:28
id                    : 02c6219516244615beca1c126749baa1
is_readonly           : True
is_temp               : False
last_success_end_time : 23/09/2020 16:32:28
log_url               : https://xxxx.scm.azurewebsites.net/api/deployments/latest/log
message               : Created via a push deployment
progress              :
provisioningState     :
received_time         : 23/09/2020 16:31:55
site_name             : xxxx
start_time            : 23/09/2020 16:31:55
status                : 4
status_text           :
url                   : https://xxxx.scm.azurewebsites.net/api/deployments/latest

编辑1:这是wwwroot文件夹的内容,适合任何有兴趣的人-它们遵循与我们拥有的其他功能相同的结构(可以很好地部署并显示在门户网站的“功能”视图中): The contents of the wwwroot folder

2 个答案:

答案 0 :(得分:2)

我可能知道您的ZipDeploy过程中出了什么问题。也许您获得zip文件夹的方式不正确。

正如我所说,您可以检查命运功能应用程序名称是否正确,并检查 https:// .scm.azurewebsites.net / DebugConsole ->中的内容站点-> wwwroot (kudu)是正确的。

ZipDepoly的正确步骤是:

1。。单击“发布”选项,就像在Visual Studio 2019中通过“发布”路线进行部署一样

2。。选择文件夹以创建发布文件。

enter image description here

3。。压缩从上一步获得的发布文件内容。发布文件的结构与docs中的相同。

Publish.zip
 | - bin
 | - host.json
 | - FunctionName
 | | - function.json

4。。通过命令发布该zip文件。并且wwwroot的内容应与发布文件相同: enter image description here

答案 1 :(得分:1)

不久之后,我们找出了功能应用未部署的原因。

结果证明它可以很好地部署(文件部署在正确的位置)-只是函数运行时在启动时崩溃了。

我们发现使用'builder.Services.AddMvc()'导致了此问题: enter image description here

鉴于Azure功能不是Mvc,这很有道理。德普!

我们删除了此行,瞧,没有其他问题了。