Azure Application Gatewayで提供されているWAF(Web Application Firewall)を触っているのですが、一度AzureにデプロイするとAzure Portalからは停止できないようです。
月額が結構高いんですよね。(サイズMのWAFで約15円/h、約11,000円/月)
Application Gateway の料金 | Microsoft Azure
開発・検証中など、使わない時は停止して月額を節約したかったんですが、Azure Portalから停止するにはApplication Gatewayを削除するしかなく、また使うときには作り直す必要があるので、削除せずに停止する方法を調べました。
2020/3/26追記
Application Gateway停止状態での課金状況を載せました。
ちゃんと課金は止まっています。
2020/3/30追記
Automationを使って自動停止するシェルを作りました。
【続】Azure Application Gatewayの課金を止めたい!(Automationで自動停止)
どうやって停止する?
やっぱりAzure PortalのGUIから止めるのは無理!
なので、以下のどちらかの方法で停止します。
① ローカルPCのPowerShellから停止する
Azure RMのインストール
まず、AzureRMをインストールし、PowerShellからAzureのコマンドを叩けるようにします。
Azureのマニュアルを参考にしてください。
https://docs.microsoft.com/ja-jp/powershell/azure/azurerm/install-azurerm-ps?view=azurermps-6.13.0
停止コマンド
AzureRMをインストールしたら、PowerShellから以下のコマンドを叩きます。
# Application Gatewayのオブジェクト?的なものを取得する
PS C:\> $AppGw = Get-AzureRmApplicationGateway -Name [AppGwの名前] -ResourceGroupName [リソースグループの名前]
# とめる!
PS C:\> Stop-AzureRmApplicationGateway -ApplicationGateway $AppGw
2~3分かかるっぽいです。
開始コマンド
開始するときは以下のコマンドで。
# あげる!
PS C:\> Start-AzureRmApplicationGateway -ApplicationGateway $AppGw
10分くらいかかるっぽいです。
② Azure Cloud Shellから停止する
以下のアイコンを押してAzure Cloud Shellを起動します。
※初めてCloud Shellを起動すると、Storageを作れと言われるので作りましょう。
あとは、①と同じコマンドで停止できます。
インストール不要なので、こっちのほうが楽ですね。
課金停止の確認(2020/3/26追記)
「Application Gatewayを停止しても、課金は継続する」というような記事をどこかで見かけました。
課金、止まってます。
3/4頃は1日数時間起動していました。
3/14頃の急上昇は、土日あげっぱなしやっちまったなー!です。
3/18からは止めっぱなしです。
課金、止まってます。
Application Gateway の料金 | Microsoft Azure
Application Gateway の課金は、ゲートウェイがプロビジョニングされて利用可能になっている合計時間、および Application Gateway によって処理されたデータ量に基づいて行われます。
プロビジョニングはされていますが、動作状態が「停止中」なので、「利用可能ではない」という判断なのかと思われます。
ちなみに
停止して開始すると、Application GatewayのIPアドレスが変わりました・・・。
https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-faq#does-the-ip-or-dns-name-change-over-the-lifetime-of-the-application-gateway
マニュアルに、V1だとIP変わるとの記載がありました。
(V2だと静的IPも可能だけど、月4万は高い・・・)
ただAzureが勝手につけてくれるホスト名(なが~い英数字.cloudnet.app)は変わらないようです。