AMIとsnapshotによるバックアップと復元

初心者向けの内容です。
AWS初学者の方の一助になれば幸いです。

AMI(Amazon Machine Image)とsnapshotを利用して、
インスタンスのバックアップと復元をする方法をまとめさせていただきます。

# AMIとsnapshotの違い
AMI(あみ)はストレージ部分も含んだバックアップ、snapshotはストレージ部分のみのバックアップ、という差があります。

snapshotは、既に存在しているインスタンスに対しアタッチしすることで使用可能な状態になります。
しかし、AMIは取得したAMIをそのまま起動することでインスタンスとして使用可能な状態へと復元ができます。

そのあたりの違いを確認していければ良いなと思います。

また、AMIもsnapshotも静止点確保が推奨要件のため、可能であればインスタンスを停止したいですね。
どうしてもインスタンスの停止が難しい場合は、データ処理の少ない時間帯を選び、双方のデータ齟齬が少なくなるようにすると良いとのことです。

# AMIでのバックアップと復元
AMIを利用してバックアップを取得し、インスタンスとして使用可能な状態へと復元します。

「EC2ダッシュボード」より、AMIを作成したいインスタンスをチェックし、「アクション」、「イメージ」、「イメージの作成」と順に選択していきます。

|<img width="1422" alt="img 2020-07-03 11.15.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/bcbd119d-ab35-eeff-5a58-45b4c484d273.png">
|:-:|

イメージの作成画面が表示されたら、「イメージ名」を入力して、他項目を任意で入力していきます。
(今回は「イメージの説明」も入力しています)

|<img width="976" alt="img 2020-07-03 11.16.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/1a878173-643b-5f45-092c-062561294fcf.png">
|:-:|

「イメージの作成」を選択すると作成処理が開始されるため、左ペインより「AMI」を選択します。

|<img width="1147" alt="img 2020-07-03 11.17.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/70d7a3c5-2bdb-3326-f4a5-040b94650ded.png">
|:-:|

ステータスが「available」に変わったら、AMIの作成が完了しているので、「アクション」より、「起動」を選択します。

|<img width="1151" alt="img 2020-07-06 12.02.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/1a0ea088-2f84-fad3-4ff4-72528081cad4.png">
|:-:|

すると、インスタンスを新規作成する画面が表示されるため、順に設定を行うことでインスタンスとして利用可能な状態となります。

# snapshotでの復元
以下の流れにて、snapshotでのバックアップと復元を実施したいと思います。

* インスタンス「Webserver」のsnapshot作成
* インスタンス「Webserver」のEBSをデタッチ(擬似障害)
* 作成したsnapshotからボリュームの再作成
* 作成したボリュームをインスタンス「Webserver」にアタッチし復旧

## snapshot作成
左ペインの「Elastic Block Storage」の「ボリューム」を選択し、snapshotを取得したいボリュームを選択します。
**この際、アタッチされている場所(本環境では"/dev/xvda")は後で使用するので覚えておきます。**

|<img width="1362" alt="img 2020-07-07 20.48.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/b8fe8b2d-0966-c042-7f8b-e055a9c59c40.png">
|:-:|

続いて、「アクション」、「スナップショットの作成」を選択し、スナップショットの説明やタグを入力します。
Nameタグを設定しておくと識別が楽です。

|<img width="1286" alt="img 2020-07-08 9.09.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/a97d0581-d10e-4fe6-fc33-5a57b973de88.png">
|:-:|

「スナップショットの作成」を選択することで作成が開始されます。
左ペインの「スナップショット」を選択して状況を確認します。

|<img width="1199" alt="img 2020-07-08 9.10.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/c33761d0-dc3a-3b00-d289-3a36993b046c.png">
|:-:|

もちろん現時点ではインスタンスへの接続が可能です。

## インスタンスのEBSをデタッチしてみる
インスタンス「Webserver」のEBSをデタッチしていきます。
(インスタンスが稼働している場合は、停止しておきます)

左ペインの「ボリューム」を選択して、該当するインスタンスにチェックを入れ、「アクション」から「デタッチ」を選択します。

|<img width="1399" alt="img 2020-07-08 9.31.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/298a322a-2778-78fa-f6b4-7730ea737a52.png">
|:-:|

デタッチが終わると、ボリュームの状態が「in-use」から「availvable」に変化します。

|<img width="1121" alt="img 2020-07-08 9.40.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/7aefd5cd-9874-8c7f-f7cb-a788351c31a7.png">
|:-:|

この状態でインスタンスを起動すると、インスタンスは起動できません。

|<img width="842" alt="img 2020-07-08 9.40.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/debc550a-6d52-360b-b01f-ca5cf25db7b5.png">
|:-:|

"/dev/xvda"にrootボリュームがないということですので、復旧をしていきます。

## 作成したsnapshotからボリューム作成、復旧の確認

左ペインの「スナップショット」より、先ほど作成したsnapshotを選択します。
「アクション」より「ボリュームの作成」を選択します。

|<img width="1210" alt="img 2020-07-06 11.48.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/0918f9a6-4bb2-e1bc-4107-1f928813385f.png">
|:-:|

入力項目があるので適宜入力して、「ボリュームの作成」を選択します。
Nameタグを設定しておくとやはり便利です。

**注意事項は、インスタンスと同じAZに作成することです。**
インスタンスからは別のAZのEBSに接続することはできない、という特性上からです。

しばらくするとボリュームが出来上がるので、左ペインの「ボリューム」を選択し、出来栄え(availableとなっていること)を確認します。

作成したボリュームを選択して、「アクション」、「ボリュームのアタッチ」を順に選択します。

|<img width="719" alt="img 2020-07-08 21.01.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/eafb5878-8228-cd14-fd0c-daa58154f180.png">
|:-:|

アタッチするインスタンスと、デバイスを選択します。

この時、インスタンスと異なるAZにボリュームを作成してしいるとインスタンスが選択できません。
また、デバイスはのアタッチ先は、確認した"/dev/xvda"を選択します。別の場所だとインスタンスは起動しません。

|<img width="713" alt="img 2020-07-08 21.01.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/7e00978f-ed05-5d51-1479-c7c13a9ed2a6.png">
|:-:|

アタッチが完了すると状態がin-useに変更になります。これでsnapshotを使用したインスタンスの復旧は完了です。


# 参考資料
+ [参考資料1：これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座（SAA-C02試験対応版](https://www.udemy.com/course/aws-associate/)
+ [参考資料2:AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/479739739X/ref=pd_lpo_14_t_1/358-1014912-5412737?_encoding=UTF8&pd_rd_i=479739739X&pd_rd_r=e9121052-1c5f-4b6e-8d39-6624f023efa2&pd_rd_w=t2QEL&pd_rd_wg=O1VBK&pf_rd_p=4b55d259-ebf0-4306-905a-7762d1b93740&pf_rd_r=XK4BJVCRQXTR3F4RZGXT&psc=1&refRID=XK4BJVCRQXTR3F4RZGXT)