Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9738

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

$
0
0

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の検証をやっていてインスタンス落とすの忘れてて
土日放置してたようです。

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

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

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


Viewing all articles
Browse latest Browse all 9738

Trending Articles