通过 ARM 在停止状态下部署 Azure Function

Deploy Azure Function in Stopped State via ARM

我有一个 Azure 函数,但默认情况下我希望它处于 stopped 状态。这可能吗?我能想到的唯一方法是使用 CLI 任务通过管道:

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptType: ps
    scriptLocation: inlineScript
    inlineScript: |
      az functionapp stop --name myfuncapp --resource-group myrg

这可以通过 ARM 实现吗?

当然可以,只要在你的ARM模板中的Microsoft.Web/sites资源的properties中添加"state": "Stopped"即可。

样本:

"resources": [
    {
        "apiVersion": "2018-11-01",
        "name": "[parameters('name')]",
        "type": "Microsoft.Web/sites",
        "kind": "functionapp",
        "location": "[parameters('location')]",
        "tags": {},
        "dependsOn": [],
        "properties": {
            "name": "[parameters('name')]",
            "state": "Stopped",
            "siteConfig": {
                "appSettings": [
                    {
                        "name": "FUNCTIONS_EXTENSION_VERSION",
                        "value": "~3"
                    },
                    {
                        "name": "FUNCTIONS_WORKER_RUNTIME",
                        "value": "dotnet"
                    },
                    {
                        "name": "AzureWebJobsStorage",
                        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('b83c1ed3-c5b6-44fb-b5ba-2b83a074c23f','ChinaCXPTeam-Resources','Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
                    }
                ],
                "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
                "alwaysOn": "[parameters('alwaysOn')]"
            },
            "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
            "clientAffinityEnabled": false
        }
    }
]

测试结果: