目次
はじめに
こんにちは、株式会社エーピーコミュニケーションズ クラウド事業部の松尾です。
本記事ではS3バケットをバックアップする場合に使う機能の比較をしてみます。具体的にはS3のバージョニングと、AWS Backup for S3の2つを実際にファイルバックアップと復旧まで操作しながら確認していきます。
ゴール
本記事でお伝えすることは次の内容です。
- S3のバージョニングの使い方
- AWS Backup for S3の使い方
- 2つのバックアップ機能の違い
検証プラン
日次でS3にバックアップされたファイルを、障害時に過去の任意の時点のファイルで復旧する、ことを想定します。
やってみる
1. S3バケット作成
以下は作成後の画面ですが、バージョニングを「有効」にしたS3バケットを作成します。これを有効にすることで同一のキーを持つ複数のファイルをバケット内で管理することが出来るようになります。
2. S3バケット設定変更
作成されたS3バケットに「ライフサイクル」を作成します。
今回は「非現行バージョンのファイルはアップロードから3日経過後に完全に削除」する設定としました。
これでS3バケットの準備が出来ました。
3. S3にファイルをアップロード
疑似バックアップデータとしてTXTファイルをアップロードしておきます。
「001.txt」というファイルをサイズを追記しながら7ファイル配置しました。ファイルサイズが新しいものほど大きくなっているのが分かります。(日次バックアップの趣旨に合わせるならここも日次で配置したかったのですが時間の関係で割愛です)
4. ライフサイクル動作の確認
ライフサイクル設定を「非現行バージョンのファイルはアップロードから3日経過後に完全に削除」としたので、以下のイメージになるはずです。
5/27 15:00頃のバケットは以下の状態でした。想定通り、「3日を超えた日数を迎えたタイミングで削除」されていることが分かります。
5/28 15:00頃のバケットも想定通りの状態となっていました。
5. S3バケットから任意のファイルを復旧
任意のファイル名を選択し、「ダウンロード」することで過去のファイルが手元にある状態にすることができます。
6. AWS Backup用のS3バケット準備
ここからはAWS BackupでのS3バックアップを実装していきます。まずはバージョニングを有効にしたS3バケットを作成。
10MBのファイルを5つアップロードしました。以下のようにバージョンは無い状態。
7. AWS Backupのサービスオプトイン設定
AWS BackupがAWSの各サービスで利用できるように有効化しておく必要があります。有効になっていない場合は有効にしておきます。
8. AWS Backupボールト作成
AWS Backupで取得したバックアップデータを配置するVaultを作成します。フォルダのようなイメージです。
9. AWS Backupバックアッププラン作成
バックアップを取得する設定を「バックアッププラン」として作成します。
名前の他は取得頻度を「毎時」、保持期間を「3日間」、バックアップボールトを先ほど作成したものを選択していきます。
続いてバックアップ対象を「リソース」として設定していきます。
今回作成したバケットのみを指定。
「リソースを割り当てる」で作成。
10. AWS Backupのバックアップ確認
AWS Backupが開始される時刻を待ちます。
エラーになっていました。。。悲しい
こちらにあるようにデフォルトのAWS BackupポリシーにはS3へのロールは含まれていないことが原因でした。必要なポリシーを追加したロールを改めて作成し、「リソースの割り当て」を差し替えます。
改めてAWS Backupの設定時刻を待つと、、
11. AWS Backupからのリストア
数時間経過するとバックアップが取得できていることが分かります。
適当な復旧ポイントを選んで、「復元」をクリック。
ロールだけAWS Backupで使用したものに変更して復元していきます。
復元中になりました。どのくらい時間がかかるでしょうか。
失敗しました。エラーメッセージの通りACLを修正します。
私は少し迷ったのですが、S3バケットのACL有効化は右上の「編集」ではなく、「バケット所有者の強制」リンクから有効化することができます。
ACLが有効になりました。
改めて復元操作を実行して完了しました!
リストア先バケットにファイルが復元されていることも確認しました。リストア先バケットは別のバケットにしておいた方が混乱しにくいので良いかと思います。
まとめ
今回はS3バージョニングとAWS Backup for S3を比較しました。高可用性を備えるS3のバージョニングだけでも必要十分なバックアップとして使えるように思います。AWS Backupはバックアップ用途のサービスだけあって、S3バージョニングだけでは出来ない柔軟なバックアップ設定の実装が可能でした。
また、本記事では触れていませんが、料金面ではS3バージョニングはデータ量×世代数にかかるのに対して、AWS Backupは初回のみフルバックアップ、2回目以降は増分バックアップとなります。これは、バックアップした世代数が多いほど、S3バージョニングでは料金が倍々で増えていくことを意味します。AWS Backup では前回のバックアップから増加したデータ量に対して課金される形のため、コストを抑えることができます。
特徴を簡単にまとめると以下となります。
おわりに
私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
また、一緒に働いていただける仲間も募集中です! ご興味持っていただけましたらぜひお声がけください。