AWSの利用料を見える化!AWS Cost Explorer の基本とコスト管理

AWS

2024.3.19

Topics

はじめに

本記事では AWS Cost Explorer の基本から、少し踏み込んだ設定の方法までを簡単にご説明いたします。AWS のサービスを利用する上でコスト管理について皆さん気にされているかと思います。特に多くのサービスや新しい環境を利用している場合、思わぬ高額な請求に直面することもあります(経験談…)。
このような状況を避け、効率的にコストを確認/管理するためのツールとして AWS Cost Explorerというものがあります。
本記事をご覧いただいた方に少しでも簡単にコスト管理を行えるようになるための情報を提供することを目指します。

AWS Cost Explorer とは何か?

AWS Cost Explorer は AWS のコストと使用状況に関するデータを視覚化し、分析するためのツールです。このツールを使うことで、自身のAWS使用状況に応じた詳細なコストを簡単に確認できます。
AWS Cost Explorer には様々なフィルターとグラフオプションもあり、どこにお金がかかっているのかを一目で理解できるのです。

それと、 AWS Cost Explorer の利用料金は基本無料です。
設定で一部有料オプションがあったり、情報を取得するためにAPIを利用することは有料です。

【AWS】AWS Cost Explorer とは
【AWS】Cost Explorer の料金

AWS Cost Explorer の権限設定

早速ですが準備していきます。
IAM ユーザー (または IAM ロール) で AWS Cost Explorer を閲覧するには、以下の条件をクリアする必要があります。

  • IAM の請求情報へのアクセス設定が有効化されていること。
  • 上記設定に伴いルートユーザーの権限を持っていること。
  • IAM ポリシーで権限が付与されていること。
  • AWS Organizations で管理されているアカウントの場合、SCPで制限がかかっていないこと。

AWS Organizationsで管理されていないAWSアカウントを、ルートユーザーで使用されている場合は本設定及び権限の付与は不要です。

IAM の請求情報アクセス設定

  1. AWS アカウントにルートユーザーで ログインを行い、画面右上のアカウント名を押下し、 [アカウント] を選択します。

  2. 画面の真ん中辺りまでスライドをすると [IAM ユーザーおよびロールによる請求情報へのアクセス] というメニューがあります。
    ここで、[有効化済み] となっている場合はOKです (設定完了)。
    [無効化済み] となっている場合はこのまま以下手順の通り有効化する必要があります。

  3. 横の [編集] を押下します。次に[IAM アクセスをアクティブ化] のチェックボックスにチェックを入れ、[更新] を押下します。

  4. [IAM ユーザー/ロールによる請求情報へのアクセス] の下に [有効化済み] と表示されていれば設定完了です。

権限を付与するには

※元々 AdministratorAccess 等の強力なポリシーが付与されている場合は本対応は不要です。

  1. AWS マネジメントコンソールの IAM > ポリシーより [ポリシーの作成] を選択します。

  2. ポリシーエディタは[ビジュアル] (デフォルト) にしたまま、サービスを選択より [Cost Explorer Service] を選択します。

  3. するとAWS Cost Explorer のアクション(ce)の一覧が表示されます。Effect では [許可] (デフォルト) を選択し、今回は [すべての Cost Explorer Service アクション (ce:*)] にチェックを入れます。
    ※ AWS Cost Explorer のアクションの詳細一覧はこちら

  4. リソースでは [すべて] を選択し、[次へ] を押下します。

  5. ポリシー情報を入力し、[ポリシーの作成] を押下します。
    今回ポリシーの名前を [CostExplorerFullAccess] としていますが、名前は作成されるポリシーの内容等に沿って任意でご判断ください。

  6. 作成した IAM ポリシーを IAM ユーザー、または IAM グループにアタッチします。
    IAM > ユーザーの画面よりアタッチ対象の IAM ユーザーを選択します。

  7. 許可を追加 (プルダウン) から [許可を追加] を選択します 。(許可を追加から許可を追加が個人的に少し違和感)

  8. 許可のオプションにて [ポリシーを直接アタッチする] を選択し、許可ポリシーでは先ほど作成した [CostExplorerFullAccess] を選択します。
    [次へ] を押下します。

  9. 特に問題がなければ [許可を追加] を押下します。

  10. IAM ユーザーの許可ポリシーに [CostExplorerFullAccess] が追加されていれば権限付与の完了です。

AWS Cost Explorer を触ってみる

先ほど権限を付与した IAM ユーザーで確認してみましょう。AWS Cost Explorer を開始するには、AWS マネジメントコンソールの Blling ダッシュボードより Cost Explorerを選択します。
初回アクセスの場合は AWS Cost Explorer が使用可能になるまで24時間前後待つ必要があるようです。私の場合、大体30時間ほど待ちました。

権限が付与されており、AWS Cost Explorer の画面へアクセスすることができました。AWS Cost Explorer の画面では、グラフにより直感的に AWS リソースのコストと使用料の情報を把握できるのが分かります 。
画面では棒グラフが表示されていますが、折れ線グラフに切り替えることもできます 。
また、画面を下にスライドしていくと、各 AWS サービスごとの使用料を確認できます。

これにより使用頻度が低いリソースを特定し、削除またはサイズダウンすることでコストを削減できます。他にも異常なコスト増加があった場合にも確認ができるので、原因を調査し無駄な支出を未然に防ぐこともできるかと思います。

フィルタリング機能も存在し、特定の情報を抽出して表示することもできます。画面右よりフィルタリングを使用することで、特定のサービスやタグを付与したリソースの使用料等、自分のニーズに沿った情報が取得しやすくなります。

フィルタリングできる項目は以下簡単に記載しましたが、詳細は AWS公式ドキュメントをご確認ください。

  • 日付範囲(日単位~年単位)
  • 粒度(データの粒度。時間単位~月単位)※後ほど記述いたしますが時間単位を表示する場合は有料です。
  • ディメンション(大枠で絞る為のカテゴリ。リージョン、タグ、リソース等)※リソースを表示する場合は有料です。
  • サービス(EC2、RDS 等各種AWSサービス)
  • 連結アカウント(AWS Organizations のメンバーアカウント)
  • リージョン
  • アベイラビリティゾーン
  • インスタンスタイプ
  • タグ
  • 料金タイプ

また、AWS Cost Explorer 画面の右上にある [レポートライブラリに保存] を押下することで自分がフィルタリングしてカスタマイズしたレポートを保存することができます。保存したレポートは、 請求とコスト管理 > Cost Explorer 保存済みレポート に保存され、いつでもカスタマイズしたレポートを呼び出すことができます。これを行うことで何度も同じフィルタリングを設定する必要が無くなります。

他にも AWS Cost Explorer の予測機能を使用して、将来のコストを予測し、予算超過を避ける計画を立てることもできます。この予測機能は、過去の AWS サービスの使用状況に基づいて表示されます。ですので、予測するための十分なデータがない場合は表示できません(この状況になるのは、過去一回も請求がされたことがないアカウントに多いようです)。またあくまでも予測の為、実際の利用金額とは異なる可能性があります、利用される場合はあくまで参考にするという気持ちで活用されることをお勧めします。

AWS Cost Explorer の設定

AWS Cost Explorer には設定があります。
設定の内容は以下となります。

【履歴データ】

・月単位の詳細度の複数年データ (最大 38 か月間の過去データ)
⇒この設定を有効化することにより、最大38ヵ月前までのデータを確認することができます(デフォルトでは14ヵ月前までのデータを確認できます)。

【詳細なデータ】

・日単位の詳細度 (最大 14 日間の過去データ)
⇒全ての AWS サービスのコストと使用状況に関するデータを日単位で取得します(リソースレベルのデータは取得できません)。

・時間単位の詳細度 (最大 14 日間の過去データ)
⇒有料オプションとなり、有効化すると利用料が発生します。全ての AWS サービスのコストと使用状況に関するデータを時間単位で取得します(リソースレベルのデータは取得できません)。

・EC2 インスタンス (Amazon Elastic Compute Cloud – Compute) リソースレベルのデータ
⇒同じくこちらも有料オプションです。上記オプションだけではリソースレベルのデータを取得することはできませんが、こちらを有効化することにより EC2 インスタンスに限り取得することができます。

・表示するAWSサービス
データを取得するサービスを選択することができます。少なくとも 1 つ以上のサービスを選択する必要があります。

AWS Cost Explorer 履歴データ
AWS Cost Explorer 詳細なデータ

設定変更をする理由

AWS Cost Explorer のデフォルト設定は基本的なコスト追跡と分析に役立ちますが、設定変更次第では尚更役に立つ場合があります。
以下に例として設定を変更したほうがより良くなる場合を考えてみました。

検証としてAWSを使用しており、利用しているサービスのコストがいち早く気になる場合

<設定>
・詳細なデータ:日単位の詳細度を有効化
<メリット>
・日々のコスト変動を把握することで、突発的なコスト増加をなるべく早く発見できる。

限られた予算内で効率的に運用を行いたい、コスト削減に積極的な場合

<設定>
・履歴データ:有効化
・詳細なデータ:日単位の詳細度を有効化
<メリット>
・長期的なコスト管理と予算計画が立てやすい。
・履歴データと詳細データを組み合わせて使用することで、コストの追跡と分析がしやすい。

コストの見える化と予算配分の最適化が課題。コスト削減だけでなく、リソース単位での詳細なコスト追跡が必要な場合

<設定>
・履歴データ:有効化
・詳細なデータ:日単位の詳細度、時間単位の詳細度を有効化
・リソースレベルの詳細データ:有効化
<メリット>
・長期間の履歴データと高精度の詳細データを組み合わせて使用することで、コストの細分化された追跡と分析がしやすい。
・特定のリソース単位でのコスト分析ができることで、無駄な支出を発見しやすい。

本記事では「2. 限られた予算内で効率的に運用を行いたい、コスト削減に積極的な場合」の設定変更をしてみます。

設定変更の方法

  1. AWSマネジメントコンソールから billing 設定の コスト管理の設定 > Cost Explorerより、項目タブの Cost Explerer を選択することで、AWS Cost Explorer の設定画面を開きます。

  2. 「履歴データ」と「詳細データ」にチェックを入れます。詳細なデータは日単位レベルを選択します。

  3. Cost Explorer でデータを取得する AWS サービスを選択ができるプルダウンリストが表示されるので、選択項目の最上位にある「すべてのサービス」を選択し、画面右下の「設定を保存」を押下します。

  4. 設定変更前の確認がポップアップで表示されます。「変更を保存」を押下します。

  5. 設定が反映されるまで待ちます。上記確認画面でも記載がありますが、設定が反映されるまで最大48時間かかります。また、以下画像の通り、設定が有効化される日時も記載されていました。

  6. (~設定から2日後)設定が反映されているか確認します。反映されていれば、Cost Explorer で過去3年間の料金データは取得できるはずです。Cost Explorerを開きます。

  7. 画面右のレポートパラメータにある「日付範囲」より、自動選択範囲から「3年間」を選択し、適用を押下します。

  8. 3年前までのデータが表示されました(グラフ下の年月表示は3か月単位で表示されています。グラフ下年月表示には2021年3月の表示はないですが、しっかり取得されていました)

これで長期間のコスト傾向を探ることや、細かいサービスレベルでの分析ができるようになりました。

具体的には、長期間および短期間のコストデータを分析することで、予算超過の原因となっているサービスを特定できます。また、過去長期間の履歴データを確認することでコストの傾向を分析しやすくなり、将来の予算をより正確に計画できるかと思います。

他にも日単位での詳細なデータ分析を有効化したことで、サービス使用量のピーク時とオフピーク時の利用料も特定しやすくなります。
イメージとしてはこんな感じ

また、今回は時間単位の詳細度を有効化していませんが、有効化にすると時間単位での利用料も確認できるようになる感じですね(有料オプションとなりますが)。

このように AWS Cost Explorer の設定変更を通じて得られるメリットは、コスト削減だけでなくより効果的なリソース管理と予算計画にも役立ちます。

設定の注意点

設定を変更する際にはいくつかの注意点があります。

・設定変更が可能な条件

AWS Cost Explorer の設定変更は AWS Organizations に属していないAWS アカウント、または AWS Organizations の管理アカウントのみが設定可能です。
※権限はルートユーザーである必要はございません。

・「時間単位の詳細度」を変更する際の利用料金

有料のオプションの「時間単位の詳細度」は、有効化すると時間単位でサービスの使用状況をより詳細に確認できるようになり、コスト削減の分析がしやすくなる一方でオプション料金が発生します。
EC2 などのリソースが複数存在する場合には、それぞれのリソースに対する細分化された使用量レコードが生成され、オプション料金が増額します。
例えば1つの EC2 インスタンスが24時間動いている場合には24個の使用量レコードが生成されますが、2つのインスタンスが同じ期間動いている場合には、倍である48個のレコードが生成されます。ですので対象のリソース数に比例して、その分有料オプションの料金も増えることとなります。

また、他にも過去のデータを過度に分析することで、現在のコスト削減の機会を見落とす可能性や、過度に細かいデータに焦点を当てると全体的なコスト管理戦略の視点を失うこともあるかと思います。
そのためコスト対効果の観点も含め設定変更は慎重に行い、全体的なコスト管理のバランスを保つことが重要です。

【AWS】Cost Explorer の料金

余談 ~ IAM ユーザーで利用する際の権限回りの注意点

【AWS Cost Explorer の権限設定】の章にて、IAMユーザーで AWS Cost Explorer を利用する際、ルートユーザー側の設定で IAM の請求情報アクセスが有効化されている必要があると説明いたしました。
ただ、現在 IAM ユーザー/ロールからも請求情報アクセスの設定を変更できてしまう仕様となっています。

注意していただきたいのが、IAMユーザーでは設定を無効化に変更することはできるが、有効化することはできない…! ということです。

本設定は請求情報の画面から実施する必要がある為、IAM ユーザー自身が無効化にしてしまった場合、請求情報の画面にアクセスできなくなり自分では再度有効化することはできません。
ですので、ルートユーザーで有効化設定後、IAM ユーザー/ロールで無効化の設定をしてしまうと、再度有効化するにはルートユーザーで設定をする必要があります ( IAM ユーザー/ロールでは有効化できない) 。

AWS Cost Explorer は請求情報に分類するサービスです。本設定が無効化されると、IAM ユーザーは AWS Cost Explorer にアクセスできなくなってしまいます。
IAM ユーザーや IAM ロールに対して、AdministratorAccess 等の強力な権限や、以下 billing の IAM アクション が付与されている場合、更新ができてしまいますのでお気を付けください。
・GetIAMAccessPreference
・UpdateIAMAccessPreference

まとめ

AWS Cost Explorer は、AWSのコストを確認する方法としてとても便利なコスト管理ツールです。本記事では、AWS Cost Explorer の基本的な概要から、設定変更方法に至るまでを解説しました。AWS Cost Explorer を適切に設定し活用することで、コストの見える化を実現し、効率的なコスト管理を行うことが可能です。コストの管理や予期せぬ請求を防ぐ為に少しでも活用してみることをお勧めします。
この記事が少しでも読んでくださった方の一助となれば幸いです。

re

NHN テコラスのAWSリセールサービス「C-Chorus」の運用を担当しています。 Lambdaでいろいろ自動化されるのが好きです。 投稿する内容や意見は個人的な見解も含まれます

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら