AWS Backupを使い始める前に覚えておきたいこと

## AWS Backup is 何
AWS上のバックアップを一元的に管理できるAWS Backupが利用可能になりました。

**AWS Backup – Automate and Centrally Manage Your Backups**
https://aws.amazon.com/jp/blogs/aws/aws-backup-automate-and-centrally-manage-your-backups/

~~※以降は2019/1/17 時点の情報です。~~
2019/6/27 に東京リージョンで利用可能になったため情報を更新しました
2020/1/14 時点の情報に更新しました
2020/6/11 Aurora に対応したため追記しました

## バックアップ取得可能なリソース
2020/11/11時点

* EFSファイルシステム
* DynamoDBテーブル
* EC2インスタンス(EBS-backedのみ)
* EBSボリューム
* RDSデータベース
* Auroraクラスター
* Storage Gatewayのボリューム
* FSx

## 料金
AWS Backupは追加利用金無しで利用可能。
各サービスで取得されるバックアップデータには通常どおり料金が発生する。

## 既存のバックアップ機能との違い
AWS Backupは、AWSサービスの既存のバックアップ機能を使用して、その集中管理機能を提供する。
そのため、EBSボリュームの場合であれば、Data Lifecycle Managerや 
EC2 APIによるスナップショット取得は引き続き利用可能。
ただしAWS Backupで取得されたスナップショットをEBSコンソールから削除するようなことはできない。
EFS/Storage Gatewayに関してはバックアップ機能がAWS Backupに統合されている。

## 用語
### Backup Plan
各リソースをいつ、どのようにバックアップするのかを定義する。
1つ以上のBackup Rule と バックアップ対象の紐づけ(Resource assignments)が必要。
Backup Planを削除するには紐づくResource assignmentsを全て削除する必要がある。

### Backup Rule
バックアップスケジュールと使用するBackup vaultを定義する。
スケジュールは後述するBackup Windowとライフサイクル(保存期間)を指定する必要がある。

### Backup Window
指定した時間内でバックアップ処理が起動する。
デフォルトのウインドウではUTCの午前5時からの8時間に設定されているため、
Backup Ruleの中で個別に定義した方が良い。
ウィンドウ幅は最低1時間となっている。

JSTでAM5-6時にバックアップ処理を起動したい場合は以下のような設定となる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/9e6ebd0f-5804-6e79-74b4-646fdc4822e6.png)

### Transition to cold storage
AWS Backupと統合されているサービスの場合、Glacierベースの低コストステージへの移行と
リストアがサポートされている。
現状対応しているリソースは **EFSファイルシステムのみ**であることに注意。
Backup RuleでTransition to cold storageを設定しても、対応リソース以外は無視される。
またコールドステージへの移行後、最低90日間は保存する必要がある。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/6774c3b6-25dc-11a5-935e-7a3e3bf82993.png)

### Backup Vault
各バックアップをグループとして整理するための論理的なコンテナ。
バックアップを保護するためのKMSキーを指定することができる。
ここで指定するKMSキーは現状、**EFSファイルシステムのバックアップでのみ使用される。**

その他のリソースは元となるボリュームやデータベースの暗号化に使用されたキーがそのまま使用される。
更にもともと暗号化していないリソースはバックアップも暗号化されない。詳細は以下を参照。

**Encryption for Backups in AWS**
https://docs.aws.amazon.com/aws-backup/latest/devguide/encryption.html

またValutに対しリソースベースのアクセスポリシーを定義することができる。
例えば以下のようなポリシーでVaultの削除を防ぐことが可能。

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "backup:DeleteRecoveryPoint",
            "Resource": "arn:aws:backup:us-east-1:<your account ID>:backup-vault:<backup vault name>"
        }
    ]
}
```

Vaultを削除する場合は格納されているバックアップリソースを事前に全て削除する必要がある。
DefaultのVaultは削除できない。

### On-Demand Backup
バックアップはスケジュール実行だけでなく、オンデマンドでも取得可能。
Backup windowで Create backup nowを選択すれば即時取得可能。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/f14204d6-fd15-042a-1639-3aa32243e4f7.png)

### Resource assignments
対象のリソースをTagまたはリソースIDベースで指定する。
バックアップ時に使用するIAMロールも指定可能。

### Recovery Points
取得されVaultに格納された個々のバックアップのことをRecovery Pointsと呼んでいる。
各バックアップのライフサイクルは取得後にも編集可能だったりする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/536f895b-da4c-2f81-e5cf-9e9faebf4306.png)

### restore parameters(Resource Types)
例えばEBSスナップショットの場合、
EBSに復元するかStorage Gatewayボリュームで復元できるかを選択できる。
パラメータが選択可能かどうかは対象のリソースによって異なる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/125105/58a5f296-424d-52de-5db9-8a13dcd9dcd6.png)

## Cross-Region Backup
Backup Rule内でCross-Region Backupを定義できる。
Copy to region(s)optional でリージョンを追加すると、
選択した送信先リージョンにもバックアップのコピーが自動で作成される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/29a66ade-a7c2-1619-1799-f398600928e8.png)

もしくはBackup Vault内のRecovery Pointsを選択し、コピーを行うと
オンデマンドバックアップを含む取得済みのバックアップリソースを
異なるリージョンにコピーすることも可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/445edcfe-ab09-7e4e-f371-0ed5b0535af6.png)

2020年1月時点でクロスリージョンバックアップに対応しているのは以下のリソースで
香港リージョンとバーレーンリージョンを除くAWS Backup対応済みリージョンにコピー可能。

* EFSファイルシステム
* EBSボリューム
* RDSデータベース
* Storage Gatewayのボリューム

## 参考
**AWS Backup Documentation**
https://docs.aws.amazon.com/aws-backup/index.htm
**AWS Backup FAQs**
https://aws.amazon.com/jp/backup/faqs/