opswitchで取得したEC2バックアップをリストアする

2020.01.26

しばたです。

弊社で提供しているジョブスケジューラーサービスのopswitch(オプスイッチ)ではAWSの運用に係る様々なタスクの自動実行が可能ですが、その中でもEC2インスタンスのバックアップに関しては、

の2つのタスクが提供されています。

本記事ではこれらのタスクで作成したバックアップをリストアする一般的な手順を紹介します。

opswitchバックアップの基本

opswitchのバックアップ機能であるEBSスナップショットの作成EC2バックアップの作成のどちらも実体としてはAWS標準の機能でEBSスナップショットAMIイメージを作成することでバックアップとしています。
このためリストア手順は手動でEBSスナップショットAMIイメージを作成した場合と同様です。

リストアシナリオ

EBSスナップショットAMIイメージをバックアップとして使用した場合のリストア方法には以下の3つのシナリオがあります。

  1. AMIイメージから新しいEC2インスタンスをリストア
  2. AMIイメージからEBSボリュームをリストア
  3. EBSスナップショットからEBSボリュームをリストア

opswitchのタスクにこのシナリオを合わせると下表の通りとなります。

No. opswitchタスク バックアップ対象 リストア対象 リストアシナリオ
1 EC2バックアップの作成 AMI AMI 1. AMIイメージから新しいEC2インスタンスをリストア
2 EC2バックアップの作成 AMI EBS 2. AMIイメージからEBSボリュームをリストア
3 EBSスナップショットの作成 EBS EBS 3. EBSスナップショットからEBSボリュームをリストア

リストアの基本

各シナリオのリストア手順についてはDevelopsers.IOでも既に幾つかの記事が存在しており、opswitchで取得したバックアップも同じ手順でリストアできます。

やることは変わらないのですが本記事では改めてその手順を手順書風に解説していきます。

opswitchで取得したEC2バックアップをリストアする

ここから本題に入り各シナリオでのリストア手順を紹介します。

検証環境について

本記事では以下のopswitchタスクを作り、適当なEC2インスタンスをバックアップしています。
ターゲット指定に独自のタグを使っているくらいであとは特筆すべき点は無いごく普通の定義としています。

EC2バックアップの作成

EBSスナップショットの作成

バックアップ対象

バックアップ対象は私が普段使う検証環境に適当に作成したWindows Server 2019インスタンス(test-ec2)としています。

1. AMIイメージから新しいEC2インスタンスをリストアする手順

AMIイメージはもともとバックアップ専用ものではないため、AMIから新しいEC2インスタンスをリストアする際は運用者がリストア先の環境を事前に把握しておく必要があります。
最低限以下の情報が必要です。

  • インスタンスタイプ
  • リストア先VPC
  • リストア先サブネット
  • EC2キーペア名

opswitchでバックアップされたAMIイメージは下図の様にAMI名が「インスタンスID + 作成時刻」となっており、タグにcm-Taskcreation_infoといったタスク情報が登録されています。

これらの情報を元にリストアしたいイメージを選び「起動」アクションを選択します。

するとEC2インスタンスの選択ウィザードが開始されます。
このウィザードでは使用するAMI以外の項目は運用者が指定する必要があります。

始めにインスタンスタイプを選択します。

次にインスタンス設定の詳細を決めます。
最低限リストア先のVPC、サブネットを指定する必要があり、その他の項目についてはバックアップ元の環境に合わせて適切に設定する必要があります。

次はストレージ設定になります。
こちらはバックアップ元のボリュームが初期設定されていますのでそのまま次へ進みます。

次はタグ設定になります。
こちらは初期状態では何も設定されていませんのでバックアップ元の環境に合わせた内容を設定してやり次へ進みます。

次はセキュリティグループの設定です。
こちらも初期状態では何も設定されていませんのでバックアップ元の環境に合わせた内容を設定してやり次へ進みます。

設定内容の確認画面になりますので、設定内容に間違いがないことを確認し「起動」ボタンをクリックします。

キーペアの指定画面になりますのでバックアップ元と同じキーペアを選び「インスタンスの作成」ボタンをクリックします。

これで新しいEC2インスタンスが作成されます。

新しいインスタンスが起動し、ステータスチェックが完了すればリストア完了です。

【補足】より良いリストア方法

このシナリオではリストア時に運用者がバックアップ元の構成情報を把握し手入力で設定する必要があります。
緊急を要する場合や設定ミスを防ぐにはリストア手順をスクリプト化しておくのが良いでしょう。

例えばAWS Tools for PowerShellを使う場合であれば、以前私が書いた記事の方法でAMIIDの指定をバックアップ元のAMIIDにするだけでリストア手順をスクリプト化できます。

2. AMIイメージからEBSボリュームをリストアする手順

このシナリオではAMIイメージに含まれるEBSスナップショットを使用し、リストア先にあるEBSボリュームを差し替える手順を踏みます。
EBSボリュームの差し替えが発生するためリストア先のインスタンスは停止している必要があります。
EC2インスタンスが停止していない場合は止めておいてください。

最初にAMI中にあるEBSスナップショットからEBSボリューム作成します。
AMIイメージを取得すると同時にEBSスナップショットが生成され、opswitchでバックアップされた場合は下図の様に名前が「EC2インスタンス名」となっており、タグにcm-Taskcreation_infoといったタスク情報が登録されています。

これらの情報を元にリストアしたいスナップショットを選び「ボリュームの作成」アクションを選択します。

するとボリュームの作成画面になります。
ボリュームタイプ、サイズなどの各種情報はバックアップ時点の情報を引き継いでますが、アベイラビリティゾーンは引き継いでいませんので必要に応じて指定します。今回はアベイラビリティゾーンの他にNameタグをtest-ec2-restore-ebsに設定しています。
必要な情報を設定したら「ボリュームの作成」ボタンをクリックします。

これでEBSスナップショットからEBSボリュームが作成されます。

EBSボリュームの状態が「available」であれば利用可能です。

ここからリストア対象のEBSボリューム(test-ec2-restore-ebs)と元のEBSボリューム(test-ec2)を差し替えてリストアします。
元のボリューム(test-ec2)はこの時点でEC2インスタンスで使用中のため、

  1. 元のボリューム(test-ec2)のデタッチ
  2. リストア対象のボリューム(test-ec2-restore-ebs)のアタッチ

という手順を踏む必要があります。
最初に元のボリューム(test-ec2)を選択し「ボリュームのデタッチ」アクションを選択します。

確認画面が表示されるのでそのままデタッチします。

ボリューム(test-ec2)の状態がin-useからavailableになればデタッチ完了です。

次にリストア対象のボリューム(test-ec2-restore-ebs)を選択し「ボリュームのアタッチ」アクションを選択します。

ボリュームのアタッチダイアログが表示されますので、バックアップ元と同じ情報を指定して「アタッチ」ボタンをクリックします。

  • インスタンスID : アタッチ先のEC2インスタンスIDを指定 (入力補完あり)
  • デバイス : バックアップ元と同じデバイス名にする
    • 今回の場合はWindows EC2のルートデバイスのため /dev/sda1 としてる

リストア対象のボリューム(test-ec2-restore-ebs)の状態がin-useになればリストア完了です。

【補足】アタッチ先のデバイス名について

アタッチ先のデバイス名は対象OSやルートボリュームか否かによって異なります。
基本的には元のEBSボリュームをデタッチする前にデバイス名を控えておくのが良いですが、リストア先のデバイスを変えたい場合は注意してください。

デバイス名の詳細については以下のドキュメントを参考にしてください。

3. EBSスナップショットからのリストア手順

EBSスナップショットの作成タスクで作成したスナップショットは、前のシナリオ同様に名前が「EC2インスタンス名」となっており、タグにcm-Taskcreation_infoといったタスク情報が登録されています。
パッと見AMIイメージで作成したスナップショットと見分けがつきにくいですが「説明」欄の有無や「cm-Task」タグの内容から識別が可能です。

以降の手順は前のシナリオのEBSボリュームのリストア手順と全く同じです。
解説は簡単にすませます。

リストアしたいスナップショットを選び「ボリュームの作成」アクションを選択します。

ボリュームの作成画面になりますので必要な情報を設定し「ボリュームの作成」ボタンをクリックします。

EBSスナップショットからEBSボリュームが作成され、EBSボリュームの状態が「available」であれば利用可能です。

ここからリストア対象のEBSボリュームを差し替えてリストアします。
元のボリューム(test-ec2)を選択し「ボリュームのデタッチ」アクションを選択します。

確認画面が表示されるのでそのままデタッチします。

ボリューム(test-ec2)の状態がin-useからavailableになればデタッチ完了です。

リストア対象のボリューム(test-ec2-restore-ebs)を選択し「ボリュームのアタッチ」アクションを選択します。

ボリュームのアタッチダイアログが表示されますので、バックアップ元と同じ情報を指定して「アタッチ」ボタンをクリックします。

リストア対象のボリューム(test-ec2-restore-ebs)の状態がin-useになればリストア完了です。

最後に

以上となります。
手順としては既知のものですがopswitchのバックアップと絡めたシナリオの一覧が無かったのでまとめてみました。

既にopswitchをお使いの方やこれからopswitchを使ってみようと検討されているお客様の役に立てば幸いです。