背景
11月分のクレジットカードの明細を見てみると、AWSから472円ほど請求されていました。
9月末の2,3日しか設定いじっていない割に高い!と思ったのが、ことの始まりです。
最初に結論
かなり前にAmazon Linux 2でmysql-serverがインストールできないときの対処方法で、NATゲートウェイを設定していました。
そして、MySQLなどの色々なツールをインストールしたので、EC2インスタンスの停止させ、NATゲートウェイは放置していました。
これが諸悪の根源でした。
NATゲートウェイとは?
NATゲートウェイとは、インスタンスから直接インターネットに接続するのではなく、プライベートサブネットからインターネットへの片方向通信を実現する機能です。
図にすると、下のようなイメージのインフラ構成を実現していました。
こうすることで、プライベートサブネットにあるDBサーバに、ソフトウェアをネットワーク経由でインストールしたり、アップデートができます。
NATゲートウェイの金額は?
注意すべき点としては、NATゲートウェイに無料利用枠がないということです。
時間あたりの従量課金制となります。
また、ゲートウェイで処理したデータ量、データ転送量で金額が変動します。
詳しくは下記をチェックしてください。
料金 - Amazon VPC | AWS
東京リージョンの場合、1時間あたり0.062ドルかかります。
何が原因だったのか調査
EC2インスタンスもわざわざ無料枠であるAmazon Linux 2を選択して、お金がかからないものだと思っていました。
最初は、勉強がてら設定したElastic IPアドレスかと思いました。
Elastic IPアドレスとは?
Elastic IPアドレスとは、固定IPアドレスを割り当てるためのものです。
インスタンス1つにつき、Elastic IPアドレスは1つ無料で利用することができます。
ただし、実行中のインスタンスに限ります。
実行中のインスタンスに紐付いていない場合、少しばかり課金が発生するものです。
Elastic IPアドレスはいくら?
Elastic IPアドレスで、400円 = $4も取られているのか??と思って調べてみました。
EIPで料金発生するパターンとしないパターン #AWS | DevelopersIOより抜粋
・$0.00 : 実行中のインスタンスと関連付けられている Elastic IP アドレス 1 つ
・$0.005 : 実行中のインスタンスと関連付けられている追加の Elastic IP アドレスあたり/1 時間(比例> 計算)
・$0.005 : 実行中のインスタンスと関連付けられていない Elastic IP アドレスあたり/1 時間(比例計算)
・$0.00 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップまで)
・$0.10 : Elastic IP アドレスのリマップ 1 回あたり(1 か月間で 100 リマップを超える追加分)
Elastic IPアドレスの課金方式を知らず、EC2は停止していました。
そのため、$1いかないくらいは請求されていると考えました。
しかし、数日で$4も請求されないな…となりました。
請求画面を見て、犯人を特定する
そもそもAWSの請求を見れば分かるのでは??と思い、請求画面を見ることにしました。
下記のURLにアクセスして、
https://console.aws.amazon.com/billing/home#/
Billsを選択すれば、請求明細を見ることができます。
10月の中旬~下旬あたりに気がついたので、10月の請求が恐ろしいことになっています。
NATゲートウェイで、20.03ドルとられています。
EC2は起動しっぱなしではなく、使わないときは停止させていたので、Elastic IPアドレス使用料も1.24ドルとられています。
NATゲートウェイ合計請求:$3.60 + $20.03
9月のNATゲートウェイ費用
0.062/h * 323h = $3.60
10月のNATゲートウェイ費用
0.062/h * 323h = $20.03
参考書が1冊購入できるくらいのお金になってしまいました。
反省①:請求額をモニタリングしよう!
無料だと思わず、たまには請求額をチェックしよう。
めんどくさいな〜と思ったら、CloudWatchで請求額をモニタリングし、一定金額に達したら、事前に設定していたメールアドレスに連絡がくるように設定するとよいです。
具体的な手法は、AWS公式が紹介しているので、参考にすると良いかと思います。
予想 AWS 請求額をモニタリングする請求アラームの作成 - Amazon CloudWatch
反省②:使わなくなったNATゲートウェイは削除しよう!
設定しているだけでお金がかかります。
自分みたいなAWS初心者は、プライベートサブネットが通信する必要があるときだけ設定し、終わったらすぐに削除するように心がけましょう。
反省③:Elastic IPアドレスを設定しているときは、EC2を停止しない! ※ 時と場合による
EC2インスタンスを起動しているときは、Elastic IPアドレスを設定していてもお金はかかりません。(インスタンス1つにつき、Elastic IPアドレスは1つの場合)
停止するとお金がかかります。
自分みたいなAWS初心者で、EC2を無料利用枠でおさめようとしている場合は、起動しっぱなしで問題ないと思います。
お金がかかる状態でEC2を運用する人は、EC2を起動しっぱなしのほうが安いのか、起動していないほうが安いのか、計算する必要があるかもしません。
参考文献
EIPで料金発生するパターンとしないパターン #AWS | DevelopersIO
月額料金の表示 - AWS 請求情報とコスト管理
予想 AWS 請求額をモニタリングする請求アラームの作成 - Amazon CloudWatch