1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSのバックアップサービスと言えば、これ!!!AWS Backupについて~AWS100本ノック~30/100

Posted at

はじめに

前回の記事では、DRに紹介しました。
今回はDRアプローチの1つバックアップ&リストアを行う際に有効なAWS Backupについて紹介します。

最初にざっくりの全体像です!!
image.png

AWS Backupとは?

AWSサービス全体のデータのバックアップ取得から復旧プロセスまで一元的に管理・自動化をすることが出来るサービスです

AWS Backupを利用することで以下のようなメリットがあります。

  • AWSとアプリケーションリソースデータ保護を簡素化
  • DRと事業継続の基盤を構築
  • ランサムウェアやアカウント侵害から保護およびリカバリ
  • データ保護コンプライアンスを管理

image.png

(おさらい)バックアップ&リストアとは

データの損失や破損を軽減するアプローチです。
データをDR先にレプリケートすることでリージョンの災害を軽減したり、単一のアベイラビリティーゾーンにデプロイされたワークロードの冗長性の欠如を軽減したりするために使用できます

image.png

具体的にバックアップ&リストアを行うためには、どんなプロセスがあるかというと以下の4つになります。

  • バックアップの設計
  • バックアップの保護
  • バックアップの自動化
  • バックアップの復旧

image.png

では、AWS Backupの各機能がこれらの4つのプロセスにどう関係していくか説明していきます。

AWS Backupの全体

まず、AWS Backupの全体としては以下のようになります。
ざっくり言うと、

  • バックアップしたいAWSサービスを決めて
  • どのくらいの頻度でバックアップするか決めて
  • どのくらいバックアップを保存するか決める
    という感じです。

image.png

図に出てくる各用語については、以下のようになります。
※詳細はこの後説明します
image.png

AWS Backupの各機能とプロセスの関係

AWS Backupの各機能がどのプロセスに対応しているかですが、以下のようになります。
image.png

各機能の説明

では、各機能について実際に触りながら説明していきます。
今回は、同一アカウントに作成した東京リージョンのS3バケットから大阪リージョンのS3バケットに、バックアップを行って、大阪リージョンで復元するところまで試してみます。

0. S3バケットの作成

まず、東京リージョンと大阪リージョンにバケットを作ります。

  • 東京リージョンにaws-backup-source
  • 大阪リージョンにaws-backup-target

というバケットを作って、東京リージョンのバケットに適当なファイルをアップロードしておきます。
注意点として、AWS BackupでS3のバックアップを作成する際は、バージョニングを有効にする必要があります。

また、ライフサイクルで有効期限を設定して不要なオブジェクトの削除を行わないと、過去バージョンのオブジェクトのバックアップもしてしまうので、コストがかさんでしまいます。

S3のバージョニングとライフサイクルって何だろう?って思った方は、以前書いたこちらの記事を見てください:smile:

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

ここからAWS Backupの設定をしていきます。
バックアップボールトのボールト(Vault)は日本語だと保管庫を表し、AWSの定義としては復旧ポイント(バックアップ)を保存・整理するコンテナになります。
お金を保護する金庫みたいな感じですかね? :thinking:

プロセスとしてはバックアップの保護にあたります。

image.png

バックアップボールトで、特定の復旧ポイントを選択して復元操作を行うことで、任意の状態にデータを復元することが出来ます。
image.png

次に、バックアップボールドに付随する機能について説明します。

ボールトロック

その名の通り、指定したバックアップボールトを指定した期間ロック(変更/削除出来ないようにする)機能です。
ボールトロックにはガバナンスモードコンプライアンスモードの2つがあり、コンプライアンスモードでロックしたバックアップボールトは、rootユーザであろうと指定した期間は削除できなくなるので、注意が必要です。

3-1.png

3-2.png

リーガルホールド

次にリーガルホールです。日本語だと法律上の保持ですかね? :thinking:
これはボールトロックと似ているのですが、AWS Backupで取得したバックアップの保持期間を延長する機能です。

例えば、バックアップの保持期間が30日に設定されてバックアップされているとします。
しかし、監査や不具合調査の難航など、何かしらの理由で延長したいとなった場合に、後述のバックアッププランでの保持期間延長だと既存のバックアップに対しては適用されません。

そういったケースの場合に、リーガルホールドを適用することで、その間は保持期間のカウントを停止することが出来ます。

4.png

ボールトロックとリーガルホールドの違いは以下になります。

1.ボールトロックの適用範囲はバックアップボールトだけだが、リーガルホールドはリソースタイプとバックアップの作成日の範囲選択(過去日のみ)が可能
2.ボールトロックのコンプライアンスモードはrootユーザーであっても解除できないが、リーガルホールドはIAMで権限があれば解除できる
3.ボールトロックしていてもバックアップの保持期間が経過したものは削除される

なので、使い分けけとしては

  • バックアップの手動削除を防ぎたい👉ボールトロック
  • バックアップの自動削除を防ぎたい👉リーガルホールド

かなと思います。

アクセスポリシー

最後にアクセスポリシーです、
これは他のAWSサービスと同様、リソースへのアクセスを制限するポリシーです。

プロセスとしてはバックアップの保護にあたります。

image.png

大阪リージョンにもバックアップボールトを作成

クロスリージョンでS3のバックアップを取る場合は、コピー先の大阪リージョンにもバックアップボールトを作る必要があるため、先ほどと同様に作っておきましょう:smile:

2. バックアッププラン

バックアップボールドを作ったので、そこに割り当てるバックアッププランを作成していきます。

プロセスとしてはバックアップの設計、バックアップの自動化にあたります。

以下の項目を入力していき、バックアッププランを作成し、プランに対してバックアップルールの作成と、リソースの割り当てを行います。
バックアッププランはただの箱みたいなものなので、特に設定値はありません。

また、バックアップルールは複数作成でき、リソースの割り当ても複数行えます。

バックアップルールとして、以下を入力します。

  • バックアップボールトに、先ほど作成したボールトを選択
  • バックアップ頻度を毎時、12時間毎、毎日、毎週、毎月、カスタムcron式から選択
  • バックアップの開始時間を選択
  • 保持期間を1日~永続から選択
    • 1秒単位で復元したい場合は、PITR(ポイントインタイムリカバリ)を設定 ※最大35日前まで
  • (S3とEBSの場合)バックアップインデックスを必要に応じて指定
    • バックアップからファイルパスやファイルサイズなどで検索できる機能(有料)
  • コピー先の大阪リージョンを指定し、先ほど作成した大阪リージョンのバックアップボールトを選択
    • プロセスとしてはバックアップの保護、バックアップの自動化にあたります

image.png
image.png

バックアップルールを作成したら、バックアップを行うリソースの割り当てを行います。

  • 全てのAWSサービスまたは特定のAWSサービスを選択
  • 特定のAWSサービスを選択したら、全てのリソース or 対象のリソース(S3ならリソース=バケット)を選択
    • 全てのリソースを選択し、一部のバケットだけ除外なども出来ます
      image.png

3. バックアップが出来ていることの確認

では、ここでバックアップが東京リージョンと大阪リージョンで出来ているか確認してみます!
実行されたバックアップはジョブとして実行されるのですが、全てのジョブは一覧で確認することが出来ます。

6.png

リソースの割り当てで、デフォルトロールを利用するとバックアップの権限が不足している可能性が高いです。
失敗になっているのはそれが原因でした...:cry:
どのリソースをバックアップするかによって、付与すべきポリシーは変わるので適切なポリシーをアタッチするようにしましょう。
※S3ならAWSBackupServiceRolePolicyForS3Backupというマネージドポリシーが用意されています

復旧ポイント(バックアップ)は、保護されたリソースから確認できます。
問題なく、東京リージョンと大阪リージョンでバックアップ出来ていますね:smile:

7-2.png

7-1.png

4. モニタリング

ジョブ一覧でバックアップの結果を確認することは出来ますが、毎回結果を人が見るのは運用効率的によくないので、自動化をしたいと思うかもれません。

その場合はモニタリングを行い、バックアップの結果をメールやSlackなどに通知したり、失敗した場合に再度実行させたい場合など行う必要があります。
モニタリングに適した以下の4サービスと、LambdaやSNSなどを使って運用を自動化できます。

プロセスとしてはバックアップの自動化にあたります

image.png

image.png

5. 復元

バックアップを取得したので、実際に復元してみましょう。
プロセスとしてはバックアップの復旧にあたります

今回は大阪リージョンで試してみます。
保護されたリソースから任意の復旧ポイントを選択します

8-1.png
8-2.png
8-3.png

エラーになりました。どうやらバックアップ先のバケットで復元を行う場合は、ACLを有効にする必要があるようです。 参考
8-4.png

ACL無効化のバケットを作ってしまうと、マネジメントコンソールからは有効にすることが出来ないため、以下のCLIコマンドで有効化します。

aws s3api put-bucket-ownership-controls \
    --bucket aws-backup-target \
    --ownership-controls Rules=[{ObjectOwnership=ObjectWriter}]

再度、実行すると問題なく復元が完了し、対象のS3バケットにオブジェクトが保存されていました:smile:
8-5.png

8-6.png

ACLは無効化が推奨なので、復元する時だけ有効化して完了次第、無効に戻すのが良いかもしれません :thinking:

aws s3api put-bucket-ownership-controls \
    --bucket aws-backup-target \
    --ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]

6. 復元テスト

最後に復元テストです。
これは全てor特定のバックアップボールトの復元が行えるか定期的にテストをするための機能になります。
復旧にかかった時間の計測も行えるので、RTOを満たせるかどうかの確認も行え、DRの予行演習をサポートできます。

プロセスとしてはバックアップの自動化、バックアップの復旧にあたります

テスト言いつつ実際に復元をしますが、復元したデータはすぐに削除することも出来ますし、何かしらの検証プロセスが必要であれば一定時間保持することも出来ます。

image.png

試しに先ほど作成したS3のバックアップボールトのバケットに対して、毎日テストを実行するように設定してみます。
復旧ポイントは最新またはランダムを選択することが出来るので、過去分の復旧テストも簡単に行えます!

9-1.png

9-2.png

9-3.png

9-4.png

テストが問題なく実行できていることが確認出来ました!必要に応じてアプリケーションの復旧などを組み込んで、DRが正常に行えるか試すために使うといいかと思います。

10.png

各AWSサービスのバックアップ機能と何が違うのか?

一部のAWSサービスには、バックアップ機能が搭載されています。
S3であれば、バージョニング機能によって過去世代のオブジェクトは復元することが出来ますし、S3レプリケーション機能を使えば他のリージョンにバックアップを取ることも出来ます。

AWS Backupとバージョニングの違いとしては、

  • バケット自体を復元できるか
    • AWS Backupは復元できる
    • バージョニングは復元できない
  • 特定の地点にバケットを復元できるか
    • AWS Backupは特定の地点に復元できる
    • バージョニングは特定の地点に復元できない

AWS BackupとS3レプリケーションの違いとしては、以下があります(スカイアーチさんがまとめてくれたものです)
5.png

それぞれメリット/デメリットがありますので、用途に応じて使い分ける必要がありそうです。

料金

最後に料金ですが、AWS Backupは主に以下で課金されます。

image.png

おわりに

今回は、AWS Backupについて紹介しました。
バックアップ周りって勉強が後回しだったりするので、とてもいい勉強になりました:smile:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?