AWS Backup for Amazon S3を使えば自動バックアップと任意のタイミングまで復元ができる!

2022.10.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンサルティング部のデリバリーチームに異動した丸屋 正志(Maruya Masashi)です。

こちらのブログでは、誰が見ても操作ができるように画像を多用して記述しております。

1. 困っていた内容

Q, 利用者の誤操作により S3 バケット自体が消えてしまいました、バケットとオブジェクトの復元方法を教えて下さい。

A, 残念ながら別途バックアップなどを取られていない場合は、S3 バケットやオブジェクトの復元は不可能です。
ただし、今後このような問題が発生しても被害を最小限にして復元することは可能です。


そう、AWS Backup for Amazon S3 を使えばね!
なんと 2022/02/22 に GA された機能を使えば、任意の地点まで復元することができます。


2. やってみた

基本的には、下記内容に沿って設定いただくとで、S3を自動バックアップと特定のタイミングでリストアが可能になります。
一部項目については、利用環境の状況に合わせて設定していくことをオススメします。
(例えば、保持期間やバックアップ取得頻度などは、コスト大臣と相談する必要があります。)

2.1. バックアップ対象のS3バケット側の前提条件として

  • バックアップ/リストア対象の S3 バケットでバージョニングが有効になっていること
  • リストア対象先のバケットで ACL が有効になっていること

2.2. AWS Backup側の前提条件として

  • 設定のリソースタイプ『S3 - 新規』が『✓有効』になっていることを確認
    • 『無効』の場合は、【リソースを設定】から有効に変更

2.3. バックアッププランの作成方法

左ペインから【バックアッププラン】【バックアップ計画を作成する】をクリックします。

起動オプション

下記項目を選択後に、画面下辺にある【プランを作成】をクリックします。

  • 『バックアッププランのオプション』:【新しいプランを立てる】
  • 『バックアッププラン名』: [任意の名前] (例 : S3-Backup-Plan)

バックアップルールの設定

  • 『バックアップルール名』: [任意の名前] (例 : S3-Scheduled-Backup)
  • 『バックアップボールト』:【任意のバックアップボールトを選択】
  • 『バックアップ頻度』:【任意の頻度を選択】(例 : 毎日 など)
  • 『バックアップウィンドウ』:【バックアップウィンドウのデフォルトを使用 - おすすめ】(デフォルト)
  • 『保持期間』:【任意の保持期間を選択】(例 : 日数→1日 など)

全般

  • 『Resources割り当て名』: [任意の名前を入力] (例 : S3-Resources)

リソースの選択

下記項目を選択後に、画面下辺にある【リソースの選択】をクリックします。

1, リソース選択の定義 にて

  • 【特定のリソースタイプを含める】を選択

2, 特定のリソースタイプを選択 にて

  • 『リソースタイプを選択』:【S3】を選択

  • 『バケット名』:【バックアップ対象にしたいバケット名を選択】

2.4. 完成形

下記画面のようにバックアッププランが作成されていれば完了です。

2.5. バックアップを取得している際の画面

左ペインから【ジョブ】を選択しバックアップジョブを確認をすることが出来ます。

2.6. 復元する方法

(※ ここでは、同じバケットを使うため該当バケットを完全に削除しております。)
左ペインから【保護されたリソース】→リソース ID【S3バケット名】をクリックします。

【復旧ポイント】→【復元】をクリックします。

設定

下記項目を選択後に、画面下辺にある【バックアップを復元】をクリックします。
※ 【バックアップを復元】を押した時点でバケットが無い場合は再作成されて、オブジェクトは復元されます。

  • 『リストアタイプ』:【バケット全体を復元する】
  • 『復元先』:【ソースバケットに復元する】
    • もし、ソースバケットを第三者に利用されている場合は、【新しいバケットを作成する】を選択してください。
  • 『オブジェクト暗号化の復元』:【元の暗号化キーを使用(デフォルト)】

4. バックアップ取得時間は?

確認のために、ここでは事前にS3バケットには複数のオブジェクトを配置しています。

今回は、42分ほどバックアップ取得完了まで時間が掛かりましたが、以前に試した例では16分や30分という早い時もあれば、遅い時もある感じでした。
そのため、深夜などのサービスに対してのアクセス数が少ない時間帯に、バックアップ頻度を選択しても良いかなと思います。


5. リストア(復元)時間は?

確認のために、ここでは事前にS3バケットとオブジェクトを完全に削除しています。

今回は、8分ほどでリストアが出来ましたが過去のリストア検証では、16分や20分という早い時もあれば、遅い時もある感じでした。


6. 最後に

今回は、利用者が誤操作でS3バケットとオブジェクトを完全に削除したという事例でしたが、例えば悪意をもった方がS3バケットを完全に削除することもあります。

S3に限らず、どのサービスでも万が一の為にバックアップは取ったほうが良いと思います。

ただ、むやみに保持期間1年とかではなく、取得頻度やライフサイクルそしてコスト(予算)などと相談したうえで値を決めていきましょう。