💰

EC2の稼働時間とコストを見てみる

2023/06/15に公開

予防線

本記事は時系列順に出来事を説明しているため、丁寧にまとまった記事ではないと思います。
それでもよければ見ていって下さい。

なにをするの?

しばらく動かし続けたEC2インスタンスがいたため、
そのコストを出してみました。コスト配分タグをつけているのでそれをもとに見ていきましょう。

稼働時間 * オンデマンド料金 = 今回のコスト
になってほしいです。

EC2のスペック

  • Linux
  • AMIは無料枠Ubuntu
  • t3.xlarge
  • 課金タイプはオンデマンド
  • コストタグはCost,このEC2のタグバリューはt3.xlarge
    • インスタンスタイプまんまです

コスト配分タグからコストを出す

Cost Explorerで稼働期間内のコストを見てみました。

このEC2は$7.40使ったらしいです。
次はこのEC2の稼働時間を調べてみます。

稼働時間を出す

EC2のLaunchTimeを出し、現在時刻との差を調べれば良さそうです(原始的)

LaunchTimeを出す

awscliを使います

$ aws ec2 describe-instances --filters "Name=tag:Cost,Values=t3.xlarge" --query 'Reservations[].Instances[].LaunchTime' --output text
2023-06-12T11:54:13+00:00

awscliでの出力はUTCとなっています。
わたしは日本在住のため日本時間にすると、6月12日20時54分にこいつは起動していました。

現在時刻を出す

dateコマンドで出します

$ LC_ALL=C LANG=C date
Wed Jun 14 22:23:12 JST 2023

6月14日22時23分としましょう

稼働時間をdatetimeで出す

pythonのdatetimeを使って、時間を引き算します

>>> import datetime
>>> dt1 = datetime.datetime(year=2023, month=6, day=12, hour=20, minute=54)
>>> dt2 = datetime.datetime(year=2023, month=6, day=14, hour=22, minute=23)
>>> print(dt2 - dt1)
2 days, 1:29:00

ざっくり50時間としましょう。

インスタンスタイプのオンデマンド料金を見る

先述の通り、今回使ったインスタンスタイプはt3.xlarge,OSはlinuxです。
時間当たりのオンデマンド料金は$0.2176/時間でした

いざ計算

材料がそろったところで計算していきましょう

  • オンデマンド料金:$0.2176/時間
  • 稼働時間:50時間

を計算し、

  • Cost Explorerで調べた$7.40

に近ければ良いです。
早速やってみましょう。

>>> 0.2176 * 50
10.879999999999999

あれ?高くね???

反省

先程のCost Explorerでのコスト計算は6/12~6/14の範囲で行っていました。
しかし6/12~6/13の範囲で再計算したところコストは同じく$7.40でした。

どうやら本日(6/14)分は計算されていないようです。
ということで本日の22時間を引いて、28時間で計算してみます

28時間で再計算

>>> 0.2176 * 28
6.0927999999999995

うわー...今度は低く出てる...

すべてのコストは前日までの使用量が反映される

思い切りドキュメントに書いてありました。

すべてのコストには、前日までの使用量が反映されます。たとえば、今日の日付が 12 月 2 日である場合、データには 12 月 1 日からの使用量が反映されます。

https://docs.aws.amazon.com/ja_jp/cost-management/latest/userguide/ce-exploring-data.html

ふむふむ、であれば使用量が反映される6月15日に再度確認してみましょう。

再度Cost Explorerを見てみる

本日確認してみての結果です。

$10.90、概ねこちらの計算と一致しています。
やったね。

所感

  • しばらく時間を置いてからコストを確認する必要がありそう。
  • ここで出てきたコストもよくわからない。$7.40になればよかったが、そうではないし...
    これも時間経過で解決する問題なのか...?

おわりに

ざっくり簡単単純な計算ですが、概ね期待した結果が得られて良かったです。
課金の様子を実際に見てみるのは大事ですね。

Discussion