Azureサービス別コスト削減方法の紹介

    Azureサービス別コスト削減方法の紹介

    サムネ出典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を停止する必要があるので要注意です。

      20220810_tech01

      【電源の状態と課金】

      電源状態

      課金

      開始中【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

      20220810_tech02

      上記と同様に、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万の請求がありました。

      20220810_tech03

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

      20220810_tech04

       

      【Azure Firewall停止後】

      20220810_tech05

      注意点として強制トンネリングが有効になっている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 > 設定 > プロパティ】20220810_tech06

      しかし、上記の手順で起動・停止の動作確認を行った際に、停止したはずのApplication Gatewayがいつの間にか「Running」の状態に変わり、課金が開始されることがありました。

      Activity Logを確認すると「Stop an application gateway」の後に「Start an application gateway」のログ出力はなく、「Create or Update Application Gateway」のログ出力がありました。

       

      20220810_tech07

      試しにApplication Gatewayを再度停止し、任意の設定を変更したところ上記と同様のログが表示され「Running」になることが確認できました。つまり、停止状態で設定変更を行うとApplication Gatewayは自動起動するということになります。

      Azure Firewallでも同様の事象が発生するのか確認したところ、Azure Firewallは停止するとネットワークリソースとの関連付けが解除され、そもそも設定の変更ができませんでした。20220810_tech08

      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/