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/

      アジアクエスト株式会社では一緒に働いていただける方を募集しています。
      興味のある方は以下のURLを御覧ください。