AWSで高額請求されたときの原因と解決方法

プログラミングを勉強している人は、Herokuというサービスを使って簡単にWEBサービスを公開しているかもしれません。
しかし、Herokuを使っている企業は少数で、WEB系企業でのスタンダードはAWSです。

個人でAWSの勉強をするときは、AWSのアカウントを作っていろいろ触ってみるわけなんですが、僕がAWSの勉強をしていたときに高額請求されてしまったことがあるので、その原因と解決方法についてお伝えします。

これからAWSを勉強する人、プログラミングを勉強する人はくれぐれも僕のようにならないように気をつけてください。

AWSの仕組み

まず、AWSを知らない人のために簡単に仕組みを説明します。

AWSはクラウドサービスで、サーバを立てたり、データベースを作ったり、インフラ環境周りのことはほぼ全てクラウド上で行うことができます。

このブログでは難しい技術的なことに触れないようにしているので、AWS = インフラサービスと覚えておきましょう。

レンタルサーバとの違い

ブログを立ち上げるのにAWSを使う人はほとんどいません。
おそらく企業がメディアを作るときくらいで、個人でブログを作るときは、レンタルサーバを使うことがほとんどです。

AWSとレンタルサーバの大きな違いは、スペックをアップグレードできるかどうかです。

AWSは途中からスペックを細かくアップグレードすることができますが、レンタルサーバは契約時にスペックが固定されます。

将来的に大きくなるサービスを扱うならAWSの方が良いというわけです。

建物で言うと、以下のように例えることができます。

  • AWSがホテル:1泊ごとに部屋を変えることができるし、ジムや朝食などのオプションも自由。
  • レンタルサーバが賃貸:部屋は2年更新で固定。オプションの自由度はほぼなし。

一気に大きくなる可能性があるWEBサービスはAWSを使うことが多いというわけですね。

AWSの料金の仕組み

僕はAWSで約30万円の高額請求をされてしまったのですが、これはAWSの料金形態にあります。

AWSは従量課金と呼ばれる、使った分だけ支払うという仕組みです。

なので、ずっと使い続けたり、勝手に使われたりするとどんどん課金されてしまいます。

逆にほとんど使わなければレンタルサーバより安く済むので、メリット・デメリットがあります。

なぜ高額請求されてしまったのか

僕が高額請求をされてしまった理由は、AWSへのアクセス権の流出です。

ただ、これはハッキングされたとか、AWSのセキュリティが問題だったわけではなく、僕の管理不足です。

AWSは世界的に使われているクラウドサービスなので、個人の小さなWEBサービスがハッキングされることはないですし、セキュリティもしっかりと管理されているはずです。

APIキーを公開したのが原因

APIキーと呼ばれる、AWSへのアクセス権をコード管理サービスGithubに公開してしまったのが原因です。

少し知識のあるエンジニアなら、「なにバカなことしてんだよ!」と思われるでしょうが、プログラミング勉強中だった僕はAPIキーの管理方法すら知らなかったのです。

APIキーやGithubを知らない人のために説明すると、APIキーはクレジットカード番号のようなもので、これをツイッターのプロフィールに出してしまった、みたいな感じです。

どれだけ愚かなことをしたかお分かりでしょうか。
そんなことをしたら当然カードを使われて高額請求が来ますよね?

どのように使われたのか

APIキーが漏れると、いったいAWSで何をされてしまうのか。

僕がされたのは、おそらく仮想通貨のマイニングです。

当時は仮想通貨が流行っていたので、高性能なPC(サーバ)を使って、仮想通貨をマイニングすることで稼ぐことができたようです。
詳しくは調べてみてください。

マイニングをするためのサーバを、僕のAWS上に大量に立てたのです。

おそらくMAXスペックのサーバを50台くらいやられたと思います。

AWSは使った分だけお金がかかりますから、MAXスペック×50台のお金が請求されたというわけです。

AWSで高額請求された時の解決方法

僕が行った解決方法は以下の通り。

  • 似たような事例を調べる
  • GithubからAPIキーを削除する
  • サポートに問い合わせ
  • サーバを削除する

上記をこなしたことで、ありがたいことにAWSから請求金額の払い戻しがありました。

似たような事例を調べる

「AWS 高額請求」とかで調べると、似たようなことをしてしまった人のブログがいくつか見つかりました。

かなり助かったので、僕もこの記事を公開して、誰かの助けになりたいと思っています。

「サポートに連絡すれば、請求金額が戻ってきた」と書いてあったのでひとまず安心して、状況確認に移りました。

GithubからAPIキーを削除する

記事を読んで、APIキーに原因があると分かったので、GithubからすぐにAPIキーを削除しました。

この削除方法もちょっとひと手間必要なのですが、「Github ファイル削除」とかで調べてみてください。

どうしようもなければ、WEBサービスのリポジトリごと削除してもいいかもしれません。
再度アップすればまた使えるようになるので。

サポートに問い合わせ

AWSのサポートに問い合わせです。
確か日本語でメールしても英語で返信が来たと思います。

もしかしたらこちらも英語で送ったかもしれません。

翻訳機能を使いながら、サーバが立てられてしまい、高額な請求が来てしまったことを伝えましょう。

サーバを削除する

立てられてしまったサーバを削除するためには、画面をポチポチして、1つずつ「削除する」を実行しないといけないのですが、コマンドを使って一気に削除する方法があったので、それも調べてやりました。

全削除のコマンドってけっこう怖いのですが、請求されるくらいならデータが消し飛んだほうがマシだと思っていたので、ガンガンコマンド実行していきました。

AWSをコマンドから操作できるようになると、インフラエンジニアレベルが少し上がるので、事前に覚えておくといいでしょう。

AWSの高額請求を経験して反省したこと

高額請求を免れたのはいいものの、同じことをしないためにも原因の追求をしなければいけません。

僕に足りなかったのは、セキュリティの知識でした。

プログラミングをしていると、サービスを作るのが楽しくて、サービスを守ることを気にしなくなってしまうんですよね。

個人で作ったサービスなんて誰も攻撃してこないし、やばくなったら消せばいいや、くらいのスタンスでいられるからです。

プログラマはインフラをどの程度やるべきかにも書いたように、プログラマーであっても最低限のインフラ知識は必要です。

セキュリティの勉強はつまらないのですが、WEBサービスを公開する前に、何をしようとしているのかを勉強しておきましょう。

全部を学ぶ必要はないです。
サーバとデータベースしか使わないなら、ロードバランサーについての知識は後回しでもいいと思います。
ただ、ネットワークやファイアウォールなどのセキュリティ周りの知識がないと、僕のように痛い目を見るかもしれません。

今回のようなことを起こさないように、セキュリティには気をつけてくださいね。

おすすめ ベンチャー転職に使うべき転職サイトを紹介!【おすすめ3選】