Azure Functions ARM模板部署删除功能

时间:2018-12-04 11:53:18

标签: azure azure-devops azure-functions azure-resource-manager

我有一个用于部署Azure Function应用程序的ARM模板(包括在下面)。我将其部署为:

az group deployment create --resource-group my-group --template-file my-function-app.json

这有效,然后我可以使用VS Code插件或Azure Functions Core工具成功部署我的功能。

但是,如果我随后重新部署ARM模板(例如,更新应用程序设置),则会丢失我的功能,需要再次重新部署它们。这是预期的行为吗?我在部署例如通过ARM模板的Web应用程序。为功能应用程序部署ARM模板以保留我已部署的功能时,我可以做些具体的事情吗?

my-function-app.json:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        ...
    },
    "variables": {
        ...
    },
    "resources": [
        {
            "apiVersion": "2015-08-01",
            "type": "Microsoft.Web/sites",
            "name": "[variables('collectorFunctionAppName')]",
            "location": "[parameters('location')]",
            "kind": "functionapp",
            "properties": {
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
                "siteConfig": {
                    "appSettings": [
                        {
                            ...
                        }
                    ]
                }
            }
        }
    ],
    "outputs": {}
}

3 个答案:

答案 0 :(得分:3)

您是否将功能作为软件包进行部署?如果是这样,请确保您在模板中设置了此设置,因为在重新部署时将删除该设置:

{   “名称”:“ WEBSITE_RUN_FROM_PACKAGE”,   “值”:“ 1” }

答案 1 :(得分:0)

您可以尝试使用“ --mode增量”参数,尽管该参数在未提供时应为默认值。

答案 2 :(得分:-1)

是的,应该是预期的行为。

ARM模板是声明性部署,这意味着您每次部署它都会用新的模板信息覆盖您拥有的所有内容。模板应始终包含您需要的所有内容。