AWSでやらかして3桁万円請求された話 @kappa0923
はじめに
こんにちはkappa0923です。普段はSierでクラウドアーキテクトをしています。
この記事は「本番環境でやらかしちゃった人 Advent Calendar 2020」20日目の記事です。
今回はAWSの設定をミスったために普段の10倍以上の料金を請求されるに至った経緯と、その対策について記載していきます。
お断り
この記事はあくまでもノウハウを共有して、同様にやらかす人を少しでも減らすことを目的としています。
記事の内容はあくまで個人の見解であり、所属とは関係ありません。
また、多少のフェイクを混ぜますので、あらかじめご了承ください。
発生背景
とあるWebシステムをAWS上で構築し、開発・運用を行っていました。
このWebシステムではバッチ処理を並列で行うため、複数の小さいEC2インスタンスを作成→実行→削除という構成をとっていました。
これにより必要ない時間はEC2インスタンスが起動しておらず、ランニングコストを抑えようという狙いがありました。
しかし、この構成が仇となって発覚が遅れ、さらに膨大な費用を請求されるまでに至ってしまいました。
何が起きたか
バッチ処理を行うEC2は毎回AMIから作成されるようにしていましたが、あるときにAMIの設定をミスり、EC2インスタンス削除時にアタッチされているEBSボリュームを削除するオプション(DeleteOnTermination)が外れてしまいました。
その結果、EC2インスタンスは削除されるが、EBSボリュームが削除されないまま残り続けるという状態が発生しました。
EBSボリューム1つ1つはサイズも小さく、単位料金も安いですが、気づいたときには1万台を超えるEBSボリュームが残り続けていました。
結果として、1ヶ月以上設定ミスに気づかず、EBSのストレージ使用料金だけで1ヶ月で3桁万円の請求が来ることになってしまいました。
EC2インスタンスは起動しっぱなしにならないよう、毎日確認していましたが、EBSの方まで気が回っていなかったことは落ち度です。
対策
AWS Budgeを利用して予算設定をする、これに尽きます。
今回は急激に料金が跳ね上がった訳ではなく、徐々に徐々に料金が大きくなっていきました。
つまり、気づくチャンスがあったわけです。
これらを設定するだけで、請求額が異常な値になる前に気づくようになることができます。
このサービス自体は認識していましたし、予算を設定することの大切さも知っていたつもりでした……
しかし、後回しにしてしまったがために今回のようなミスが発生しました。
クラウドに関わらず、設定ミスによるやらかしは往々にして発生します。
だからこそ、ミスった時に気づけるようにしておくことが大切です。
おわりに
十分注意していたと思っていても事故は起こります。
特にアクセスキー流出などによる請求はよくある話なため、十分に注意していました。
しかし、今回は予想していなかった設定ミスでした。
大切なことは、このような失敗のバッドノウハウを共有することで一人でも同じやらかしを防ぐことです。みなさんもこのバッドノウハウを活かし、良いクラウドライフを送っていただけることを祈っています。
明日の本番環境でやらかしちゃった人 Advent Calendar 2020は@real_yaruoさんの「ホスティングサーバの/binディレクトリをrm -rfしてしまったおじさんの昔話」です。
単語メモ
- クラウドアーキテクト:クラウドコンピューティングのアーティテクチャ全体を統括する役割です。
- ランニングコスト:コンピューターの機材やシステムを保守・管理するために必要な費用のことです。
- バッチ(Batch)処理:あらかじめ登録した一連の処理を自動的に実行する処理方式を指します。
- AMI(Amazon Machine Image):クラウドサービスで仮想マシンを起動するのに必要なオペレーションシステムです。
- EBSボリューム:インスタンス用のシステムドライブ・データベースアプリケーションのストレージなど、頻繁に更新する必要があるデータのプライマリストレージとして使用できます。
- DeleteOnTermination:インスタンスの終了時のAmazon EBS ボリュームの保持という意味です。
- AWS Budge:AWS認定デジタルバッジで、クラウドに関する自分のスキルを業界で実証できます。