0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「EC2のバックアップからファイルをリストアして」と言われたとき

Posted at

はじめに

サーバを日々バックアップ運用していると、結構な頻度で「バックアップからファイルだけ戻してほしい」という相談が来ます。
EC2でどういう風にできるのか試してみました。OSはWindowsですが、Linuxでも同様かと思います。

概要

この記事では、以下の2つの方法をやっています。

  • バックアップしたAMIから別のVMを作成し、元ファイルをコピーする方法
  • スナップショットからボリュームを作成し新しいVMにアタッチし、元ファイルをコピーする方法

AMIからVMを作成する場合、内部で動いているシステム・サービスが外部に影響しないよう配慮が必要です。
他環境に影響ないことが保証されている、隔離環境で起動するなどを検討してください。

また、スナップショットからボリュームを作成する場合、作成したボリュームを既存のVMにアタッチすることもできますが、稼働中のサーバの構成を変更することになり影響が心配されますので避けています。

やってみた

今回はVMをAWS Backupでバックアップし、作成されたAMIとスナップショットを用いて行います。

準備:VMのバックアップ

まずはVMを作成して、リストアのためのファイルを作成します。
image.png

以下のようにファイルを作ります。
image.png

AWS Backupでオンデマンドバックアップします。念のためVMを停止した状態で行います。
image.png

成功すると、AMIが作成されます。これを使っていきます
image.png

スナップショットも作成されます。こちらも使っていきます。
image.png

バックアップ後に、VMを起動してファイルを書き換えます。
image.png

このファイルをリストアするシナリオでやっていきます。

AMIから別のVMを作成し、元ファイルをコピー

まずはAWS Backupで作られたAMIを使って、ファイルをリストアします。

AWS Backupを使わないで作成されたAMIからでも、ほぼ同様にできると思われます。

AMIからリストア用VMを作成

まずAWS Backupに使わせるロールを作ります。元のインスタンスプロファイルを使ってアクセスするために、AWS Backupで利用するリストアのロールに、iam:PassRole権限を付与します。

今回は、以下のCFnテンプレートを使いました。既にあるポリシーAWSBackupServiceRolePolicyForRestoresに、iam:PassRole権限を付与しています。

createSampleRoleforBackup.yaml
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  SampleRoleforBackup:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: SampleRoleforBackup
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: 
                - backup.amazonaws.com
            Action: 'sts:AssumeRole'
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores
      Policies:
        - PolicyName: AllowPassRole
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: 
                  - 'iam:PassRole'
                Resource: 
                  - !Sub 'arn:aws:iam::${AWS::AccountId}:role/*'

ロールが作成できたら、AWS Backupのコンソールから対象のAMIを復元します。
image.png

ネットワーク設定は何も変更していません。
image.png

ロールに、先ほど作ったロールを指定し、復元します。
image.png

初期化のチェックに5分くらいかかりましたが、もう一つのVMが作られました。
image.png

作成したVMに、RDPでアクセスします。パスワードは元のVMと同じものを使ってアクセスします。

リストアしたVMからはパスワードを復号できません。元PCのパスワードを流用してください。
image.png

元のファイルが確認できました。後はこのファイルをネットワーク越しでコピーや、RDPなので一度ローカルにコピーしてから元VMにアップするなどします。
image.png

リストア用VM削除

作ったVMは終了して削除するだけです。

スナップショットからボリュームを作成し新しいVMにアタッチし、元ファイルをコピーする

次は、AWS Backup時に作られたスナップショットを使って、ファイルをリストアします。

スナップショットから、ボリュームを作成

EC2のコンソールから対象のスナップショットを選択し、[アクション]-[スナップショットからボリュームを作成]をクリックします。
image.png

特に何も変更せず、ボリュームを作成します。
image.png

新しいVMを作成

ボリュームを作成したAZに、新しいVMを作成します。サブネットの指定は同じAZになるように注意します。
image.png

ボリュームをアタッチ

作成したVMにボリュームをアタッチします。ボリュームから[アクション]-[ボリュームのアタッチ]を選択します。
image.png

インスタンスとデバイス名を選択します。デバイス名は、データボリュームの場合は xvd[f-p]と書かれているので、それに従います。
image.png

アタッチした後、ボリュームのステータスがしばらく「データが不十分です」になっていますが、しばらくするとOKになります。
image.png

アタッチしたVMで、ボリュームを利用できるようにします。ログインしてサーバーマネージャを起動し、コンピュータの管理を開きます。
image.png

ディスクの管理で、アタッチしたボリュームが見えます。
image.png

[Offline]のあたりの位置を右クリックして、Onlineをクリックします。
image.png

Onlineになったら、Openすることで、エクスプローラが開きます。
image.png

フォルダを潜っていて、対象のファイルの更新前の状態が確認できました。
image.png

VM・ボリューム削除

リストア用のVMは終了して削除します。作成したボリュームは残ったままなので、こちらも消す必要があります。
image.png

おわりに

今回は、バックアップしたEC2のVMから、ファイルだけ戻したいというケースを想定して、2つの方法を記事にしました。
専用のバックアップソフトだとファイル単位のリストア機能がありますが、EC2ではどうすればいいのか気になったので試してみました。
結構面倒なので、日常使用するファイルなどはEC2で構築したファイルサーバなどに保存せず、S3やBOXなどを使ってほしいです。
この記事がどなたかのお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?