この記事は
今年の1月にAWS Backupの機能がアップデートされ、AMIも自動で取得できるようになりました。
この記事ではタイトルにも記載されている通り、AWS Backupの設定およびBackupジョブ失敗時の通知設定方法を紹介します。
また、手順にも記載されておりますがBackupジョブの通知先としてSNSを設定する際、現状CLIを使った操作が必ず必要になるので注意してください。
①. Backupジョブ失敗時の通知先となるSNSトピックを作成
①-1. SNSトピックを作成
①-2. JSONエディタを編集
SNSのARN(2箇所あるので注意) と AWSアカウントIDの箇所は適宜置き換えること。
SNSのARNは arn:aws:sns:リージョン名:AWSアカウントID:SNSトピック名
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SNS:Publish", "SNS:RemovePermission", "SNS:SetTopicAttributes", "SNS:DeleteTopic", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:Receive", "SNS:AddPermission", "SNS:Subscribe" ], "Resource": "SNSのARN", "Condition": { "StringEquals": { "AWS:SourceOwner": "AWSアカウントID" } } }, { "Sid": "__console_pub_0", "Effect": "Allow", "Principal": { "Service": "backup.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "SNSのARN" } ] }
②. バックアップボールトの作成
②-1. AWS Backupのコンソールへ移動
②-2. バックアップボールトを作成
②-3. AWS CLI を使用して、-backup-vault-events を BACKUP_JOB_COMPLETED に設定して put-backup-vault-notifications コマンドを実行
現状、コンソール画面から設定する手段が無いため、CLIを使って操作する必要があります。
- endpoint-url: バックアップボールトがある AWS リージョンのエンドポイントを入力 ※東京リージョンなら
https://backup.ap-northeast-1.amazonaws.com
- backup-vault-name: バックアップボールトの名前を入力
- sns-topic-arn: 作成した SNS トピックの ARN を入力
aws backup put-backup-vault-notifications --endpoint-url https://backup.eu-west-1.amazonaws.com --backup-vault-name examplevault --sns-topic-arn arn:aws:sns:eu-west-1:111111111111:exampletopic --backup-vault-events BACKUP_JOB_COMPLETED
②-4. get-backup-vault-notifications コマンドを実行し、SNSの設定が反映されていることを確認
- backup-vault-name: バックアップボールトの名前を入力
aws backup get-backup-vault-notifications --backup-vault-name examplevault
以下のように出力されればOKです。
{ "BackupVaultName": "examplevault", "BackupVaultArn": "arn:aws:backup:eu-west-1:111111111111:backup-vault:examplevault", "SNSTopicArn": "arn:aws:sns:eu-west-1:111111111111:exampletopic", "BackupVaultEvents": [ "BACKUP_JOB_COMPLETED" ] }
③. サブスクリプションの作成
③-1. SNSのコンソールへ移動後、①で作成したSNSトピックをクリック
③-2. サブスクリプションの作成を押す
③-3. 詳細箇所を入力する
- トピック ARN:①で作成したSNSトピックを選択
プロトコル、エンドポイントは通知先に応じて適宜変更してください。
エンドポントにDatadogのWebhook URLを指定すると、Backupジョブの失敗通知をDatadogで受け取ることができます。
■参考記事:Datadog で AWS SNS を受け取る (RDS/ElastiCacheイベント)
今回はメールで失敗通知の受信を行います。
③-4. サブスクリプションフィルターポリシーに下記を貼り付ける
{ "State": [ { "anything-but": "COMPLETED" } ] }
④. AWS Backupの構築
④-1. AWS Backupのコンソールへ移動
④-2. 「バックアッププランを作成」を押す
④-3. 「新しいプランを立てる」を押し、バックアッププラン名を入力
④-4. スケジュールを設定
下記設定で毎日、06:00 AM 〜 07:00 AM (JST) の間にAMI取得が開始される。
④-5. ライフサイクル設定
以下の設定でBackup世帯数が2になる。バックアップボールトには②で作成したものを選択すること。
④-6. 「リソースを割り当てる」を押す
④-7. リソースを割り当てる
今回はタグで管理してます。インスタンスIDを直接指定することも可能です。
④-8.Backupを取得したい対象リソースに対してタグを付ける
これで設定は完了です。
⑤. Backupジョブ失敗の通知テスト
⑤-1. 保護されたリソースからオンデマンドバックアップの作成を押す
⑤-2. 設定を行いオンデマンドバックアップを作成を押す
ここの設定画面で大事な箇所は以下の2点
- 今すぐバックアップを作成
- バックアップボールトを②で作成したものにする
⑤-3. バックアップジョブが実行されるのを確認
⑤-4. もう一度オンデマンドバックアップを作成を押す(設定もさっきと同じでOK)
⑤-5. 今度はバックアップジョブ IDをクリック
⑤-6. 停止を押す
⑤-7. ステータスが「中止しました」になることを確認
⑤-8. 停止したジョブの方のみ通知がきていることを確認
ジョブを停止してから約8分後に通知が届きました。
おまけ
AWS Backupで作成したAMIを削除するには
バックアップボールトから②で作成したものを選択
作成したAMIを選択し削除を押す
実際にAMI Backupの取得に失敗した際に通知される内容
AMI Backupの取得が実際に失敗すると下記のように、 An AWS Backup job failed.
というメッセージが通知されるようです。
An AWS Backup job failed. Resource ARN : arn:aws:ec2:*****:*****:instance/*****. BackupJob ID : *****