AWS Backup のジョブが失敗した場合にAmazon SNSでEメール通知を受け取る設定を実装してみる

AWS

2022.6.2

Topics

はじめに

こんにちは。クラウドリードチームのmrnkです。
今回は AWS Backup のジョブが失敗した場合に、E メールで通知を受け取る方法についてご紹介します。

AWS Backup のジョブが失敗した場合にE メールで通知を受け取る方法

AWSのドキュメントにも記載がある通り、今回は Amazon Simple Notification Service (Amazon SNS) を用いて、以下の手順で実装を行います。

設定手順

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

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

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

4.    通知の E メールをモニタリングします。
出典:失敗した AWS Backup ジョブの通知を受け取る

やってみた

まずは AWS Backup 通知の送信先となる、SNSトピックの作成を行います。

SNSトピックの作成とアクセスポリシーの追加

まずは、Amazon SNS のコンソール画面を開き、トピックを選択。トピックの作成を選択します。
トピック作成画面に移動しますので、タイプ名前表示名を入力します。

入力が完了したら、以降はデフォルトのままで、トピックの作成を選択し、トピックを作成します。

トピックの作成後、作成されたトピックのARNをメモしておき、編集アクセスポリシーの順に選択します。
アクセスポリシーのJSON エディタを使用し、AWS Backup から SNS を利用できる権限を追加します。

追加するJSONの内容は AWSの公式ドキュメントに記載のある通りです。
Resourceの内容は、先ほどメモをしたトピックのARNに置き換えてください。

{
      "Sid": "My-statement-id",
      "Effect": "Allow",
      "Principal": {
        "Service": "backup.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:aws-backup-test"
}

入力が完了したら、変更の保存を選択して内容を保存します。

AWS Backupバックアップボールトを設定する

SNSトピックに通知を送信するために、AWS Backupのバックアップボールトを設定します。
AWS CLIを使用し設定するため、AWS CLIが使用できる環境で実施してください。

CLIは aws backupput-backup-vault-notifications を使用します。

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

-backup-vault-eventsについて、今回はジョブが失敗した場合に通知を受け取りたいため
BACKUP_JOB_COMPLETEDを使用します。

aws backup put-backup-vault-notifications --endpoint-url https://backup.ap-northeast-1.amazonaws.com --backup-vault-name backup-vault-test --sns-topic-arn arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:aws-backup-test --backup-vault-events BACKUP_JOB_COMPLETED

正常にコマンドが実行された場合は、何も出力されません。

次は、バックアップボールトの設定が問題ないかを確認します。
get-backup-vault-notifications コマンドで、設定内容が確認できます。

aws backup get-backup-vault-notifications --backup-vault-name backup-vault-test

出力内容は以下の通りです。

{
    "BackupVaultName": "backup-vault-test",
    "BackupVaultArn": "arn:aws:backup:ap-northeast-1:xxxxxxxxxxxx:backup-vault:backup-vault-test",
    "SNSTopicArn": "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:aws-backup-test",
    "BackupVaultEvents": [
        "BACKUP_JOB_COMPLETED"
    ]
}

SNSサブスクリプションを作成

SNSのサブスクリプションを作成します。

Amazon SNS のコンソール画面を開き、サブスクリプションを選択。サブスクリプションの作成を選択します。
サブスクリプション作成の画面に移動しますので、トピック ARNで先ほど作成したトピックのARNを、
プロトコルEメールを選択し、エンドポイントに通知先のアドレスを入力します。

次に、サブスクリプションフィルターポリシーを展開し、JSON エディタで以下を入力します。

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

入力が完了したら、以降はデフォルトのままで、サブスクリプションの作成を選択し、サブスクリプションを作成します。

これで設定は完了です。

動作確認

実際に通知が来るか確認するため、オンデマンドバックアップを作成後、
ジョブ実行中に手動で停止してみます。

すると、「An AWS Backup job was stopped.」と記載されたメールが届きました。

まとめ

今回は AWS Backup のジョブが失敗した場合に、E メールで通知を受け取る方法についてご紹介しました。
バックアップが取得できていないと、有事の際の復旧が困難になるため、
ぜひ本機能を活用してみてください。

mrnk

サーバサイドエンジニア。IaCやCI/CDに対し日々奮闘中。健康のためにジムに通いたいと思い続け3年が経過しました。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら