使用ARM模板更新资源组-无法创建Linux应用程序服务计划



我有一个管道,它将使用ARM模板更新我的Azure资源组。在我的资源组中,我有一个Linux应用程序服务计划。当我的管道运行时,我得到以下错误:

2020-02-24T09:13:47.8665770Z ##[error]The template deployment 'template-20200224-091344-94a5' is not valid according to the validation procedure. The tracking id is 'cba7977a-ed1a-4807-a8bb-d7387bb9eae1'. See inner errors for details.
2020-02-24T09:13:47.8673575Z ##[error]Details:
2020-02-24T09:13:47.8683161Z ##[error]ValidationForResourceFailed: Validation failed for a resource. Check 'Error.Details[0]' for more information. [{"code":"FreeLinuxSkuNotAllowedInResourceGroup","message":"Cannot create a Linux app service plan because there is a limit of 1 free tier linux app service plan per subscription."}]
2020-02-24T09:13:47.8695096Z ##[error]Task failed while creating or updating the template deployment.

我原以为管道应该只更新我的应用程序服务计划,但它似乎正在尝试创建一个新的计划。所以我想,它会创建一个新的,然后删除旧的。然而,它无法做到这一点,因为Linux应用程序服务计划的数量限制为1个,而且已经存在一个。

所以我的问题是,我如何才能让我的管道只覆盖旧的应用程序服务计划,而不是创建一个新的并删除旧的?

以下是ARM模板中的资源:

{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "[parameters('serverfarms_project_api_name')]",
"location": "West Europe",
"tags": {
"Environment": "Dev"
},
"sku": {
"name": "F1",
"tier": "Free",
"size": "F1",
"family": "F",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"maximumElasticWorkerCount": 1,
"isSpot": false,
"reserved": true,
"isXenon": false,
"hyperV": false,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
}

arm模板更新现有资源-资源名称必须完全匹配。这是唯一的伎俩。如果名称匹配,它将更新资源,而不是创建一个具有相同名称的新资源(这是不可能的(。

最新更新