今回はAmazon Web Services(AWS)における仮想サーバーのサービスであるAmazon EC2と、EC2インスタンスで使用可能なストレージであるEBS(Elastic Block Store)のつまずきポイントについて解説する。
EC2の仮想サーバーは専用のWebコンソール(Management Console)やコマンドラインツール、APIなどを利用して瞬時に起動できる。また、前回少し説明したアベイラビリティーゾーン(AZ)にまたがるように配置することも可能で、負荷が高くなった場合にスケールアップ/スケールアウトしたり、負荷が落ち着いた場合にスケールダウン/スケールインしたりすることが簡単にできる。OSはWindows、Linuxなどユーザーが使い慣れたものを自由に選択可能である。
EBSはEC2インスタンスで使用するブロックレベルのストレージボリュームだ。こちらもEC2と同様にWebコンソールから簡単に作成ができるようになっており、バックアップも数クリックで作成できる。このように、一見簡単に利用できそうなEC2とEBSだが、初心者にはいくつかのつまずきポイントがある。順に解説したいと思う。
つまずきポイント1:誤ってインスタンスを完全消去してしまう
必要な時に、必要な分だけのリソースを瞬時に確保することはクラウドの大きな魅力だ。EC2もそれに当てはまる。サーバーリソースを確保するときはもちろん、必要になったときに手放して課金を停止することができる。
とても便利なのではあるが、この「簡単に削除できる」ことが逆に落とし穴になることもある。Management ConsoleからEC2インスタンスを操作していると、Stop状態にするつもりが誤ってTerminateし、データを失ってしまう可能性があるのである。
Stop状態とはEC2インスタンスを一時停止した状態で、データはそのまま残る。これに対してTerminateとは、データも含めて完全に削除することだ。
一度Terminateするとそのインスタンスで保持していたデータは2度と復旧できない。単純であるものの、AWSを利用し始めた直後によく起こるミスだ。
このような事態を避けるためには、EBSのスナップショットやOSイメージのAMI※1などの形式でバックアップすることが必要だ。これらの形式でバックアップしていれば、状態を復元することができる。
また、定期的なバックアップ以外にTerminate Protectionという機能を有効にする方法もある。Terminate Protectionは誤ってTerminateを実行しようとしても、できないようにする設定だ。起動時や起動後に、EC2インスタンスに対して有効にすることができる。
このほか、IAM※2という権限管理のサービスを使う手もある。必要なユーザーにのみTerminateの権限を付与することで、誤ったTerminateを防ぐのである。