はじめに

みなさんはAWS Backupの結果通知をしていますでしょうか?
AWS CLIによって設定を行う必要があり少し面倒であったり、要件的にバックアップはあってもその異常処理まで触れられてなくて通知を行っていないケースもあるかと思います。

AWS BackupのSLAは99.9%であり、AWS は商業的に合理的な努力を払うように取り組んでいます。
SLAが高くても運用管理を行う観点から、行われたジョブについて失敗した場合にそれを気づける仕組みは必ず必要だと考えます。
特に2世代管理としているバックアップ計画とかだと、1回失敗しただけでもかなりの危機感を感じられます。

ですのでビジネス(コスト)優先でない限りはできるだけ通知を設定することをおすすめさせていただきます。
この機会に通知設定がないものについて一度見直されてはいかがでしょうか。

失敗した AWS Backup ジョブの通知を受け取る方法

具体的な方法については以下のAWSが公開しているドキュメントを用いてご紹介をさせていただきます。
出典:失敗した AWS Backup ジョブの通知を受け取る

通知方法

通知を受け取るには、次の 2 つの方法があります。
本記事ではSNS通知を利用した手順を記載します。

  • Amazon CloudWatch アラームなどのサービスを利用する方法
  • Amazon SNSサービスを利用する方法

手順

今回は既にAWS Backupを利用しているけど通知設定のみを追加で行うケースを想定します。

  1. AWS Backup 通知の送信先となる SNS トピックを作成します。
  2. SNS トピックに通知を送信するようにバックアップボールトを設定します。
  3. 失敗したバックアップジョブの通知をフィルタリングする SNS サブスクリプションを作成します。
  4. 通知の E メールをモニタリングします。

詳細設定

1. AWS Backup 通知の送信先となる SNS トピックを作成します。

Amazon SNS コンソールより任意の名前で新たなトピックを作成します。
タイプはスタンダートで構いません。

アクセスポリシーを編集し以下のアクセス権限をポリシーに追加します。

{
      "Sid": "My-statement-id",
      "Effect": "Allow",
      "Principal": {
        "Service": "backup.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:<AWSアカウントID>:<トピック名>"
}

2. SNS トピックに通知を送信するようにバックアップボールトを設定します。

AWS コマンドラインインターフェイス (AWS CLI) にて設定を行います。
2024/01現在AWSマネジメントコンソール上からの設定は行えません。
以下のコマンドを実行します。

–endpoint-url: バックアップボールトがある AWS リージョンのエンドポイント
–backup-vault-name: バックアップボールトの名前
–sns-topic-arn: 作成した SNS トピックの ARN
–backup-vault-events: ジョブの完了

aws backup put-backup-vault-notifications --endpoint-url https://backup.ap-northeast-1.amazonaws.com --backup-vault-name <バックアップボールト名> --sns-topic-arn arn:aws:sns:ap-northeast-1:<AWSアカウントID>:<トピック名> --backup-vault-events BACKUP_JOB_COMPLETED

以下のコマンドで設定結果が確認できます。

aws backup get-backup-vault-notifications --backup-vault-name <バックアップボールト名>

結果が以下のようになれば正常です。

{
    "BackupVaultName": "examplevault",
    "BackupVaultArn": "arn:aws:backup:ap-northeast-1:<AWSアカウントID>:<バックアップボールト名>",
    "SNSTopicArn": "arn:aws:sns:ap-northeast-1:<AWSアカウントID>:<トピック名>",
    "BackupVaultEvents": [
        "BACKUP_JOB_COMPLETED"
    ]
}

3. 失敗したバックアップジョブの通知をフィルタリングする SNS サブスクリプションを作成します。

Amazon SNS コンソールより1で作成したトピックを選択し、サブスクリプションフィルターポリシーを編集します。
ここで何も設定をしなければ成功/失敗に関わらずジョブが実行されるたびに通知を行います。
本記事では失敗時のみに通知を行うサブスクリプションフィルターポリシーを追加します。

{
  "State": [
    {
      "anything-but": "COMPLETED"
    }
  ]
}

4. 通知の E メールをモニタリングします。

オンデマンドバックアップを実行し直ぐに停止を行うことで失敗時の通知をテストすることができます。

まとめ

いかがでしたでしょうか。
少し手間ではあるものの複雑な設定ではないと考えています。
この機会に通知設定がないものについて一度見直されてはいかがでしょうか。