EC2インスタンスをインスタンスIDを変えずに復元する

2016.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

以前にも弊社ブログでバックアップからの復元についてはご紹介していますが、改めて今回実際に作業をしたのでご紹介したいと思います。
EC2インスタンスを使用されている人はAMIを作成してバックアップをとっていると思います。
インスタンスに何か問題があれば作成したAMIから新しくインスタンスを作成することで簡単に復元することができます。
ただし、この方法で復元したインスタンスは問題が発生したインスタンスとは別に新しく作成されるものであるので問題があったインスタンスとはインスタンスIDが異なります。
システムを運用しているとどうしても同じインスタンスIDで復元したいといったケースが発生すると思いますので、今回はその手順を改めてまとめてみました。
インスタンスIDを変えたくない場合は新しくインスタンスを作成するのではなくバックアップしたEBSボリュームを問題が発生したインスタンスにつけかえるという作業になります。ただしその際はEC2を一度停止させる必要があるので気をつけて下さい。

バックアップしたEBSボリュームのスナップショットからEBSボリュームを作成する

対象となるEC2にどのEBSボリュームがついているかを調べるためにマネージメントコンソールから対象となるEC2を選択します。 画面下にあるBlock devicesにあるリンクを選択します。そうするとEBS IDが表示されるのでEBS IDとリンクのパスをセットで控えおきます。どのEBS IDがどのパスになっているかが重要です。今回のインスタンスは/dev/sdfと/dev/xvdaの二つがあるので両方とも控えておきます。 0-ebs id

次にマネージメントコンソールのEC2サービス内にあるメニューからELASTIC BLOCK STORE->Snapshotsを選択します。その中からスナップショットを探して選択します。先ほど控えEBS IDで検索するとDescription項目にEBS IDが含まれるのですぐに見つけられます。

1-create-volume
対象のスナップショットを選択してAction->Create Volumeを選択し、作成します。作成すると、作成したEBS IDが表示されるのでこれも控えておきましょう。もう1つのsnapショットについても同様に作成します。

2.created-volume

EC2に新しいEBSボリュームをアタッチする

準備ができたので、EC2から今アタッチされているEBSボリュームをデタッチして新しいEBSボリュームをアタッチします。 デタッチを行うにはEC2を停止させる必要があるので、まずEC2を停止させます。 停止させたらマネージメントコンソールのEC2サービス内にあるメニューからELASTIC BLOCK STORE->Volumesを選択します。
EBS IDで検索して現在設定されているEBSを選択します。ActionメニューからDetach Volumeを選択しデタッチさせます。もう1つのEBSについても同様にデタッチさせます。
次に作成したEBSボリュームをEBS IDで検索して、ActionメニューからAttach Volumeを選択します。 instanceから対象となるEC2のインスタンスを選択します。選択するとDeviceが自動的に設定されますが、これはこのまま使わず最初にEBS IDを控えたときに一緒に控えたパスを設定します。Attachボタンをクリックしてアタッチさせます。同様にもう1つのEBSボリュームに対しても行います。こちらもアタッチする際のDeviceには最初に控えたパスを設定します。 3.attach-volume
以上で作業は完了です。これでEC2を起動させれば、バックアップ時の状態に復元ができます。

まとめ

AMIからEC2を作成する方法に比べ手順は複雑ですがインスタンスIDを変えずに元に戻すことができました。何か問題があったときに改めてバックアップとっておいてよかったと思える瞬間だと思います。以上です。