[初心者]AWSを月数百円くらいの範囲で使っていると思ったら、2000円くらい請求された話

# 背景

11月分のクレジットカードの明細を見てみると、AWSから472円ほど請求されていました。
9月末の2,3日しか設定いじっていない割に高い！と思ったのが、ことの始まりです。

# 最初に結論

かなり前に[Amazon Linux 2でmysql-serverがインストールできないときの対処方法](https://qiita.com/riekure/items/d667c707e8ca496f88e6)で、NATゲートウェイを設定していました。

そして、MySQLなどの色々なツールをインストールしたので、EC2インスタンスの停止させ、NATゲートウェイは放置していました。
これが諸悪の根源でした。


# NATゲートウェイとは？
NATゲートウェイとは、インスタンスから直接インターネットに接続するのではなく、プライベートサブネットからインターネットへの片方向通信を実現する機能です。
図にすると、下のようなイメージのインフラ構成を実現していました。
![名称未設定ファイル.png](https://qiita-image-store.s3.amazonaws.com/0/233011/970465ef-9735-bf8c-4efb-634dd4b884b1.png)

こうすることで、プライベートサブネットにあるDBサーバに、ソフトウェアをネットワーク経由でインストールしたり、アップデートができます。

## NATゲートウェイの金額は？
注意すべき点としては、NATゲートウェイに無料利用枠がないということです。
**時間あたりの従量課金制**となります。
また、ゲートウェイで処理したデータ量、データ転送量で金額が変動します。
詳しくは下記をチェックしてください。
[料金 - Amazon VPC \| AWS](https://aws.amazon.com/jp/vpc/pricing/)

東京リージョンの場合、**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](https://dev.classmethod.jp/cloud/aws/cost-of-eip/)より抜粋

```
・$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ドルとられています。

![スクリーンショット 2018-11-03 17.45.09.png](https://qiita-image-store.s3.amazonaws.com/0/233011/e4433221-f215-4e53-a5d1-c57ae5645364.png)

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

参考書が１冊購入できるくらいのお金になってしまいました。

# 反省①：請求額をモニタリングしよう！

無料だと思わず、たまには請求額をチェックしよう。

めんどくさいな〜と思ったら、CloudWatchで請求額をモニタリングし、一定金額に達したら、事前に設定していたメールアドレスに連絡がくるように設定するとよいです。
具体的な手法は、AWS公式が紹介しているので、参考にすると良いかと思います。
[予想 AWS 請求額をモニタリングする請求アラームの作成 - Amazon CloudWatch](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html)

# 反省②：使わなくなったNATゲートウェイは削除しよう！

**設定しているだけでお金がかかります。**
自分みたいなAWS初心者は、プライベートサブネットが通信する必要があるときだけ設定し、**終わったらすぐに削除**するように心がけましょう。

# 反省③：Elastic IPアドレスを設定しているときは、EC2を停止しない！ ※ 時と場合による

EC2インスタンスを起動しているときは、Elastic IPアドレスを設定していてもお金はかかりません。（インスタンス1つにつき、Elastic IPアドレスは1つの場合）
**停止するとお金がかかります。**

自分みたいなAWS初心者で、EC2を無料利用枠でおさめようとしている場合は、起動しっぱなしで問題ないと思います。
お金がかかる状態でEC2を運用する人は、EC2を起動しっぱなしのほうが安いのか、起動していないほうが安いのか、計算する必要があるかもしません。

# 参考文献
[EIPで料金発生するパターンとしないパターン #AWS ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/cost-of-eip/)
[月額料金の表示 - AWS 請求情報とコスト管理](https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/invoice.html)
[予想 AWS 請求額をモニタリングする請求アラームの作成 - Amazon CloudWatch](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html)