📑

S3 のバックアップとリストアについて

2024/05/20に公開

はじめに

あらためて S3 のバックアップとリストアについて調べる機会があったので、ざっくりだがこちらにまとめておく。

前提条件

各オブジェクトまたはバケット全体を復旧させたい。

方法

S3バージョニング

オブジェクトのすべてのバージョンを保存し、誤って削除または上書きされた場合でも以前のバージョンに戻すことができる。

クロスリージョンレプリケーション

データを別のリージョンに自動的にコピーし、地域的な問題や災害からデータを保護することができる。

S3ライフサイクルポリシー

オブジェクトのライフサイクルを管理し、古いバージョンのオブジェクトを自動的に削除またはアーカイブ(低コストのストレージクラスに移動)することができる。

AWS Backup

バケットごと削除してしまった場合でも、復旧することができる。

リストア

S3バージョニング + AWS Backup で試してみた。
ざっくりとしたリストアの流れは以下の通り。

一部のオブジェクト

  1. AWS マネージメントコンソールより対象のバケットを開く
  2. アクセス許可のタブを開き、オブジェクトの所有者の編集ボタンをクリックする
  3. AWS Backup からのリストアを可能にするため、一時的に「ACL 有効」に変更する
  4. AWS Backupのバックアップボールドから、復旧ポイントを選び復元する
  5. しばらくすると、削除したオブジェクトがリストアされる
  6. AWS マネージメントコンソールより対象のバケットを開き、削除したオブジェクトがリストアされていることを確認する
  7. アクセス許可のタブを開き、オブジェクトの所有者の編集ボタンをクリックする
  8. AWS Backup からのリストアを可能にするため、一時的変更した内容をもと (ACL 無効 (推奨)) に戻す

バケット自体

  1. 基本的なリストア手順は、一部のオブジェクトのリストアと同様に行う
  2. リストアしたバケットが CDK 管理されている場合は、追加で以下の手順が必要となる
    • サーバーアクセスのログ記録、Amazon EventBridge、バケットポリシー、ライフサイクルルールなどはリストアされないため、一時的に該当部分をコメントアウトするなどして一時的に反映する
    • 上記のコメントアウトを元に戻し再度反映する
    • AWS マネージメントコンソールより対象のバケットを開く
    • サーバーアクセスのログ記録、Amazon EventBridge、バケットポリシー、ライフサイクルルールなどが変更前の状態であるか確認する

気になった点

  • バケット自体のリストアの場合に、対象のバケットを CDK で管理している場合はやや特殊な操作を行わなければならない

結論

各オブジェクトまたはバケット全体を復旧させたかったため、
S3バージョニング + AWS Backup の方法を採用した。

バケット自体を削除してしまった場合のリストア時に、対象のバケットを再度 CDK 管理下に置くための操作がやや特殊だが、通常は削除保護が有効であるため発生することはほぼないと判断した。

Discussion