「広告」

AWSコスト サービス毎のレポートと予測

「広告」
記事内に広告が含まれています。
「広告」
「広告」

AWS Budgetsは、トータルコスト

AWS Budgetsでは、決められた金額を超えると通知が来るようにできます。

↑この通知は、1日3回程度測定され(推測)、メールなどで、通知ができます。

↑「推測」ではなく、実際に3回更新されると、AWS側に明記されていました(2019/02/10 追記)

AWS Budgets を用いてコストを管理する - AWS コスト管理
AWS Budgets を用いて AWS コストと使用量を追跡してアクションを取ります。

(参考:クラウド破産は、こうして起きる!あっという間に請求額が!
この「閾値」は、「トータルコスト」です。
AWSの様々なサービスを利用していると、金額の大きなものに目がいってしまいますが、小さな負担で、かつ、利用していないサービスのコストを負担していることがあります。
「us-west-2、オレゴンのリージョンに過去に使ったサービスが・・・」など・・・・
「トータルコスト」だと小さなサービスが目に入らなくなってきます。

このbugetも、月に3件以上は、0.02US$/日のコストがかかります。
使いすぎに注意しましょう(笑)。

「広告」

サービス毎のコスト増を予測したい

AWSのサービス毎のコスト増は、
https://aws.amazon.com/jp/aws-cost-management/aws-cost-explorer/
の「AWS Cost Explorer」を使うとグラフィカルに表示ができます。

あるサービスが、「じわりじわり」と増加していた場合、1年など、積み重なるとそれなりの金額になってしまいます。使っていないサービスは、やめて、AWSの有意義なサービスにコストをかけたいですね。
サービス毎のコストを手軽に把握したいです。

「広告」

コストエクスプローラーAPI

今回、勉強のために、コストエクスプローラーAPIを使い、プログラムから、コストをDB化、サービス毎のコストを把握するようにしてみました。
「いつもより、急にコストがあがったぞ」ということを「小さい金額」のうちから、知ることができます。

「広告」

コストエクスプローラーAPIプログラム

https://github.com/FittedCloud/costreporter
に、pythonで実行できるプログラムがのっています。
このソースをダウンロードします。

「広告」

AWS AIM

コストエクスプローラーAPIがチェック可能なAIMを作成します。

↑ユーザを作成します。

↑ポリシーを作成します。

↑このポリシーとユーザ名を結びつけます。

「広告」

pip,bot3

pipとbot3が必要なので、チェックします。

#pip show pip
Name: pip
Version: 18.1
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: pypa-dev@groups.google.com
License: MIT
Location: /usr/local/lib/python2.7/site-packages
Requires:
Required-by:

↑pip入っています。

# pip list |grep boto3
boto3                         1.9.59

↑boto3、入っています。

「広告」

Cron設定

/bin/bash

KINO=`date +"%Y-%m-%d" --date "1 day ago"`
KINO2=`date +"%Y-%m-%d" --date "2 day ago"`

FNAME=backup_`date +%Y%m%d%H%M%S`.dat

/usr/bin/python /root/aws/cost/costreporter/costreporter.py cost -a <aws access key> -s <aws secret key> -t $KINO2,$KINO -c > /home/aws/csvdata/$FNAME

↑ というshを保存して、1日に1回、起動するようにします。

+------------+----------------------------------------+--------------+
| date       | aws_service                            | cost         |
+------------+----------------------------------------+--------------+
| 2019-01-x1 | Amazon Elastic Compute Cloud - Compute | 0.002xxxxxxx |
| 2019-01-x1 | AmazonCloudWatch                       |            0 |
| 2019-01-x2 | AmazonCloudWatch                       |            0 |
| 2019-01-x3 | AmazonCloudWatch                       |            0 |
| 2019-01-x4 | AmazonCloudWatch                       |            0 |
| 2019-01-x5 | AmazonCloudWatch                       |            0 |
| 2019-01-x1 | AWS Budgets                            |            0 |
| 2019-01-x2 | AWS Budgets                            |         0.0x |
| 2019-01-x3 | AWS Budgets                            |         0.1x |
| 2019-01-x4 | AWS Budgets                            |         0.1x |
| 2019-01-x5 | AWS Budgets                            |         0.0x |
| 2019-01-xx | AWS Cost Explorer                      |         0.1x |
| 2019-01-x3 | AWS Cost Explorer                      |         0.0x |
| 2019-01-x4 | AWS Cost Explorer                      |         0.0x |
| 2019-01-x5 | AWS Cost Explorer                      |         0.0x |
| 2019-01-x1 | EC2 - Other                            |  0.13xxxxxxx |
| 2019-01-x2 | EC2 - Other                            |  0.13xxxxxxx |
| 2019-01-x3 | EC2 - Other                            |  0.13xxxxxxx |
| 2019-01-x4 | EC2 - Other                            |  0.13xxxxxxx |
| 2019-01-x5 | EC2 - Other                            |  0.13xxxxxxx |
+------------+----------------------------------------+--------------+

↑ このようなデータが揃います。

「広告」

AWSサービス毎の増減を監視

別のプログラムで、過去1週間程度のコストと、最新のコストを比較して
・急にコストが多くなったもの。
・コストが発生したもの
があれば、メールで通知するようにプログラムを組みます。

「広告」

コストエクスプローラーAPI自体のコスト

APIを叩くと、1回あたり、0.01US$かかりますので、
1日1回、測定をすると、0.3US$かかります。

「広告」

コストエクスプローラーAPIまとめ

どのサービスにどれだけのコストをかけているのかは、家計簿のようなものです。
けっこう、「あれ?こんなサービスに使っていたのか・・・」など、あるかと思います。
AWSでは、適切なサービスに適切なお金を!

「広告」

参考サイト(ありがとうございます)

AWS利用料のレポートツール「Cost Reporter」でちょっと便利にAWS料金を取得してみる | DevelopersIO

 

タイトルとURLをコピーしました