👩‍💻

#02 AWS でスナップショットの作成とインスタンスの復元をする

2024/07/25に公開

はじめに

今回はインスタンスの復元を行いました。

バックアップを取りたいインスタンスのスナップショットを取得
→ そのスナップショットをもとにボリュームを作成
→ 作成したボリュームと新規インスタンスのルートボリュームを置き換える

という方法で復元していきます。

1. Amazon EBS スナップショットの作成

スナップショットとは、ある瞬間のファイルやディレクトリなどのイメージを保存したものです。
Amazon EBS スナップショットは、Amazon EBS ボリュームのデータを新しい EBS ボリュームに復元するために必要な情報を Amazon S3 にバックアップしてくれます。

手順

  1. Amazon EC2 コンソール ( https://console.aws.amazon.com/ec2/ ) を開きます。

  2. ナビゲーションペインで、[Snapshots] (スナップショット)、[Create snapshot] (スナップショットの作成) の順に選択します。

  3. [リソースタイプ] で、[ボリューム] を選択します。

  4. [Volume ID] (ボリューム ID) で、スナップショットの作成元となるボリュームを選択します。

  5. [Encryption] (暗号化) フィールドは、選択したボリュームの暗号化ステータスを示します。選択したボリュームが暗号化されている場合、スナップショットは同じ KMS キーを使用して自動的に暗号化されます。選択したボリュームが暗号化されていない場合、スナップショットは暗号化されません。

  6. [Create snapshot] (スナップショットを作成) を選択します。

出典:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/working-with-snapshot-archiving.html

2. インスタンスの復元

復元用に空のインスタンスを立ち上げると紐づいたボリュームが自動的に作成されるので、そのボリュームをデタッチし、代わりに復元したいスナップショットを保持しているボリュームをアタッチします。
(新規ボリュームと復元したいボリュームを交換するイメージ)

手順

  1. 取得したスナップショットは、EC2の管理画面のElastic Block Storeのスナップショットで確認できます。対象のスナップショットにチェックを入れ、「アクション」のプルダウンメニューから「スナップショットからボリュームを作成」で、スナップショットの内容でボリュームを作成できます。

  2. 新しいボリュームの ID を書き留めます。

  3. [Instances] (インスタンス) ページで、ボリュームを置き換えるインスタンスを選択し、インスタンス ID を書き留めます。

  4. インスタンスが選択された状態で、[Storage] (ストレージ) タブを選択します。[Block devices] (ブロックデバイス) セクションで、置き換えるボリュームを検索し、ボリュームのデバイス名を書き留めます (例: /dev/sda1)。

  5. ボリューム ID を選択します。

  6. [Volumes] (ボリューム) 画面で、ボリュームを選択し、[Actions] (アクション)、[Detach volume] (ボリュームのデタッチ)、[Detach] (デタッチ) の順に選択します。

  7. ステップ 1 で作成した新しいボリュームを選択し、[Actions] (アクション)、[Attach volume] (ボリュームのアタッチ) の順に選択します。

  8. [Instance] (インスタンス) および [Device name] (デバイス名) に、ステップ 2 で書き留めたインスタンス ID とデバイス名を入力し、[Attach volume] (ボリュームのアタッチ) を選択します。

出典:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-attaching-volume.html

余談

ボリュームの置き換えはEC2インスタンスを実行しながら行うことができるので、インスタンスを停止せずに改修できるという利点があります。

実行中のEC2インスタンスのルートボリュームを置き換える

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. ルートボリュームを置き換えるインスタンスを選択し、[Actions] (アクション)、[Monitor and troubleshoot] (監視とトラブルシューティング)、[Replace root volume] (ルートボリュームを置換) の順に選択します。
    ※ 選択したインスタンスが [running] 状態の場合、[Replace root volume] (ルートボリュームを置き換える) アクションは無効です。

  4. [Replace root volume] (ルートボリュームを置換) の画面で、次のいずれかの操作を行います。

    • 置換用のルートボリュームを初期起動状態に復元するには、スナップショットを選択せずに [Create replacement task] (置換タスクを作成) を選択します。

    • 置換用のルートボリュームを特定のスナップショットに復元するには、[Snapshot] (スナップショット) で、使用するスナップショットを選択し、[Create replacement task] (置換タスクを作成) を選択します。

    • AMI を使用して置換用ルートボリュームを復元するには、[AMI] で使用する AMI を選択し、[Create replacement task] (置換タスクを作成) を選択します。

  5. 置換タスクの完了後に元のルートボリュームを削除するには、[Delete replaced root volume] (置き換えられたルートボリュームを削除) を選択します。

出典:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/replace-root.html

ちなみに、AMIでインスタンスを復元する場合は、インスタンス全体をイメージで保存して復元できるため、インスタンスを立て直す際の設定などの操作が省けます。

最後に

スナップショットやボリュームを保持しているとAmazon EBS の料金が発生します。
ゴミ箱の中にあるスナップショットも対象ですので消し忘れにご注意ください!
以上です。

Discussion