Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当存在多个功能时,是否可以在Azure功能应用程序中仅部署一个功能?_Azure_Azure Functions - Fatal编程技术网

当存在多个功能时,是否可以在Azure功能应用程序中仅部署一个功能?

当存在多个功能时,是否可以在Azure功能应用程序中仅部署一个功能?,azure,azure-functions,Azure,Azure Functions,我正在为我正在创建的新Azure功能设置部署管道。由于我们已经使用TeamCity和Octopus deploy进行部署,我正在考虑使用KUDU REST API部署Azure函数,详细说明了从Octopus deploy运行Powershell命令的地方 由于Azure功能驻留在Azure function应用程序中,并且一个应用程序可以具有多个功能,因此一次是否可以在应用程序中部署一个功能?是的,当然可以。几乎每个功能应用程序都是从一个功能开始的…我认为@Mikhail的答案更多的是关于“是

我正在为我正在创建的新Azure功能设置部署管道。由于我们已经使用TeamCity和Octopus deploy进行部署,我正在考虑使用KUDU REST API部署Azure函数,详细说明了从Octopus deploy运行Powershell命令的地方


由于Azure功能驻留在Azure function应用程序中,并且一个应用程序可以具有多个功能,因此一次是否可以在应用程序中部署一个功能?

是的,当然可以。几乎每个功能应用程序都是从一个功能开始的…

我认为@Mikhail的答案更多的是关于“是否有可能有一个功能应用程序只有一个功能?”,而问题可能更多的是“即使已经有其他功能,是否有可能单独部署一个功能?”

答案是,如果您使用Kudu zip控制器,这是可能的,因为您可以将它瞄准任何您想要的文件夹。因此,如果部署到
/api/zip/site/wwwroot/MyFunc1/
,则只影响该函数


需要注意的一点是:zip控制器不会传播删除。因此,如果您发布了一个带有函数的文件,然后发布了一个新的zip,而没有该函数,那么该文件将保留。msdeploy支持这一点,因此可以改用它。

因为您说您使用的是Octopus部署,所以可以使用部署web模板步骤部署单个功能。
只需在请求自定义文件夹路径的字段中提供函数名。

对于任何想要使用调用
KUDU
API并由
Octopus deploy
执行的
powershell
脚本执行此操作的人,您可以按照我回答中的步骤进行操作(你也可以参考关于这个问题的其他答案,了解一些有趣的方法)

以下是仅将一个函数部署到函数应用程序的相关部分

按说明获取您的发布配置文件用户名和密码

调用Kudu REST API将函数推送到函数应用程序中

$username = '<publish username>' #IMPORTANT: use single quotes as username may contain $
$password = "<publish password>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

$apiUrl = "https://<yourFunctionApp>.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath = "<yourFunctionName>.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method PUT -InFile $filePath -ContentType "multipart/form-data"
$username=''重要提示:使用单引号作为用户名可能包含的内容$
$password=“”
$base64AuthInfo=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(“{0}:{1}”-f$username,$password)))
$apiUrl=”https://.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath=“.zip”
调用RestMethod-Uri$apirl-Headers@{Authorization=(“基本{0}”-f$base64AuthInfo)}-Method PUT-infle$filePath-ContentType“多部分/表单数据”

您提出问题的具体原因或面临的问题是什么?随着时间的推移,我看到我们在函数应用程序中添加了更多函数,随着对单个函数的更改,最好只部署更改过的函数。这样可以将回归测试的范围降至最低。谢谢David-您是正确的-我的问题是:“即使已经有其他功能,也可以单独部署一个功能吗?”我已经更新了标题以反映这一点。
$username = '<publish username>' #IMPORTANT: use single quotes as username may contain $
$password = "<publish password>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

$apiUrl = "https://<yourFunctionApp>.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath = "<yourFunctionName>.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method PUT -InFile $filePath -ContentType "multipart/form-data"