在 Azure 中,如何在不使用 git 的情况下部署 functionapp 代码?

In Azure, how do I deploy functionapp code without using git?

我创建了一个资源管理器模板,其中包含 运行 功能应用程序的资源,基本上使用默认模板用于此目的,我可以手动将文件复制到 sites\wwwroot 下的我的文件存储中,当我卷曲了它工作的功能应用程序。

但我想知道的是,部署一堆文件来更新实际功能应用程序的正确方法是什么,而不是使用 git。我可以看到一些如何使用 git 的示例,但我的问题是我想将所有功能都放在一个存储库中,而不是一堆较小的存储库(我想要一个 monorepo)。

在 Azure 中,您只需将 .gz 文件中的代码上传到 S3,然后在创建 lambda 时为它提供 zip 的路径。稍后有一个简单的 API,您可以调用它来推送新的 zip 和 presto。

azure 中的 API 相当于给它一个 zip 文件并让它在正确的目录中解压文件?

编辑:

我终于弄明白了,最重要的答案基本上是正确的,但我还需要弄清楚一些额外的步骤,所以我会把它们放在这里。

关于 curl 的具体文档是 here. My issue thread with the team is here

我实际使用的curl调用是这样的:

$ curl -XPUT --data-binary @index.js.zip "https://abc:xyz@ugh.scm.azurewebsites.net/api/zip/site/wwwroot/hello"

注意事项:

您可以在 Azure 门户 UI (documented here) 中设置用户名和密码,但您也可以使用 azure-cli 进行设置,如下所示:

$ az login
$ az webapp deployment user set --user-name abc --password xyz

这就是诀窍,一旦您设置了部署凭据,您就可以在基本身份验证中使用它们来调用 kudu api。

在 Azure 中也允许使用 Rest API 部署 Function App。我们可以使用以下 Rest API 来做到这一点。我们可以从 Kudu REST API. We could get the ftp use and password from publish file, about how to publish file, please refer to another .

获得更多详细信息
PUT https://{user}:{password}@{FunctionAppname}.scm.azurewebsites.net/api/zip/{path}  # example path:site/wwwroot