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

Share on:

プログラミングを勉強している人は、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 選】