Azure App Service プランのSKUやインスタンス数をPowerShellで変更
Azure PowerShell を使用して、Azure App Service プランのSKU(サービスプランや価格レベル)を変更する方法を紹介します。
Azure App Service のアプリは起動および停止が可能ですが、プラン自体は停止できません。
Azure App Service プランのリソースに対して課金が発生するため、リソースが存在している限り課金が継続します。
Azure App Service プランの課金は、サービスプラン、価格レベル、インスタンス数によって変わります。
利用量が少ない時期には、より安価なサービスプランや価格レベルを選択したり、インスタンス数を減らすことでコストを削減できます。
今回は、Azure PowerShell を使用した Azure App Service プランのサービスプランや価格レベル変更方法について確認しました。
※Azure PowerShell のバージョン 13.0.0 を使用しています。
Set-AzAppServicePlanを使ってApp Service プランのSKU変更する
App Service プランの情報取得はGet-AzAppServicePlan
Get-AzAppServicePlanコマンドレットを使用して、App Service プランの情報を取得できます。
SKUの項目にサービスプラン、価格レベル、インスタンス数の情報が表示されます。
表示内容の詳細は公式サイトの記述を確認します。
AppServicePlan Class
SkuDescription Class
# Get-AzAppServicePlanでApp Service プランの情報を取得 PS C:\> Get-AzAppServicePlan -ResourceGroupName “rg-01" -Name “asp-change-01" class AppServicePlan
{
WorkerTierName =
Status = Ready
Subscription = サブスクリプションID
HostingEnvironmentProfile =
MaximumNumberOfWorkers = 30
GeoRegion = Japan East
PerSiteScaling = False
ElasticScaleEnabled = False
MaximumElasticWorkerCount = 1
NumberOfSites = 1
IsSpot = False
SpotExpirationTime =
FreeOfferExpirationTime =
ResourceGroup = rg-01
Reserved = True
IsXenon = False
HyperV = False
TargetWorkerCount = 0
TargetWorkerSizeId = 0
ProvisioningState = Succeeded
KubeEnvironmentProfile =
Sku =
class SkuDescription
{
Name = P0v3
Tier = Premium0V3
Size = P0v3
Family = Pv3
Capacity = 1
SkuCapacity =
Locations =
Capabilities =
}
ExtendedLocation =
Id = /subscriptions/サブスクリプションID/resourceGroups/rg-01/providers/Microsoft.Web/serverfarms/asp-change-01
Name = asp-change-01
Kind = linux
Location = Japan East
Type = Microsoft.Web/serverfarms
Tags =
[
]
}
|
各サービスプランのSKU表示例
各サービスプランの場合のSKU取得結果です。
Get-AzAppServicePlanコマンドレット実行結果のSKUのみを表示しています。
# Premium v3(P0V3)の場合 Name : P0v3
Tier : Premium0V3 Size : P0v3 Family : Pv3 Capacity : 1 SkuCapacity : Locations : Capabilities : # Basic(Basic B1)の場合 Name : B1
Tier : Basic Size : B1 Family : B Capacity : 1 SkuCapacity : Locations : Capabilities : # Standard(Standard S1)の場合
PS C:\> (Get-AzAppServicePlan -ResourceGroupName “rg-01" -Name “asp-change-01").sku Name : S1
Tier : Standard Size : S1 Family : S Capacity : 1 SkuCapacity : Locations : Capabilities : |
※各プラン共通でインスタンス数は1としています。インスタンス数はCapacityの値として表示されます。
App Service プランの設定変更にはSet-AzAppServicePlan
Set-AzAppServicePlanコマンドレットを使用して、App Service プランの設定を変更できます。
サービスプラン、価格レベル、インスタンス数を変更する場合もSet-AzAppServicePlanコマンドレットを利用します。
App Service プランのSKUを変更するPowerShell
App Service プランのサービスプラン、価格レベル、インスタンス数を変更するPowerShellです。
asp-change-01(リソースグループ名:rg-01)のApp Service プランのリソースを利用して確認しています。
# App Service プランのSKUを変更するPowerShell $ResourceGroupName
= “rg-01" #リソースグループ名
$AppServicePlanName
= “asp-change-01" #App Service プラン名
# 変更後のApp Service プランのSKU(Basic B1に変更する場合の例)
$AspSkuName
= “B1″
$AspSkuTier
= “Basic"
$AspSkuSize
= $AspSkuName
$AspSkuFamily
= “B"
$AspSkuCapacity
= “1"
# 現在のApp Service プランの情報取得
$AppservicePlanConf = Get-AzAppServicePlan -ResourceGroupName $ResourceGroupName -Name $AppServicePlanName
# 変更前のSKUを出力
write-host “変更前のSKU Nameは $($AppservicePlanConf.Sku.Name) です"
write-host “変更前のSKU Tierは $($AppservicePlanConf.Sku.Tier) です"
write-host “変更前のSKU Sizeは $($AppservicePlanConf.Sku.Size) です"
write-host “変更前のSKU Familyは $($AppservicePlanConf.Sku.Family) です"
write-host “変更前のCapacity名は $($AppservicePlanConf.Sku.Capacity) です"
# 変更後のApp Service プランの値を設定
$AppservicePlanConf.Sku.Name = $AspSkuName
$AppservicePlanConf.Sku.Tier = $AspSkuTier
$AppservicePlanConf.Sku.Size = $AspSkuSize
$AppservicePlanConf.Sku.Family = $AspSkuFamily
$AppservicePlanConf.Sku.Capacity = $AspSkuCapacity
# App Service プランを変更
$AppservicePlanConf | Set-AzAppServicePlan
# 変更後のApp Service プランの情報取得
$AppservicePlanConfAfter = Get-AzAppServicePlan -ResourceGroupName $ResourceGroupName -Name $AppServicePlanName
# 変更後のSKUを出力
write-host “現在のSKU Nameは $($AppservicePlanConfAfter.Sku.Name) です"
write-host “現在のSKU Tierは $($AppservicePlanConfAfter.Sku.Tier) です"
write-host “現在のSKU Sizeは $($AppservicePlanConfAfter.Sku.Size) です"
write-host “現在のSKU Familyは $($AppservicePlanConfAfter.Sku.Family) です"
write-host “現在のCapacity名は $($AppservicePlanConfAfter.Sku.Capacity) です"
|
※PowerShellはサンプルです。環境や利用用途に応じて変更して下さい。
※インスタンス数だけを変更する場合は、Capacityの設定値だけを指定します。
※App_Service_Plan_Change.ps1という名前でPowerShellを保存して実行しています。
PowerShellを実行してApp Service プランのSKUを変更
PowerShellを実行してApp Service プランのSKUを変更、確認します。
サービスプランと価格レベルをPremium v3(P0V3)からBasic(B1)に変更します。
PS C:\>
C:\App_Service_Plan_Change.ps1 ~ Set-AzAppServicePlanコマンドレット実行結果 ~ 現在のSKU Nameは B1 です |
※App_Service_Plan_Change.ps1という名前でPowerShellを保存して実行しています。
App Service プランのSKU変更時の注意点
Premium v3をBasicに変更、BasicをPremium v3など異なるFamilyに変更する場合は、SKU以外の設定について注意が必要です。
例えばSKU FamilyをBasicに変更すると、スケーリングの設定が手動となります。
App Service プランのインスタンス数の上限も異なるので、その点にも注意が必要です。
それぞれのSKUでしか利用できない機能を使っている場合は、App Service プランの変更に失敗する場合があります。
例えば、デプロイスロットを利用している場合は、BasicへのApp Service プラン変更は失敗します。
Automationアカウントを利用してスケジュール実行もできる
Automationアカウントを利用して、PowerShellをスケジュール実行させる事もできます。
仮想マシン起動の場合の例やスケジュール設定方法についてはこちらで紹介しています。
—広告—
最後に
Azure PowerShell を使用した、Azure App Service プランのサービスプランや価格レベルを変更方法を確認してみました。
Automationアカウントなどを利用して、スケジュール実行などもできるのでコスト削減に役立つのではないかと思います。
引き続き色々試してみたいと思います。
PowerShellの実行時間制限についてはこちらで紹介しています。
Logic AppsのワークフローからAutomationアカウントのRunbookを実行する方法についてはこちらで紹介しています。