hero-rinのブログ

某会社で某システムの運用、開発をやっているただのおじさん

AWSのサービスを理解するーAWSコスト管理カテゴリ編ー

AWSサービスを理解しよう!

今回は"AWSコスト管理"です。やっと4つ目、残り19カテゴリ。ゴールまでまだまだ道のり長いですが少しずつ書いていこうと思います。

カテゴリ:AWSコスト管理

名前の通りAWSにかかるコストを管理するサービスカテゴリです。改めてAWSにかかるコストとは何でしょう?

コストってなに?

辞書には『商品を生産するために必要な費用・原価・生産費』『物の値段』とありました。

AWSを利用するにあたってのコストってなに?

なんと言っても費用ですね。

そしてその費用を把握するには何が必要なのか?

下の項目を数値やグラフで見えるようにする必要があるのかなと思ってます。

  • 何(どんなサービス)に対して?
  • いつ?
  • どれぐらい使ったか?

上の"費用を把握"という面を管理するサービスがこのカテゴリになるかなと思ってます。ではいつも通り以下AWSコスト管理カテゴリにぶら下がっているサービス一覧です。

とその前に、これから書いていくAWSコスト管理のサービスは"AWS Billing and Cost Management"の機能として内包されているようなので整理の意味も込めてそこから書いていきます。

AWS Billing and Cost Management

カテゴリ(トップメニューの製品欄)にはなかったんですが、このサービスがAWSコスト管理の各サービスを管理しているサービスになります。"AWS Billing and Cost Management"から各サービスを呼び出す感じですね。"AWS Billing and Cost Management"が親サービスで、これから記載する各サービスは子サービスと言う関係性でしょうか。この親サービスは別のカテゴリサービス(例えば、AWS Identity and Access ManagementやAWS Organizationsなど)と連携してコストを管理する役割を持っているようです。

各サービス(自分流だと子サービス)

AWS内の"AWS Billing and Cost Management"にある説明では機能として説明されていて、カテゴリ(製品欄一覧)ではサービスとして扱ってます。

下ではこの各サービスについての概要を書いていこうと思います。

AWS Cost Explorer [グラフでのコストの分析]

各サービスの費用はもちろん利用状況についてもグラフで分かりやすく表示してくれるサービスです。AWSに契約したアカウントで、"請求とコスト管理"メニューからCost Explorerに入って有効化することで利用することができます。

  • 当月データは約24時間後に反映
    • その後は最低でも24時間一回更新されるようです
  • 過去分は最大13ヶ月分のコストグラフを見ることが可能
  • フィルターやグルーピングを利用して状況分析することが可能
  • 可能の利用状況から今後3ヶ月間のコストを予想

サービス別にコストを分析するためのビュー(表)を用意

コスト分析のためにサービス別に4つのビューを用意してくれているようです。

Monthly costs by service

サービス毎の月別使用量を表示します。過去分の表示は、月単位で過去90日間まで表示できるようです。

Monthly costs by linked account

アカウント毎の月別使用量を表示します。"AWS Consolidated Billing"で請求をまとめている場合アカウント間のコスト分布を表示します。

Daily costs

日別の使用量を表示します。

  • 過去30日の各日の総コストを表示
  • 月末までの予約を表示

Monthly EC2 costs and usage

EC2の月別使用状況とコストを表示します。過去3ヶ月の利用時間とコストを表示します。

AWS Consolidated Billing

複数アカウントで契約していても請求は一本化したいという場合にこのサービスを使って複数アカウントを親アカウントと子アカウントの関係性にして親アカウントが子アカウントの分もまとめて一括支払いができるサービスです。

  • 全アカウントの利用料にボリューム割引が適用されるようになります
  • 複数アカウントで無料枠を使用していても1アカウント分しか無料枠を適用されません

どうも各アカウントの利用料を親アカウントにまとめてから1つにし、そこに特典を適用しているように感じました。

docs.aws.amazon.com

AWSの料金体系について

知らなかったんですが、AWSには料金体系が3種類あり用途によって使用者が選択できるようになっているようです。

オンデマンドインスタンス

ようは従量課金です。使った分だけ課金されます。これが一番分かりやすいですね。

スポットインスタンス

AWS上にある使っていない余剰インスタンスを割安で利用できる方式のようです。費用はオークションのように入札で決まります。

費用は入札

事前に金額を設定しておき、その金額がAWS側が提示するサーバ価格より上だった場合サーバを起動することができる。ちょっと怖いのが設定した金額がAWS側の提示価格より下だった場合は、サーバが落とされるとのこと。提示価格の更新タイミングがよく分からなかったんですが一時間に一回更新されているような感じでした。(間違っていたらすみません。m(_ _m)

その時のインスタンス使用率にもよるらしいんですが、タイミングよってはオンデマンドに比べ80%OFFなんていうのもあるみたいなので、上手く利用できればコストは大幅に削減できるかと思います。スポットというぐらいなのでやっぱりピンポイント(バッチや解析処理など)で利用する想定なのかなという感じです。(金額変動の感知をアラート機能を駆使して長期利用している強者もいるようですが(^^; )

リザーブインスタンス (RI)

AWSを利用する期間をあらかじめ決めて契約するプランみたいです。予約(リザーブ)ですね。AWS内では略してよく"RI"と書かれています。

  • 期間:1年間又は3年年間
  • 支払い方法("前払いなし"から順に割引率が高くなります)
    • 前払いなし
    • 一部前払い
    • 全前払い
提供タイプ

契約するにあたり下の2タイプがありスタンダードの方が自由度ないんですが、割引率が高くなっているようです。

スタンダードタイプ

契約する時に指定するインスタンスより大きなものへの変更はできないタイプです。(小さいものへ分割することはできるようです。)

コンバーティブルタイプ

契約後もインスタンスの変更が可能なタイプです。インスタンスを大きくする場合は差額分の費用が発生します。(小さくする場合は費用も削れるんだろうか?)

docs.aws.amazon.com

尚、契約後のキャンセルはできないようです。

AWS Budgets [予算]

大雑把ですが、予算を設定し閾値を超えたらアラートを上げて通知してくれるサービスです。フィルタを使ってサービス別や料金体系別などいろいろ条件で設定することができるようで便利そうです。あと予算というとお金を連想しますが、AWSでは予算タイプというタイプ別に設定することができるみたいです。

予算タイプ

タイプは下の4つでそれぞれのタイプで設定した値になったらアラートを上げる仕組みです。

コスト

費用ですね。分かりやすいです。例えば予算の80%を超えたらアラートとかですね。(実際はもっと細かく月別・サービス別などの設定がフィルタで設定できるようです。)

使用量

各サービスの使用量でアラートを上げることができるタイプですね。容量だけなのかCPUやメモリの使用率とかでもアラート上げられるのかちょっと謎です。ごめんなさい分かり次第更新します。

RI 使用率

リザーブインスタンス契約で設定した使用率未満だった場合にアラートを上げることができるタイプのようです。確かにリザーブドの場合はもう支払う金額は決まっているので後は今後スペックを上げるか下げるかでこのタイプが参考になるんだと思います。

RI Coverage

"カバレッジ"これも難しい用語ですね。日本語だと"網羅率(カバー率)"といいますがこれで少し分かりやすくなったでしょうか?これは利用している現状のインスタンスに対してどれだけリザーブインスタンスでカバー出来ているかをカバー率でアラートを上げる設定になります。書いてる自分が良く分かんない感じなんですが(^^; カバー率が少なすぎる場合はもうちょっとリザーブインスタンス契約を進めた方が良いし、カバー率が高すぎる(過剰)な場合は減らした方が良いしというという形でアラート設定するんだと自分の中で飲み込みました。(--; これももうちょっと使用方法が分かったら更新します。

通知の種類

通知下の2つに対して閾値以上か以下だった場合通知するという設定ができるようです。

  • 現行の値(費用だったり使用量だったり)
  • 予測の値(AWSが想定した予測値の費用や使用量など)
通知先の種類

これもメール以外でも選択肢があって便利そうです。AWS Lambdaを使ってSlackにも通知できちゃうみたいです。(自分もやってみたいので、やってみたらブログ書きます。)大きく分けると下の3つでしょうか?

  • メール(To以外も使えるのかな?)
  • Amazon SNS
  • AWS Lambdaを利用して他チャットやSNSと連携

AWS Cost and Usage Report [AWS のコストと使用状況レポート]

定期的にレポートティングしてくれるサービスになります。具体的には"AWS Cost Explorer"から設定した情報をもとS3にレポートファイルを出力してくれるみたいです。

  • このサービスを開始(レポートを作成)後、24時間以内にレポートファイルを使用可能
  • Amazon S3 バケットにレポートファイルを出力
  • 1日に最大3回レポートを出力可能

使用状況や費用の情報は毎月の月末に確定されて確定されたレポートファイルにはブレンドコストと非ブレンドコストの情報とその月の使用状況が記録されるようです。

ブレンドコストと非ブレンドコスト(unBlended Cost)

よく分からない用語が出てきたので、調べてみました。まずブレンドコストですね。

ブレンドコストって何?

"Blended Cost"と書きます。ブレンドコストを語るにはブレンドレートが必要になるようなので、まずそこから。

ブレンドレート

"Blended Rate"と書きます。請求金額を利用時間で割った平均値とのこと。"AWS Consolidated Billing"の設定によると思うんですが、請求金額をインスタンス別ではなく全インスタンスでの平均値で出しているとこのとです。具体的には一部をオンデマンドで契約し残りをリザーブドで契約している場合でも(両方の請求金額の合算金額)をインスタンスタイプごとの利用時間で割る感じで算出するようです。*1これでその月の毎時いくらかかっているかが分かりますね。

ブレンドコスト

さて本命のブレンドコスト。これはブレンドレートとインスタンスタイプごとの利用時間を掛けた値になります。なのでブレンドレートで毎時単位の費用が分かってブレンドコストからその月の費用が分かるということです。

ブレンドコストは?

"unBlended Cost"と書きます。これも非ブレンドレートから説明していきます。

ブレンドレート

"unBlended Rate"。元々の予測や設定した利用金額をインスタンス別に割った平均値になります。

ブレンドコスト

ブレンドレートとインスタンスタイプごとの利用時間を掛けた値になります。

AWS的には『ブレンドと非ブレンドのレートとコストを見比べて乖離が大きい場合はプランやスペックを考えて直して見てね』という感じで用意したのかと思ってます。

各サービスとの連携

このレポートは下のサービスに連携して各自カスタマイズが可能とのことなので一応それも載せておきます。

  • Amazon Redshift
    • ファイルを"Redshift"へアップロードすることで使用可能
  • Amazon QuickSight
    • これもファイルを"QuickSight"へアップロードすることで使用可能
  • Amazon Athena
    • S3に出力されているレポートファイルにクエリを発行して条件別にデータ抽出が可能

Reserved Instance Reporting [リザーブインスタンスレポート]

リザーブドで契約した部分の使用率やカバレッジ(カバー率)をレポートしてくれるサービスになります。このサービスでも上で書いた各サービスとの連携は可能です。リザーブドの位置付けとしてリザーブインスタンスは一定期間費用が固定なので、リザーブド特有のレポーティングサービスになっているようです。

如何でしたでしょうか?正直ちゃんと書けているか自身がないんですが、できるだけ分かりやすいように噛み砕いて書いてみたつもりです。できればここでなんとなく「こうゆうサービスなんだなー」と感じて貰って他でちゃんとした専門知識を得て貰えたらと思ってます。m(_ _)m 調べてて改めて思い知らされたんですたAWSさん費用まわりもいろいろニーズに答えようとしてくれているんですね。ここら辺は自分の使用した例なんかも書いていけたらと思ってます。

一旦今日はここまで!

*1:スポットインスタンスは対象外