1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[C#]AWSの使用料金をAPIで取得する

Last updated at Posted at 2020-07-21

AWSの使用料金がえらいことに・・・

思いのほかAWSの使用料金が上がっていて、青ざめた経験が誰しもあるはず。
定期的に請求ページを確認すればいいのですが、休日は見てなかったりして
気づいたときは多額の請求がきていた…なんてことも。

そこで、CostExplorer APIを使っていつどのくらい使用したのかわかるようにしてみました。
※CostExplorer APIはリクエストごとに費用が発生するのでやりすぎに注意しましょう!
(記載時点で1回のリクエストにつき0.01ドル)

#必要なもの
AWSのAccessKeyとSecretKey
AWSSDK.CostExplorerをインストール

コード(Console)

            string awsAccessKey = "xxxxxxxxxxx";
            string awsSecretKey = "xxxxxxxxxxxxxxxxxxxxx";

            AmazonCostExplorerClient client = new AmazonCostExplorerClient(awsAccessKey, awsSecretKey, RegionEndpoint.USEast1);
            GetCostAndUsageRequest req = new GetCostAndUsageRequest();
            req.TimePeriod = new DateInterval();
            req.TimePeriod.Start = "2020-07-01";
            req.TimePeriod.End = "2020-07-20";
            req.Granularity = Granularity.DAILY;
            req.Metrics = new List<string>() { "AMORTIZED_COST" };

            GetCostAndUsageResponse cost = client.GetCostAndUsage(req);
            for (int i = 0; i < cost.ResultsByTime.Count; i++) {
                string start = cost.ResultsByTime[i].TimePeriod.Start;
                string end = cost.ResultsByTime[i].TimePeriod.End;
                foreach (string key in cost.ResultsByTime[i].Total.Keys) {
                    decimal amount = decimal.Parse(cost.ResultsByTime[i].Total[key].Amount);
                    string unit = cost.ResultsByTime[i].Total[key].Unit;
                    Console.WriteLine(start + "~" + end + " Amount=" + amount + " Unit=" + unit);
                }
            }


結果

2020-07-01~2020-07-02 Amount=47.6436917916 Unit=USD
2020-07-02~2020-07-03 Amount=47.2799385496 Unit=USD
2020-07-03~2020-07-04 Amount=0.0012009547 Unit=USD
2020-07-04~2020-07-05 Amount=0.001352335 Unit=USD
2020-07-05~2020-07-06 Amount=0.0013171085 Unit=USD
2020-07-06~2020-07-07 Amount=0.0013171085 Unit=USD
2020-07-07~2020-07-08 Amount=0.0013171085 Unit=USD
2020-07-08~2020-07-09 Amount=0.0013171085 Unit=USD
2020-07-09~2020-07-10 Amount=0.2201781931 Unit=USD
2020-07-10~2020-07-11 Amount=48.1395790234 Unit=USD
2020-07-11~2020-07-12 Amount=48.1393261349 Unit=USD
2020-07-12~2020-07-13 Amount=48.1394533349 Unit=USD
2020-07-13~2020-07-14 Amount=6.6676519934 Unit=USD
2020-07-14~2020-07-15 Amount=0.0009903077 Unit=USD
2020-07-15~2020-07-16 Amount=0.0009903077 Unit=USD
2020-07-16~2020-07-17 Amount=0.0009903077 Unit=USD
2020-07-17~2020-07-18 Amount=0.0009903077 Unit=USD
2020-07-18~2020-07-19 Amount=0.0009903077 Unit=USD
2020-07-19~2020-07-20 Amount=0.0009903077 Unit=USD

10日~13日にやらかしてますね…
この時、DocumentDBの検証をやっていてインスタンス落とすの忘れてて
土日放置してたようです。

あとは、このレポートを定期的/閾値を超えたらメールで送ったり
メッセンジャーに送ったりすれば被害を低減できるでしょうか。

そもそも自分でちゃんと管理しろと言われそうですがね。

自分用の雑なコンソールアプリです。
閾値を超えたらメール送信するアプリ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?