目次
はじめに
こんにちは、omkです。
今回はAWS BackupでS3バケットをバックアップし、リストアする際の動作を検証したので備忘として残しておきます。
調べてみた
バックアップに必要な対応
AWS Backupでバックアップを行うには以下の対応が必要です。
- AWS Backup設定でS3のバックアップを有効化
- バックアップ・リストアできるBackup用IAMロールの作成(権限割り当て)
- バックアップ対象バケットでのバージョニング・ACLの有効化
- バックアッププラン・ボールトの作成・リソースの割り当て
定期バックアップ(オンデマンドバックアップ)と継続的バックアップの違い
基本的に取得されるバックアップの内容には変わりありませんでした。
継続的バックアップを有効にしておくと1秒単位で特定時点のオブジェクトをリストアすることが出来ます。
保持期間は1~35日以内に設定可能です。
定期バックアップ・オンデマンドバックアップはそれぞれの復旧ポイントのバックアップを取得した瞬間のオブジェクトをリストアでき、ずっと保存しておくことも可能です。
参考
https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/s3-backups.html
同じバケットにリストアする場合の動作
AWS Backupのリストアはオブジェクト単位での復元です。
よってリストアを行った際にバケット内が完全にバックアップ取得時点とまったく同じ状態に戻るわけではありません。スナップショットのようなものではなく、「バックアップで取得されたオブジェクトがバケット内に再作成される」というようなイメージの方がつきやすいと思います。
いくつかの条件でリストアがどのように行われるか検証しました。
バックアップ後にオブジェクトを削除
バックアップ取得後に削除されたオブジェクトはリストアで復元することが可能です。特定のバージョンに戻るのではなく、新規で新しいバージョンとして復元されます。
オブジェクトそのものをバックアップしているようで、過去のバージョンや削除マーカーを削除した影も形もない状態でも正常に復元出来ます。
バックアップ後にオブジェクトを変更
取得後に変更されたオブジェクト(バージョン)はリストア後も変更の内容が維持されます(バージョンIDで見ているんですかね……?)。
バックアップ後に新規オブジェクトを作成
バックアップ取得時点でバケットに存在しなかったオブジェクトはリストア後もバケットに存在します。また、当然バックアップに含まれないので復元の対象にはなりません。
異なるバケットにリストアする場合の動作
次に別のバケットにリストアする場合です。
こちらも同じくオブジェクト単位での復元です。バックアップ取得時に元のバケットに存在したオブジェクトが復元されます。
既存の異なるバケットにリストアする際には対象バケットにおいてもバージョニング・ACLを有効化しておく必要があります。
復元画面で新規でバケットを作成していた場合はこれらは自動で有効になった状態でバケットが作成されます。
おわりに
ざっくり気になったことを調べてまとめてみました。
S3はオブジェクトストレージなのでブロックストレージであるEBSとは性質が違うみたいですね。
パスベースでリストアできたりもするので便利に使っていきたいですね。
以上、最後までお付き合いありがとうございました。
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!