ちょっと話題の記事

AWS Backup によるバックアップ取得の全体像をやっぱり絵に描いて理解してみた

フタを開けてみるとそこまで複雑なものではありませんでした。レッツ バックアップ!

コンバンハ、千葉(幸)です。

AWS Backup はフルマネージドなバックアップサービスであり、対応する AWS サービスのバックアップを一元管理することができます。

EC2 の バックアップ取得を定期的に行いたいとなった場合、従来はスクリプトを組んだり Lambda を使用したりといった工夫が必要でしたが、 AWS Backup を使用すればそういった作り込みを行う必要がありません。

これは助かるといざ触ろうとしてみると、バックアップボールトバックアッププラン復旧ポイントなど見慣れぬ言葉が並んでいて尻込みしてしまいます。

仕方がないので絵(というか図)を描きながら理解を深めていったところ、以下が出来上がりました。

はい。

そうですね。

さっそく、そこまで広大でない AWS Backup の全体像を解き明かす旅に出かけましょう。

目次

クロスアカウント管理、サービスのオプトイン

いずれも、 AWS Backup のコンソールにおいて左ペイン [ 設定 ] で確認できる項目です。

クロスアカウント管理

AWS Organizations と連携し、アカウントを跨いだ管理を行うことができます。いずれも設定にはマスターアカウントの権限が必要なことに注意してください。

  • バックアップポリシー
    • Organizations のメンバーアカウントに対して横断して有効となるバックアッププランを設定することができます
  • クロスアカウントモニタリング
    • メンバーアカウントのバックアップジョブの実行状況を一元でモニタリングすることができます

複数の AWS アカウントにわたる AWS Backup リソースの管理 - AWS Backup

サービスのオプトイン

AWS Backup によりサポートされているサービスおよびリソースの一覧は以下の通りです。

サポートされているサービス サポートされているリソース
Amazon Elastic File System (Amazon EFS) Amazon EFS ファイルシステム
Amazon DynamoDB DynamoDB テーブル
Amazon Elastic Compute Cloud (Amazon EC2) Amazon EC2 インスタンス
Amazon Elastic Block Store (Amazon EBS) Amazon EBS ボリューム
Amazon Relational Database Service (Amazon RDS) Amazon RDS データベース
Amazon Aurora Aurora クラスター
AWS Storage Gateway (ボリュームゲートウェイ) AWS Storage Gateway ボリューム

各サービスを AWS Backup によるバックアップ対象とするかどうかを、オプトインの画面から選択することができます。 2020 年 5 月のアップデートにより有効になった機能です。

AWS Backup ではバックアップ対象のリソースをタグベースで指定することが基本となりますので、複数のサービスにまたがって同一のタグが付与されている場合には、このオプトインを活用して取得対象をコントロールすることが可能になります。

また、新規で AWS Backup の対象となったサービスについては、明示的に有効化しない限り無効のままとなっている可能性があります。ご注意ください。

バックアップボールト

バックアップボールトは「バックアップを整理するためのコンテナ」であると説明されています。EC2 のバックアップである AMI 、RDS のバックアップであるスナップショットなどをまとめて管理するための器のようなイメージを持つとよいでしょう。

バックアップボールトの操作 - AWS Backup

復旧ポイント

バックアップボールトにおいては、個々のバックアップは復旧ポイント(Recovery point)という単位で管理されます。復旧ポイントは、各サービスのバックアップと 1 対 1 で紐づきます。バックアップの実体を指し示すポイントとしてイメージすると分かりやすいかと思います。

例えば AWS Backup を利用して EC2 の AMI を取得すると、このようにバックアップボールト内の復旧ポイントとして確認できます。

これを EC2 コンソールの AMI から確認すると、復旧ポイントに対応した AMI が作成されていることが確認できます。

逆に、AWS Backup 以外の手段で取得したバックアップを、ボールト内の復旧ポイントで確認することもできます。これは以下のエントリを読むとイメージがつきやすいでしょう。RDS の標準機能で取得したスナップショットが復旧ポイントとして確認できていることが分かります。

また、復旧ポイントの詳細は以下のように確認できます。

リソースタイプやバックアップタイプ、有効期限などを確認できます。

各種バックアップはウォームストレージ層(S3)もしくはコールドストレージ層(Glacier)に格納されます。ライフサイクルの設定によってコールドストレージ層に移行させることが可能ですが、これに対応しているのは現時点で Amazon EFS のファイルシステムバックアップのみです。

現時点では、Amazon EFS ファイルシステムのバックアップのみをコールドストレージに移行できます。Amazon Elastic Block Store (Amazon EBS)、Amazon Relational Database Service (Amazon RDS)、Amazon Aurora、Amazon DynamoDB、および AWS Storage Gateway のバックアップでは、コールドストレージ式は無視されます。

バックアッププランの作成 - AWS Backup

復旧ポイントの画面からリソースを復元(リストア)することも可能です。復元の際には、リソースタイプに応じて復元パラメータを指定する必要があります。通常のスナップショット等のリストアとは指定できるパラメータが異なる場合がありますので、ご注意ください。

バックアップの復元 - AWS Backup

アクセスポリシー

バックアップボールトにはアクセスポリシーを設定することができ、復旧ポイントに対するアクセス制御を行うことができます。特定のリソースタイプのバックアップのみ参照を許可したり、特定のユーザーに対してのみリストアを許可するといったことが可能となります。

バックアップボールトと復旧ポイントに対するアクセスポリシーの設定 - AWS Backup

KMS 暗号化マスターキー

ボールトに紐づく形で KMS 暗号化キーを設定することができます。ただし、ここで設定したキーが使用されるのは現時点で Amazon EFS のファイルシステムのバックアップのみであることに注意してください。ここでも EFS だけが特殊ですね。

それ以外のバックアップ、例えば EBS のスナップショットは、取得元の EBS に設定されている暗号化キーによって暗号化が行われます。(元々暗号化がされていなければスナップショットも暗号化されない。)

AWS でのバックアップの暗号化 - AWS Backup

保護されたリソース

バックアップボールト内にバックアップが取得されている場合、そのバックアップの基となるリソースがコンソールから保護されたリソースとして確認できます。

ここからオンデマンドでバックアップを取得することもできます。

バックアッププラン

AWS Backup plan

バックアッププランはどのリソースをいつどのようにバックアップするかを定義するものです。 JSON でポリシーのように設定することもできますし、GUI で設定することもできます。

バックアッププランの作成 - AWS Backup

バックアッププランによりバックアップジョブが定義・実行され、バックアップボールト内に復旧ポイントが作成されていきます。

繰り返し実行しない場合は、オンデマンドバックアップとしてバックアップジョブを実行することもできます。一部設定値が省略されますが、プランでもオンデマンドでも基本的な考え方は同一です。

バックアップジョブの実行履歴はコンソールから確認することができます。

AWS_Backup job

バックアップルール

バックアッププランは、一つ以上のバックアップルールから構成されます。バックアップルールでは以下を指定することができます。

  • バックアップルール名
  • バックアップ頻度
    • 12時間、毎日、毎週(曜日指定)、毎月(特定の日付)
  • バックアップウインドウ
    • 開始時間、ウインドウの期間
  • ライフサイクル
    • バックアップの有効期限切れとする日数
    • コールドストレージへの移行の日数(EFSのみ)
  • バックアップボールト
    • バックアップの作成先のボールト
  • コピー先リージョン
    • 取得したバックアップをリージョン間コピーすることもできます
  • 復旧ポイントに追加するタグ
    • 作成した復旧ポイントに追加するタグ

バックアップを他のリージョンにコピーする機能は 2020 年 1 月に有効になりました。

リソースの割り当て

どのリソースに対してバックアップを実行するかは、リソースの割り当て(Resource assignment)によって定義します。一つのバックアッププラン内で複数のリソースの割り当てを設定できます。

リソースの割り当てにおいては以下を設定することができます。

  • 割り当て名
  • IAMロール
    • バックアップの取得や復元に使用されるのはこのロール
  • 割り当て
    • リソースID指定もしくはタグ指定
    • 複数組み合わせることも可能

マネジメントコンソールからリソースの割り当てを設定する場合、Backup 用のデフォルトロールを作成することができます。バックアッププランで行いたいアクションによっては、権限が不足しており、ポリシーを追加する必要がある場合がありますのでご注意ください。

バックアップ取得対象はリソースIDもしくはタグで指定することができますが、せっかく AWS Backup を活用するならタグベースで指定したいですね。

終わりに

これでひとまず、大まかに AWS Backup の全体像を確認することができたかと思います。

RDS などは標準で自動スナップショット取得の機能が用意されているので、正直あまりありがたみが理解できていないです。(クロスリージョンコピーが簡単にできるなどでしょうか。)一方で、 EC2 など標準のバックアップ機能が用意されていないものは、作り込み無しでバックアップ取得が実現できるのは嬉しいですね。

また、EFS のファイルシステムのバックアップ取得の手段としては AWS Backup がデファクトスタンダードと言えるかと思います。先日のアップデートで自動で設定してくれるようになりましたので、積極的に使っていきたいですね。

AWS Backup よく分からん……という方の理解の一助になれば幸いです。

以上、ボールトをずっとボールドだと勘違いしていた千葉(幸)がお送りしました。

参考