EC2に750時間/月の無料利用枠、RDSにdb.t2.microという無料のインスタンスサイズが存在しているが、これには大きな落とし穴がある(見事に落ちました。。。)
実は、EC2のインスタンスやRDSのインスタンスサイズ
EC2の考え方は、作成数 X 利用時間 = 合計利用時間 という計算になっており、
無料利用枠 = 合計利用時間なのである。
私の場合EC2を2個走らせていた。
幸い、月の半分程で気づいたので請求はされなかったが、危なかった。
急いで両方の停止を実行し、開発中のみ起動するようにした。
RDSの場合、インスタンスサイズ(CPU、メモリ、ストレージ、ネットワークキャパシティーの組み合わせによって構成されている)を自由に選択でき、db.t2.microが無料利用枠として存在する。これが最低レベルであり、性能に比例して値段が上がる。
私の場合、db.m5.xlargeというインスタンスサイズが選択されており(原因不明。。。)、1ヶ月で500$近い請求をくらった。。。。。
すぐさま該当のDBインスタンスをdb.m5.xlarge ➡️ db.t2.microに変更しようとするが、下記のエラーが発生。
DB Instance class db.t2.micro does not support encryption at rest (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: cfbf5c05-7c57-492b-b9e3-6145a6f2c640)
どうやら、db.t2.microは保存時の暗号化をサポートしていないので変更できないようだ。
下記を参考に暗号化を試みるも、暗号化ボタンが有効にならず諦める。
https://dev.classmethod.jp/articles/encrypt-unencrypted-rds-db-instance-ja/
無料枠のdb.t2.microは諦めてもその次の構成である、db.t2.smallなら変更が可能なようだ。
db.m5.xlarge ➡️ db.t2.small への変更を実行し、利用料金の大幅な減額に成功した。
次回からAWSを使用し、EC2コンテナ上でアプリケーションサーバーをたて、DBはRDSで構築する場合は、
可動しているEC2は何個で合計利用時間はどれだけか?
RDSのインスタンスサイズは無料枠であるdb.t2.micro(もしくはそれに近いもの)か?
という2点を常に確認して利用したい。
上記以外にも次の設定にも注意したい。
ストレージタイプというものが以下の3種から選択可能で、これも$150の高額請求が来ていた。。。
汎用(SSD)
プロビジョンド IOPS(SSD)
⬅️ 初期選択
マグネティック
次の記事を参考に設定を以下のように変更した
https://blog.manabusakai.com/2015/07/rds-cost-down/
プロビジョンド IOPS(SSD) ➡️ 汎用(SSD) 変更時に注意(ロード時間が長くなる可能性あり)
実際の請求明細には以下の記述があり、参考記事が正しければ$146.67のコストダウンだ。もっと早く知りたかった。。。
USD 0.24 per IOPS-month of Multi-AZ Provisioned IOPS611.111 IOPS-Mo$146.67
USD 0.30 per GB-month of provisioned Multi-AZ IO1 storage61.111 GB-Mo$18.33
また、初心者が陥る料金発生には以下のようなものもあるらしい。
https://qiita.com/Yuji-Ishibashi/items/bb1c0042fd16a9350c5a
さらに、設定を一歩間違えると下記のような超高額請求もあるらしい。
https://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694
最後に、私と同じような高額請求に、この記事が少しでも助けになることを願うばかりである。