サムネ出典URL:https://www.pexels.com/ja-jp/photo/7651555/
今回はAzure利用時に高額課金を防止するために、停止忘れが多いまたは高額になりやすい以下4サービスに絞ってのコスト削減方法を紹介させていただきます。
※ 本記事で紹介するAzureサービスの価格は2022年8月時点のものになります。
利用頻度が多いAzure VMは、OS上でシャットダウンしただけでは「停止済み」というステータスのため課金は継続されています。
Azure VMの課金を停止するためには「停止中(割り当て解除中)」「停止済み(割り当て解除)」というステータスにする必要があります。この操作はAzureポータルからVMを停止する必要があるので要注意です。
電源状態 |
課金 |
開始中【Starting】 |
課金有り |
実行中【Running】 |
課金有り |
停止中【Stopping】 |
課金有り |
停止済み【Stopped】 |
課金有り |
停止中(割り当て解除中)【Deallocating】 |
課金無し |
停止済み(割り当て解除)【Deallocated】 |
課金無し |
参考:Azure Virtual Machines の状態と課金状態 - Azure Virtual Machines | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/virtual-machines/states-billing
上記と同様に、Azure CLIの「az vm stop」コマンドでOSをシャットダウンした時も「停止済み」ステータスになります。課金を停止するためには「az vm deallocate」コマンドで「割り当て解除済み」ステータスにする必要があります。
高機能なファイアウォールサービスであるAzure FirewallはStandardで月額約920ドル、Premiumで月額約1,280ドルのコストが発生します。
Standard |
Premium |
|
デプロイメント |
1.25ドル / 時間 |
1.75ドル / 時間 |
データ処理 |
0.016ドル / GB |
0.016ドル / GB |
参考:価格 - Azure Firewall | Microsoft Azure
https://azure.microsoft.com/ja-jp/pricing/details/azure-firewall/
弊社で検証を行った際にも、Azure Firewallのみで月額10万の請求がありました。
Azure Firewallの課金の停止はリソース自体を削除することで可能です。別の方法として、Azure Powershellからネットワークリソースの割り当てを解除することでも課金を停止することが可能です。(Azure Portalからは割り当て解除できません。)
公式FAQを参照して、Azure Powershellからの起動・停止コマンド例を以下に記載します。
参考:Azure Firewall に関する FAQ | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/firewall/firewall-faq#azure-firewall-----------------
# Azure Firewallの停止 $azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name" $azfw.Deallocate() Set-AzFirewall -AzureFirewall $azfw # Azure Firewallの起動 $azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name" $vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name" $publicip1 = Get-AzPublicIpAddress -Name "Public IP1 Name" -ResourceGroupName "RG Name" $publicip2 = Get-AzPublicIpAddress -Name "Public IP2 Name" -ResourceGroupName "RG Name" $azfw.Allocate($vnet,@($publicip1,$publicip2)) Set-AzFirewall -AzureFirewall $azfw |
停止が成功すると、Azure Portal上からネットワークリソースの関連付けが解除されていることが分かります。
注意点として強制トンネリングが有効になっているAzure Firewall の場合、停止は可能ですが、開始時は管理パブリックIPを再度ファイアウォールに関連付ける必要があります。
Azure Application Gateway(以下、Application Gateway)は2022年6月時点でV1/V2共にデプロイ可能な状態で、機能に加えて料金体系も大きく異なります。
将来的には全てV2に移行する必要がある上、V2はサイジング(S/M/L)を選択することができず、月額約210ドルのコストが発生します。
参考:Azure Application Gateway v2 とは | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/application-gateway/overview-v2
Application Gateway |
Application Gateway & WAF |
|
デプロイメント |
0.29ドル / 時間 |
0.522ドル / 時間 |
データ処理 |
0.008ドル / GB |
0.0144ドル / GB |
Application Gateway |
Application Gateway & WAF |
|||
デプロイメント |
S |
0.027ドル / 時間 |
利用不可 |
|
M |
0.0756ドル / 時間 |
0.1361ドル / 時間 |
||
L |
0.3456ドル / 時間 |
0.4839ドル / 時間 |
||
データ処理 |
S |
無制限 |
0.008ドル / GB |
|
M |
最初の 10 TB/月 |
無料 |
||
10 TB以上/月 |
0.007ドル / GB |
|||
L |
最初の 40 TB/月 |
無料 |
||
40 TB以上/月 |
0.0035ドル / GB |
参考:Application Gateway の料金 | Microsoft Azure
https://azure.microsoft.com/ja-jp/pricing/details/application-gateway/
Application GatewayもAzure Firewall同様にAzure Portal上から停止できません。停止する際はAzure PowershellまたはAzure CLIから実行する必要があります。
注意点として、V2は静的パブリックIPがサポートされているのでVIPは変わりませんが、V1は停止から起動するとVIPが変わることがあります。
公式FAQを参照し、Azure CLIからの起動・停止コマンド例を以下に記載します。
参考:Azure Application Gateway に関してよく寄せられる質問 | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-faq#azure-application-gateway-------------
# Azure Application Gatewayを停止 az network application-gateway stop -g MyResourceGroup -n MyAppGateway # Azure Application Gatewayを起動 az network application-gateway start -g MyResourceGroup -n MyAppGateway |
動作状態はAzure CLIやAzure Portalのプロパティから確認できます。
# Azure Application Gatewayを状態確認 az network application-gateway show -g MyResourceGroup -n MyAppGateway | grep -i operationalState (出力結果) "operationalState": "Running|Stopped" |
しかし、上記の手順で起動・停止の動作確認を行った際に、停止したはずのApplication Gatewayがいつの間にか「Running」の状態に変わり、課金が開始されることがありました。
Activity Logを確認すると「Stop an application gateway」の後に「Start an application gateway」のログ出力はなく、「Create or Update Application Gateway」のログ出力がありました。
試しにApplication Gatewayを再度停止し、任意の設定を変更したところ上記と同様のログが表示され「Running」になることが確認できました。つまり、停止状態で設定変更を行うとApplication Gatewayは自動起動するということになります。
Azure Firewallでも同様の事象が発生するのか確認したところ、Azure Firewallは停止するとネットワークリソースとの関連付けが解除され、そもそも設定の変更ができませんでした。
Azure Bastionも利用頻度が高いリソースかと思います。通常のAzure Bastionは月額約140ドル、Standardは月額約210ドルのコストが発生します。
Azure Bastion |
Azure Bastion Standard |
|
デプロイメント |
0.19ドル / 時間 |
0.29ドル / 時間 |
参考:価格 - Azure Bastion | Microsoft Azure
https://azure.microsoft.com/ja-jp/pricing/details/azure-bastion/
これまで紹介したリソースと異なる点として、Azure Bastionは起動・停止できず、課金停止のためにはリソースを削除する必要があります。
課金を抑える方法として、Azure Bastionを都度削除する方法や下記ブログにて紹介されているLogic Appsを用いてAzure Bastionを定期的に自動作成・削除する方法があります。
参考:Azure Bastionの自動起動停止(新規作成削除) | Li-akb-branch-office
https://www.tama-negi.com/2022/04/29/azure-bastion-start-stop/
例えば、上記方法を用いて平日9時~18時のみAzure Bastionを実行することで、月額利用料を約70%削減可能です。
今回はサービス別にAzureのコスト削減を行う方法を紹介させていただきました。
Azureは料金体系が複雑でいつの間にか高額請求されているケースが数多く見受けられます。
今回紹介させていただいたサービス以外にも高額課金されるサービスは多数存在します。各サービスの課金体系を把握し、定期的に利用状況を確認するようにしましょう。
参考:【Azure】Azure CLIコマンド(az)でApplication Gatewayを停止 - まったり技術ブログ
https://blog.motikan2010.com/entry/2020/04/10/%E3%80%90Azure%E3%80%91Azure_CLI%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%28az%29%E3%81%A7Application_Gateway%E3%82%92%E5%81%9C%E6%AD%A2
参考:Azure Application Gatewayの課金を止めたい! - Qiita
https://qiita.com/yoshiyuki-iwata/items/edb9de0a2f93e1238f0e
参考:Azure Bastionの自動起動停止(新規作成削除) | Li-akb-branch-office
https://www.tama-negi.com/2022/04/29/azure-bastion-start-stop/