私の戦闘力は53万です

awsとgcpについて書きます

【EFS Single File Restore】AWS backupとEFSの連携でファイル単位のリストアを試してみる

AWS BackupでEFSとの連携が便利になり、
EFSでのファイル単位のリストアができるようになりました。
機能を使ってみる機会がありましたのでメモ的に書いてみます。
aws.amazon.com

ユースケースとしては、ユーザやシステムが誤ってファイルを消してしまった場合のリカバリが考えられます。
ドキュメントの細かい箇所を読み込んで行くと、
おおよそ下記のメリット/デメリットがあることが分かりました。

メリット

  • AWS Backupは増分バックアップなので容量を無駄に取りすぎない
  • EFSの安価ストレージクラス(IAとか)関係なく利用可能

デメリット

  • 復元に時間(数分程度)がかかる
  • 復元の容量に応じて料金が発生する

検証準備

まずは検証の準備です。
EC2にEFSをマウントし、EFS内に適当なファイルを2つ作成します。

ls -lh /mnt/efs/test/bkup/
合計 8.0K
-rw-rw-r-- 1 ec2-user ec2-user 2  1月 28 03:10 1.txt
-rw-rw-r-- 1 ec2-user ec2-user 2  1月 28 03:10 2.txt

AWS Backupで、オンデマンドバックアップ(EFS)を取得します

f:id:remmemento:20200204000308p:plain
AWS Backup

その後、EFS内のファイルを一つ消してみます

rm /mnt/efs/test/bkup/1.txt 
ls -lh /mnt/efs/test/bkup/
合計 4.0K
-rw-rw-r-- 1 ec2-user ec2-user 2  1月 28 03:10 2.txt

リストア実施

上記で消してしまったファイルをリストアします。
AWS Backupの画面から、ファイルリストアを実行します。

f:id:remmemento:20200204000923p:plain
パス指定
ここで注意なのが、パスの指定方法です。
パスはマウントポイントからのパスを記入します。
上記の例は、下記の場合の例です。
マウントポイント「/mnt/efs」
ファイルフルパス「/mnt/efs/test/bkup/1.txt」
指定するパス「/test/bkup/1.txt」
f:id:remmemento:20200203235413p:plain
リストアが実行されると復元がジョブとなり、コンソールで確認できます。
ジョブが完了すると、マウントポイント直下に
「マウントポイント/aws-backup-restore_*」の形式で
ファイルがリストアされています。

ls -ld /mnt/efs/aws-backup-restore_*
drwxr-xr-x 3 ec2-user ec2-user 6144  1月 28 03:09 /mnt/efs/aws-backup-restore_2020-01-29T09-05-15-134Z
drwxr-xr-x 4 ec2-user ec2-user 6144  1月 28 03:09 /mnt/efs/aws-backup-restore_2020-01-29T09-20-26-282Z


ちなみに、バックアップ中に指定したファイルが存在しない場合は、
空のフォルダが作成されていました(ただし復元ジョブは成功の扱い)

ls -lh /mnt/efs/aws-backup-restore_2020-01-29T09-05-15-134Z/
合計 36K
drw--w---- 2 root root 38K  1月 29 09:05 aws-backup-lost+found_2020-01-29T09-05-15-135Z


上記はファイル単位でのリストアでしたが、
フォルダ単位のリストアも可能なため、
誤操作によるファイル削除等のリカバリには有効な機能です。
AWS EFSを利用する際には利用を検討してみる価値ありです。