AQ Tech Blog

Azureサービス別コスト削減方法の紹介 | AQ Tech Blog

作成者: cloud integration|2022年08月23日

サムネ出典URL:https://www.pexels.com/ja-jp/photo/7651555/

概要

今回はAzure利用時に高額課金を防止するために、停止忘れが多いまたは高額になりやすい以下4サービスに絞ってのコスト削減方法を紹介させていただきます。

  • Azure VM
  • Azure Firewall
  • Azure Application Gateway
  • Azure Bastion

※ 本記事で紹介するAzureサービスの価格は2022年8月時点のものになります。

Azure VM

利用頻度が多い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

高機能なファイアウォールサービスであるAzure FirewallはStandardで月額約920ドル、Premiumで月額約1,280ドルのコストが発生します。

 

【Azure Firewallの料金】

 

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停止前】

 

【Azure Firewall停止後】

注意点として強制トンネリングが有効になっているAzure  Firewall の場合、停止は可能ですが、開始時は管理パブリックIPを再度ファイアウォールに関連付ける必要があります。

Azure Application Gateway

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 V2の料金】

 

Application Gateway

Application Gateway & WAF

デプロイメント

0.29ドル / 時間

0.522ドル / 時間

データ処理

0.008ドル / GB

0.0144ドル / GB

 

【Application Gateway V1の料金】

 

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 > 設定 > プロパティ】

しかし、上記の手順で起動・停止の動作確認を行った際に、停止したはずの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も利用頻度が高いリソースかと思います。通常のAzure Bastionは月額約140ドル、Standardは月額約210ドルのコストが発生します。

 

【Azure Bastionの料金】

 

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/