はじめに
こんにちは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してしまったおじさんの昔話」です。