ちょっと話題の記事

AWSの課金要素を理解したい EC2を例に調べてみた

AWS課金要素を理解したい
2022.09.22

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

今回は、これから AWS を使い始める方、なんとなく使っているが利用料金が気になる方向けに記事を書きます。
AWS では何をすると利用料金(課金)が発生するでしょうか?仮想サーバーを使ったときでしょ、この理解は皆さんお持ちだと思います。 しかし、これは半分正解半分不正解です。
「サーバーはシャットダウンしているのに○○ドル請求がきた」という経験を一度はしていると思います。(自分ではなくても上司に言われたなど)
課金の仕組みを理解することが無駄な支払いを抑えるための第一歩だと考えております。

主なAWS 課金要素

以下に主な課金要素を示します。

  • コンピュート
    • 何らのインスタンスが起動するタイプのサービスインスタンス起動時間により課金
    • 課金要素のなかでもっとも多いパターン
  • ストレージ
    • ディスク容量を消費するタイプのサービス
    • 月間のディスク容量により課金
    • EBS ボリューム、S3 保管容量、スナップショット容量など
  • ネットワーク
    • ネットワーク通信量により課金
  • リクエスト
    • あるサービスに対するリクエストで課金されます
    • API 呼び出し量により課金
    • Web リクエスト数により課金
    • など
  • 機能の有効化
    • ある機能を有効にしたことにより課金されます
    • Elastic IP アドレス
    • ACM プライベート認証機関
    • など
  • アクティブユーザー
    • そのサービスを使用したユーザー数により課金されます
    • Code Commit
    • Client VPN
    • など

何も考えずに使っていると予想していない箇所で課金が発生しそうです。
少しだけ具体的に考えてみます。よく使われているサービス EC2 をピックアップして細かい課金要素を見ていきしょう。

EC2 のケース

EC2 のオンデマンド料金は以下のサイトで確認可能です。
Amazon EC2 オンデマンド料金

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

インスタンスを起動した時間が課金されます。
vCPU、メモリ、ストレージ(インスタンスストア)、ネットワークパフォーマンスの組み合わせでインスタンスタイプが決まり、それぞれのインスタンスタイプごとに時間単価が設定されています。
1時間未満の各インスタンス時間については、Linux、Windows、SQL Enterprise を使用する Windows、SQL Standard を使用する Windows、SQL Webインスタンスを使用する Windows のインスタンスの場合、秒単位で請求されます。その他すべてのインスタンスタイプでは、1時間として請求されます。

データ転送

データ転送量に応じて課金されます。
EC2 へ向かってくるデータ転送(イン)、EC2 から出るデータ転送(アウト) によって料金が異なります。

インターネットから EC2 へのインは無料です。
EC2 からインターネットへのアウトは GB 単位で料金が設定されています。
月の合計通信量によってボリュームディスカウントも設定されています。

EC2 から他リージョンへのアウトは GB 単位で猟奇が設定されています。
インターネット向けアウトに比べると割安です。
また、すべての AWS サービスとリージョン (中国と GovCloud を除く) を集計して、1か月あたり 100GB のインターネットへのデータ転送 (アウト) を無料で利用できます。

異なるアベイラビリティゾーン間のデータ転送は GB 単位で料金が設定されています。
同じアベイラビリティゾーン内のデータ転送は無料です。(EC2、RDS、Redshift、ElastiCache、ENI 間)
※ 同じアベイラビリティゾーン内のデータ転送でもパブリック IP アドレスでの通信は課金が発生されます。

同じリージョン内の S3、EBS Direct API、Glacier、DynamoDB、SES、SQS、Kinesis、ECR、SNS、SimpleDB、EC2 間の直接データ転送は無料です。

同じ VPC 内にある EC2 と CLB/ELB 間の通信は無料です。(プライベート IP アドレスを使っていること)

少々複雑です。こちらの図がわかりやすいかもしれません。
(記載されている料金は古い料金となっていますのでご注意ください)
image

EBS 最適化インスタンス

EBS に対して最大限のパフォーマンスを発揮できるオプションです。
新しいインスタンスはデフォルト有効になっており追加料金は発生します。

デフォルト有効になっていない旧世代 (c3、m3、r3 など) のインスタンスで EBS 最適化オプションを有効にすると追加料金が発生します。

Elastic IP アドレス

固定のパブリック IP アドレスです。
実行中の EC2 インスタンスに関連付けられた1つの Elastic IP アドレスは無料です。
2つ目以降を追加で使用する場合は時間あたりの追加料金が発生します。

EC2 インスタンスに関連付けられていない、または、関連付けられた EC2 インスタンスが停止中であった場合も時間あたりの追加料金が発生します。
Elastic IP アドレスの消し忘れで無駄な課金されてしまうことが多いのでご注意ください。

t系インスタンス Unlimited モード

パフォーマンスが低いかわりに安価で利用できる t 系インスタンスですが、Unlimited モードで余剰クレジットを利用した場合は追加料金が発生します。
安価ということで利用される方が多い t 系インスタンスですが、この仕組みを理解していないと m5.large を使っていればよかったということが起こりかねないのでご注意ください。

EBS ボリューム

EC2 ついでに EBS の料金も確認しました。

EBS ボリュームは GB 単位で料金が設定されています。
ボリュームタイプによって単価は異なります。
IOPS、スループットによって料金が発生するタイプもあります。

EBS スナップショット

スナップショットは GB 単位で料金が設定されています。
スタンダードティアで段階的にスナップショットを取得した場合は、差分取得になるので料金も差分になります。

EBS スナップショットのごみ箱

誤削除からの復元を行えるごみ箱機能では、EBS スナップショットと同じ料金が発生します。

EBS Fast Snapshot Restore

スナップショットから EBS を復元すると俗にファーストタッチペナルティと呼ばれる、ディスク初回アクセスが遅い事象が発生します。
これを回避する機能が Fast Snapshot Restore です。

これを有効にしたスナップショットを取得すると時間あたりの料金が発生します。

スナップショット用 EBS direct API

スナップショットに対してデータの読み取りや差分を表示できる EBS direct API。
この API はリクエストあたりの料金となっています。

EC2 と CloudWatch

流れにのって EC2 で利用する CloudWatch についても調べます。

EC2 が自動的に送信するメトリクスにかかる料金は無料です。

詳細モニタリングを有効にするとメトリクス単位の料金が発生します。

CloudWatch Agent などを用いてカスタムメトリクスを CloudWatch へ送信すると、メトリクス単位の料金とメトリクスを送信する API リクエスト単位の料金が発生します。

CloudWatch Agent などを用いてログファイルを CloudWatch Logs へ送信すると、収集・保存に対して GB 単位の料金が発生します。

EC2 以外の料金

AWS の製品ページのほとんどに料金タブが用意されています。

どのような使い方、操作をするとどの単位で課金されるのかが細かく書かれています。
細かく書かれている分だけすぐに理解することは難しいですが、繰り返し読み込んでいけば必ず理解は可能です。

まとめ

よく使われている EC2 を取り上げて課金要素を調べてみました。
誰でも比較的簡単にリソースを使えることがクラウドのメリットではありますが、課金の仕組みを知っておかないと翌月の請求書で冷や汗をかくかもしれません。
ご自身が使用するサービスの料金ページは事前にチェックして理解しておくことをおすすめします。

参考

【資料公開】AWSコスト最適化のポイントのご紹介
AWSのコストを削減する9の方法
AWSのコストを削減する9の方法 第二回
AWSのコストを削減する9の方法 第三回
え、そんなに!?意外と知らないAWSでお金がかかるポイント5選!!
え、そんなに!?意外と知らないAWSでお金がかかるポイント5選!!第2弾
え、そんなに!?意外と知らないAWSでお金がかかるポイント5選!!第3弾

以上、吉井 亮 がお届けしました。