[新機能] AWS BackupがEC2のバックアップに対応しました

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/65525f0f-9f31-a6a2-41b9-b5f7aa46daf2.jpeg" width=100%>
*AWS Backup* で *EC2* の *AMI* が対応されたと聞き、すぐに確認しました。
それまでは、Lambdaでバックアップを日次で取得していましたが、Lambdaの管理の煩わしさや、万が一バックアップが取れていなかった時の不安から解放されそうです。
では、確認していきましょう👀

# AWS Backup
>[AWS 公式 AWS Backup](https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/whatisbackup.html)

ざっくりいうと、AWS内の特定リソースのバックアップを、AWSマネージドで管理できるサービスですね。
基本的には、バックアッププランというものを作成して、ターゲットとなるリソースを指定することで、各サービスのバックアップが行える構成になっています。すぐにバックアップを行える`オンデマンドバックアップ`と`スケジューリングバックアップ`の2通りの取得方法があります。
また、取得したバックアップの保存期間も設定できるようになっています。

>- Backup Plan
    - Backup Rule（複数可）
        - schedule（日次、週次、月次など）
        - lifecycle（保持期間、１日保存など）
        - backup vault（論理コンテナ、KMSキー）
    - Resouce（複数可）
        - resource（下記に記載）
        - iam role（バックアップ/リストの権限）

#対象リソースは、こちら👇
- EBS
- RDS
- DynamoDB
- EFS
- Storage Gateway
- **EC2**　　←これを待ってました！！

これで現状のバックアップ用のLambdaの役割は、賄えてそうな感じ👍

# そういえば、AMIのバックアップはない？
それで今回、待ってましたの*EC2*のバックアップが追加されました！*EC2*？？ *AMI*ではないの？
>[AWSニュースブログ AWS Backup](https://aws.amazon.com/jp/blogs/aws/aws-backup-ec2-instances-efs-single-file-restore-and-cross-region-backup/)

読んでみると、EC2インスタンスそのものを丸ごとバックアップ／リストア機能らしい。
AMIだけでなく、設定されているマシンタイプ、VPC、IAMロールなどの属性、アタッチされているEBSボリュームもまとめてバックアップをしてくれるみたいです。リストア時は、しっかり復元してくれる。
AMI単位でのバックアップはないが、EC2丸ごとバックアップしてくれるなら、問題なさそう👍

# では、設定してみます
実際に、EC2のバックアップをスケジュールで取得するよう設定していきます。
今回は、スケジュールでのバックアップを想定しているので、「バックアッププランを管理」を選択します。
>対象インスタンス名：Wordpress

<img title='スクリーンショット 2020-01-16 14.39.23.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/99a09d77-8c87-68dd-d60e-1cddab917ec1.png' width="70%" data-meta='{"width":2872,"height":1572}'>

## バックアッププラン作成
バックアッププランの一覧画面に遷移します。そのあと、「バックアッププランを作成」を選択する。
<img width="70%" alt="39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/9a80f2e7-c6ef-199e-7768-1ba0a87fdc68.png">


バックアッププランの作成画面に遷移し、以下の様に３種類の作成方法を選ぶことができます。

- 既存のプランから開始
    - 定義済みのテンプレートから新しいプランを作成する方式です
- 新しいプランを立てる
    - プランの定義をいちから作成します
- JSONを使用してプランを定義
    - プランをJSONの定義から作成します

<img width="70%" alt="43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/70cc6219-2f11-7b5f-b422-953846bf6024.png">

今回は「新しいプランを立てる」を選び、1日1回のバックアップ、保持期限1日のプランを作成してみます。
バックアッププラン名は *wordpress-backup-plan* とします。
<img title='スクリーンショット 2020-01-16 14.51.59.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/b61bd27d-8e53-1991-35f5-f7e115c9394b.png' width="70%" data-meta='{"width":1532,"height":688}'>

## バックアップルールの作成
「バックアップルールの設定」欄で適切なルール名を記入します。
今回は「*daily-backup-rule*」としておきます。
スケジュールの「頻度」を「毎日」にすると1日1回のバックアップ、のいわゆる日次バックアップになります。「バックアップウィンドウ」はUTC時間で開始時間とウィンドウ時間を設定できます。
<img title='スクリーンショット 2020-01-16 14.54.23.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/fd5e4fec-e4f0-d0d6-917d-e64b6f8df5d9.png' width="70%" data-meta='{"width":1480,"height":1200}'>

今回は`PM 03:00(JSTだと00:00)`開始、`1時間のウィンドウ`としています。
ライフサイクルは「有効期限切れ」欄を`1日後`に設定します。
<img title='スクリーンショット 2020-01-16 14.55.54.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/debab4b4-b1d5-6602-a755-fa0efe4a4ffe.png' width="70%" data-meta='{"width":1144,"height":404}'>

##バックアップボールドの作成
バックアップボールトはデフォルトのものではなく新しく作成します。
「新しいバックアップボールトを作成」ボタンをクリックします。
<img title='スクリーンショット 2020-01-16 14.57.42.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/eb9641d6-a96c-17da-9e87-c1ad172382a1.png' width="70%" data-meta='{"width":1166,"height":324}'>

新しいバックアップボールトの作成画面がポップアップされますので必要事項を記入します。
今回は名前だけ設定しその他の項目はデフォルトのままとしました。
<img title='スクリーンショット 2020-01-16 14.59.03.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/e99cdea0-6d37-1663-4904-1ed70c8e60ab.png' width="70%" data-meta='{"width":1652,"height":1326}'>

新しく作成したバックアップボールトを選択します。
<img title='スクリーンショット 2020-01-16 14.59.48.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/4461128e-6afd-d2ca-afc6-d1e724cc0761.png' width="70%" data-meta='{"width":1152,"height":320}'>

画面でも案内されていますがバックアップ対象であるリソースの定義はこの後行いますので、「プランを作成」をクリックします。
<img title='スクリーンショット 2020-01-16 15.00.54.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/40f44523-ae49-e8c5-4bb2-5cdfb2fc9625.png' width="70%" data-meta='{"width":1554,"height":1410}'>

これでバックアッププランが作成されました。
<img width="70%" alt="51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/bd50afe5-3a86-0cdb-6632-9df02580f7b3.png">


## リソースの割り当て
バックアッププランの画面下部にある「リソースを割り当てる」ボタンをクリックします。
<img alt="52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/0ed0b27e-65d2-56c1-1cfc-2aea5969d9d8.png" width="70%" data-meta='{"width":2116,"height":520}'>

リソースの割り当て画面に遷移しますので、適切なリソース割り当て名を付けます。
今回はIAMロールはデフォルトのままとし、画面下部の「リソース割り当てる」欄にバックアップ対象のEC2のインスタンスIDを指定します。
<img title='53.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/75f6f4c5-194d-55d6-2b6b-e0401211db3a.png' width="70%" data-meta='{"width":2116,"height":520}'>

これでバックアップ対象の設定が完了し、すべての設定が完了となります。
<img title='54.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/c5ec480f-c7a9-c466-46ee-0b95c663c4da.png' width="70%" data-meta='{"width":2116,"height":520}'>

## バックアップの確認
バックアップの実行結果は「ジョブ」欄から確認することができます。
無事、JST 00:00に実行され、EC2のバックアップがされていることを確認できます。
<img title='image.png' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/fed2a5aa-12bf-4834-0329-a562c7005be9.png' width="100%" data-meta='{"width":2116,"height":520}'>

また、EC2のコンソール画面（AMI）でも作成されたリソースの確認が出来ます。
AMI名は、`AwsBackup_[インスタンスID（i-xxx~]_[バックアップジョブID]` で作成されます。

# 所感
Lambdaの管理がなくなるのはだいぶ助かりそう。
今回は、インスタンスIDでのリソースの割り当てをしたが、タグでの指定もできるので、タグでの制御も実装できそう⤴️
検証を進めていき、本運用に持っていきたいものです。