Azure Functions 的 ARM 模板忽略 preWarmedInstanceCount 设置

ARM template for Azure Function ignores preWarmedInstanceCount setting

我正在使用 Azure powershell 脚本将 Azure 功能部署到高级功能计划(弹性)中:

New-AzResourceGroupDeployment -ResourceGroupName $RESOURCE_GROUP -TemplateFile "function-app.json" -TemplateParameterObject $params -Name $APP_SERVICE_NAME -Mode Incremental  > $null

并且部署会忽略我的 preWarmedInstanceCount 设置。新创建的函数有 Always Ready Instances = 0(见屏幕截图)

ARM函数模板:

{
  "apiVersion": "2020-06-01",
  "name": "[parameters('siteName')]",
  "type": "Microsoft.Web/sites",
  "identity": {
    "type": "systemAssigned"
  },
  "kind": "functionapp",
  "location": "[resourceGroup().location]",
  "properties": {
    "name": "[parameters('siteName')]",
    "serverFarmId": "[resourceId(parameters('appServicePlanRg'),'Microsoft.Web/serverfarms',parameters('appServicePlanName'))]",
    "clientAffinityEnabled": false,
    "siteConfig": {
      "use32BitWorkerProcess": false,
      "preWarmedInstanceCount": 2,
      "appSettings": [
        {
          "name": "FUNCTIONS_EXTENSION_VERSION",
          "value": "~3"
        },
        {
          "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
          "value": "DefaultEndpointsProtocol=https;AccountName=xxx..."
        },
        {
          "name": "WEBSITE_CONTENTSHARE",
          "value": "asggas"
        }
      ]
    }
  }
}

在我看来,几天前它确实工作正常,我设法通过 arm 模板设置该值,现在我只能通过 Azure 门户更新它。

这是我的托管计划的 ARM 模板:

{
  "type": "Microsoft.Web/serverfarms",
  "apiVersion": "2018-02-01",
  "name": "[parameters('appServicePlanName')]",
  "location": "[resourceGroup().location]",
  "properties": {
    "name": "[parameters('appServicePlanName')]",
    "workerSize": "1",
    "numberOfWorkers": "1",
    "maximumElasticWorkerCount": 20
  },
  "sku": {
    "Tier": "ElasticPremium",
    "Name": "EP2"
  }
}

我已尝试重现该问题并在此处找出问题所在。

尝试使用“reservedInstanceCount”代替“preWarmedInstanceCount”。

您可以从 Azure 门户本身进行检查。从门户更新预留实例计数后,您可以导出模板:

然后将您之前的模板与导出的模板进行比较,您将能够看到差异。

经过一番调查,我来到“Activity 日志”(在门户网站上手动更新后)屏幕,令我惊讶的是我想要的 属性 被命名为“minimumElasticInstanceCount”(它不是在任一 ARM API 版本 https://docs.microsoft.com/en-us/azure/templates/microsoft.web/sites)

中的任何位置记录

然后我将此字段添加到我的 ARM 模板中,目前看起来一切正常。此处还发布了“始终就绪实例”(minimumElasticInstanceCount) 和“Pre-warmed 实例”(preWarmedInstanceCount) 之间的一些解释和区别:https://docs.microsoft.com/uk-ua/azure/azure-functions/functions-premium-plan

因此在 Azure 门户中 Pre-warmed 不显示实例设置。我正在寻找另一个设置。