AWS BackupでS3のバックアップを取る方法とそのメリット

2022.12.05

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

どうも、CX事業本部Delivery部の嶋村です。
こちらは、「Build a disaster recovery solution with AWS storage services」のセッションで紹介されていたAWS BackupでS3のバックアップを取る方法です。あと、そのメリットについて解説します。

S3のバージョニング機能があるのになぜ必要なのか?

S3のバックアップと聞いて、バージョニング機能と何が違うんだとなった人がいると思います。
AWS Backupを使う理由は、2つあります。

1. バケット自体を消してしまった時

AWS Backupを使うと、バケット自体を消してしまった時でも戻すことができます
この記事で実際にバケット自体を消して復元できるのかを検証しています。

2. ある地点に戻したい時

バージョニング機能はオブジェクトのバージョニングをしているので、オブジェクトのみをある地点に戻すことはできますが、バケット自体をある地点戻すことはできません。 AWS Backupを使えばある地点に戻すことができます!この場合についても実際に検証してみます!

前提条件

1. 今回用意したバケット

どのくらいの時間がかかるのかの検証をするため、1KBから1GBまでの7つの画像を用意し、アップロードしておきました。 バケット名は「aws-backup-ss-bucket」にしました。

2. AWS BackupでS3を有効化する

「AWS Backup」→「設定」→「サービスのオプトイン」の「S3 - 新規」が【有効】になっているか確かめてください。
【無効】になっている場合は「リソースを設定」から有効化してください。

やってみた

1. バックアップボールトの作成

バックアップボールとは、バックアップの保存と整理をするためのコンテナです
AWS Backupの「バックアップボールト」→「バックアップボールトを作成」から作成します。

バックアップボールト名を決め、(AWS KMS)暗号化キーを選択します。今回はデフォルトのものを使いました。この暗号化キーはバックアップの暗号化をするために使われます。

2. バックアッププランを作成する

AWS Backupの「バックアッププラン」→「バックアッププランを作成」から作成します。

まずは、起動オプションです。

今回はテンプレートを使わずに最初から設定してみます。バックアッププラン名は「AWSBackupSSPlan」にしました。

バックアップルール名は「AWSBackupSSRule」にしました。
バックアップボールとは先ほど作った「AWSBackupSSVault」を選択します。
バックアップ頻度は「毎時」を選択しました。(他の選択肢を下の方で解説)
保存期間は「1日」にしました。

上記の入力が完了したら、「プランの作成」で作成します。

リソースの割り当てを行います。「リソース割り当て名」は「AWSBackupSSResources」にしました。
IAMロールはデフォルトのロールを選択しました。

リソースの選択では、バックアップしたいリソースを選択します。
今回はS3の「aws-backup-ss-bucket」を指定しました。

入力が完了したら、「リソースを割り当てる」でプランの作成は完了です!

時間が経つと、作成したバックアップボールトにバックアップが作成されます。

一部を消して復元してみる

1GBの画像は削除、100MBの画像は完全に削除しました。

では、最新のバックアップから復元してみます。

バックアップボールから「AWSBackupSSVault」→「復旧ポイント」から戻したいポイントを選択します。

設定については全てデフォルトの状態で復元をしました。

結果

完全削除した100MBの画像は復活していました!

削除した方は、削除マーカーが消えるわけではなく復元されたバージョニングがされていました。

タイムは8分30秒でした。

バケット自体を消してから復元してみる

バケットを消してみました。さっきの方法で復元を開始してみます。

結果

結果、バケットが再度復元され中身も完全に復元されていました。

タイムは7分48秒でした。

バックアップ頻度の指定方法

バックアップ頻度は「毎時」「12時間ごと」「毎日」「毎週」「毎月」「カスタムcron式」があります。

【毎週】の場合は、何曜日にバックアップを取るのかを指定できます。

【毎月】の場合は何日もしくは、第○の何曜日かなどの指定が可能です。

【カスタムcron式】は解説するととても長くなるので、AWSの公式ドキュメントをご覧ください。 カスタムcron式を使うことでより細かな15分毎などのスケジュールを組むことができるようになります。

さいごに

バケットを消しても、オブジェクトを完全に削除しても復元できるので、常にオンにしておいた方がいいような機能だなと思いました。

最後までみていただきありがとうございました!