はじめに
EFSでバックアップしたファイルを復元する方法についてまとめました。
前提条件
- EFS作成済み
- EFSにマウント設定したEC2作成済み
作成方法はこちらの記事を参考に
流れ
- バックアップ設定
- EFSを復元
- 注意点:復元にかかる時間
- 注意点:増分バックアップ
- 復元履歴確認
バックアップ設定
EFSは、自動バックアップを有効化にすると、自動でバックアップされます。

バックアップの設定は、AWS BackupのバックアッププランからEFSを選択し、バックアップルールをクリックすると確認できます。


実際にバックアップされたリソースは、バックアップボールトから確認できます。

バックアップボールトとは「バックアップを整理するためのコンテナ」であると説明されています。EC2 のバックアップである AMI 、RDS のバックアップであるスナップショットなどをまとめて管理するための器のようなイメージを持つとよいでしょう。
バックアップボールドについての詳細はこちら↓
EFSを復元
バックアップボールトから復元したいリソースを選択し、復元をクリックしましょう

設定
下記の画像のように設定しました。
特に説明する箇所はありませんが、項目レベルの復元というのは、例えば、
EC2の/mnt/efsディレクトリにマウントされていて、復元したいファイルパスが /mnt/efs/file1 である場合は、「/file1」と入力します
バックアップを復元をクリックすると、以下のエラーになります。
アクセスが拒否されました
このアクションを実行するには権限が不十分です。必要な権限についてはアカウント管理者に相談してください。
原因は、EFSバックアップボールトのアクセスポリシー内のDeny backup:StartRestoreJobがあるためです。
復元が拒否されていますね。
AWS Backupのコンソールからバックアップボールトをクリックし、EFSバックアップボールトをクリックすると、アクセスポリシーがあります。
backup:StartRestoreJobの箇所を削除しましょう。
削除前

削除後
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"backup:DeleteBackupVault",
"backup:DeleteBackupVaultAccessPolicy",
"backup:DeleteRecoveryPoint",
"backup:StartCopyJob",
"backup:UpdateRecoveryPointLifecycle"
],
"Resource": "*"
}
]
}
再度、バックアップを復元をクリックすると、復元が実行されました。

新しくEFSが作成され、aws-backup-restore_というディレクトリ内に、ファイルやディレクトリが復元されているかと思います。
また、aws-backup-lost+foundディレクトリが存在しています。
適切なディレクトリに復元できないデータフラグメントは、aws-backup-lost+found ディレクトリに配置されます。
バックアップの実行中にファイルシステムに変更が加えられると、フラグメントがこのディレクトリに移動される場合があります。
注意点:復元にかかる時間
ジョブを復元のステータスが完了しても数GBがある場合、数時間かかることがあります。復元が完了したことは、アナウンスされませんので注意してください!
また、完全な復元を選択した場合、EFSが作成されていると思いますが、同様に復元が完了していません。
EFSのファイルシステム一覧を確認すると、合計サイズが数KBしかありませんので、数時間待ちましょう。
ちなみに、2021年11月の時点では、2GBのEFSを復元するのに1時間かかりました。
注意点:増分バックアップ
AWS Backup は EFS ファイルシステムの増分バックアップを実行します。
最初のバックアップ時には、ファイルシステム全体のコピーが作成されます。
そのファイルシステムのその後のバックアップでは、変更、追加、削除されたファイルとディレクトリのみがコピーされます。
そのため、バックアップボールトの復旧ポイントの詳細のバイト数が少なく感じるかもしれませんが、復元時は、もっとバイト数が大きくなると思って間違いありません。
復元履歴確認
AWS Backupのジョブのジョブ履歴から復元履歴が確認できます。

参考

