首页 > 解决方案 > 使用 PowerShell 在免费应用服务计划中创建函数

问题描述

如何在具有“免费”SKU 的应用服务计划中创建 Azure 函数。

New-AzFunctionApp似乎默认为始终开启功能,免费 SKU 不支持该功能。曾经是这样-Properties @{alwaysOn=$False}做的伎俩,但不再可用。尝试了 -AppSettings 但无济于事。

标签: azure-functionsazure-powershell

解决方案


不幸的是,关于在 Powershell 中使用 AlwaysOn=false 创建函数应用程序的能力存在一个未解决的问题。更简单的选择是使用 ARM 模板,它可以按照您想要的方式正常工作。https://github.com/Azure/azure-quickstart-templates/tree/master/101-function-app-create-dedicated

但是,如果您想坚持使用 ps cmdlet,作为一种解决方法,您可以执行以下操作。

  1. 单独创建带有“基本”SKU 的“应用服务计划”
  2. 通过将上面创建的计划作为参数传递给New-AzFunctionApp. 这将具有 AlwaysOn=true。
  3. 将函数应用更新为 AlwaysOn=false。
  4. 将应用服务计划更新为“免费”层。

下面是执行上述步骤的示例 PS 命令,相应地更新参数。

New-AzAppServicePlan -ResourceGroupName "myRGName" -Name "myFuncAppName" -Location "West US"  -Tier "Basic"

New-AzFunctionApp -ResourceGroupName "myRGName" -Name "myFuncAppName" -PlanName "myFuncAppName" -StorageAccountName "myStorageName" -Runtime Dotnet # update Runtime as per your need

$funcApp = Get-AzResource -ResourceType 'microsoft.web/sites' -ResourceGroupName 'myRGName' -ResourceName 'myFuncAppName'
$funcApp | Set-AzResource -PropertyObject @{"siteConfig" = @{"AlwaysOn" = $false}} -Force

Set-AzAppServicePlan -Name 'myFuncAppName' -ResourceGroupName 'myRGName' -Tier Free -WorkerSize Small

推荐阅读