状況
昨日何となくカード明細を見ていたら見慣れない金額の請求があった。
Amazon Web Serviceから400ドル。
特に何かのサービスを展開しているわけでもなく、LambdaやDynamoDB、Amplifyでハンズオン程度の軽いテストをするアカウントであったためそんな額払われるわけないと思い、急いでコンソールを開いた。
まずは、本当にこのアカウントから支払われているかを確認した。
請求管理のページに入ってみると案の定400ドルの記載があった。
今月の利用状況を見に行ったところ、11/2時点で11月の請求額が10ドルになっていた。このままだとどんどん請求額が増えていくため、サービスを止める必要がある。
調査
慌てて履歴を見てみると、RDS(Aurora)が主な使用先となっていた。
まずは、思いつく場所を全部見に行った。
EC2, RDS
起動中のものなし
Free tierでも複数のものを起動していると課金されることを周知していたため、毎回ハンズオンをやったあとはインスタンスを終了していた。履歴に残っているそれではRDSはどこで使われているの?
Amplify
RDSとは関係ないところだが、最近よく使っていたものであったため確認を行なった。
3つのアプリケーションが起動中、すぐ止めたかったけど、v1のバックエンド側を手動で止めないとワンボタンでは削除できない。
完全停止
どのサービスでどれくらいの金額が発生しているかはともかく、今の状況を完全に停止したかったため、方法を調べた。
以下二つの対応が可能とのこと。
- Account Close(アカウント削除)
- Resource Group
ここで、Resource Groupは使うことができなかった。
タグを元にResourceを停止する仕組みであったが、普段はタグをつけてこなかったからだ。
いつも、なんでタグなんかつけているんだろと思いながらも深く調べていなかった...
なので、まずはAccount Closeで全てを停止することにした。
どこで問題が起きているか、自分では見つからなかった上、利用料が発生し続けていたからだ。
とりあえず停止したが...
全て停止はできたものの、アカウントが論理削除されたため、原因が何だったかを確認することができなくなってしまった。
そのため、後から何が問題だったかについて考えてみた。
Redshift
確認を行なっていたとき、明示的に立ち上がっているRDSは確認ができなかった。
また、API Gateway・Lambda・DynamoDBの構成でサーバーレスのエンドポイントを作っていたところもあったが、今回はそこでは料金は発生していなさそうだった。
そこで、頭の中をよぎる一つのサービスがあった。
Amazon Redshift.
私は以前以下の記事で、株のダッシュボードを作るため、APIで取得したデータをRedshiftに入れる作業をした。
無料のクレジットが300ドルあるから、そのまま置いていたが、もしかしたらここで料金が発生しているかもしれないと考えた。上記記事を書いてからはRedshiftを動かしてはいなかったが、もしかしたらここのものが走り続けていた可能性がある。
リージョンの設定
調査を行なっていた時には東京リージョンでだけ調査を行なった。
RDSには何も出ていなかったが、もしかしたら間違えてどこかのリージョンに(おそらくバージニア)RDSを立てて消し忘れていた可能性もあると考えた。
記事を書いているとこっちの可能性が一番高いのではないかと
反省点
確認不足
まずは、頻繁に利用状況を確認していなかったこと。
毎月請求があってからこれくらい払われているか~程度の確認を行なっていたが、そうするといきなり想定外の使用パターンに対応できなかった。
管理不足
上にも書いた通り、タグは必ずつけるべき。何かがあったときに探すのがとても難しかった。
また、監視機能や、利用量の上限設定なども行うべきだった。こうやって書きながらも、実際どのサービスを使ってどんなことをすればいいかわからない。今後きちんと試してみたいと思う。
おわりに
しかし、こうやって初心者が引っかかりやすいパターンはいっぱい存在しそう。AWSの規模を考えるとこんな何百ドルなんか大したことではないかもしれないが、新卒の社会人には痛すぎる出費。
Free tierなので、もっと初心者にも優しい仕組みにしてくれないか?とAWSを恨んでしまうところもなくはない。
これも安い教わりだと思いながら、今後注意していこう..