AWS Backupの結果をSNSで通知するように設定する

はじめに

AWS Backupを使用しており、その結果をAWS SNSで特定のメールアドレスに通知したいというシチュエーションがあったため、実践してみる。

準備

EC2のインスタンスの作成

※既にAWS Backupにてバックアップを行いたいEC2インスタンスがある場合は、この手順はスキップしてOKです。

  1. サービスより「EC2」を選択する。
  2. ナビゲーション ペインから「インスタンス」→「インスタンス」を選択する。
  3. 「インスタンスを起動」を選択する。
  4. 適当に設定する、今回は下記のように設定。
名前アーキテクチャインスタンスタイプストレージ
test64ビット(Arm)t4g.nano8GB

AWS Backupの設定

先ほど作成したインスタンス or 既に存在しているインスタンスに対してAWS Backupの設定を行う。

  1. サービスより「AWS Backup」を選択する。
  2. 「バックアッププランを作成」を選択する。
  3. 作成画面にて、下記のように設定した。
バックアッププランのオプションテンプレートバックアッププラン名
テンプレートで開始するDaily-Monthly-1yr-Retentiontest
  1. 「プランを作成」を選択する。

※この段階では、バックアッププランのみを作成しているので、このあとEC2をバックアップできるようにリソースの割当を設定する。

aws-backup-plan-create-1

リソースの割り当て

  1. ナビゲーション ペインより「バックアッププラン」を選択し、「リソースの割り当て」を選択する。
  2. リソース割当名の入力。
    リソースの選択「特定のリソースタイプを含める」→ 「EC2」+「インスタンスID」で入力。
    「リソースを割り当てる」を選択する。
aws-backup-plan-resource-1

手順

AWS SNSの設定

SNSトピックを作成する

  1. サービスより「Amazon Simple Notification Service」を選択する。
  2. ナビゲーションペインで、「トピック」 を選択する。
  3. [トピックの作成] を選択する。
  4. 下記のように設定し、トピックを作成する。
    タイプ名前
    スタンダードtest-backup-topic

「トピックを作成」 を選択する。

  1. 先ほど作成したトピックの 「詳細」 で、[ARN] (Amazon リソース名) の値をコピーする。
    この値は後のステップで必要になる。
aws-sns-detail-1
  1. 「詳細」 ペインの上で、「編集」 を選択する。
  2. 「アクセスポリシー」を展開する。
  3. JSON エディタ で、以下のアクセス権限をポリシーに追加する。
{
      "Sid": "My-statement-id",
      "Effect": "Allow",
      "Principal": {
        "Service": "backup.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:eu-west-1:111111111111:exampletopic"
}

↓ 最終的にこんな感じに

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "backup.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "[ARNの値]"
    }
  ]
}
  1. 変更を保存を選択する。

AWS CLIによりSNSトピックに通知を送信するように設定する

AWS CLIをローカルに入れたりするのは面倒なので、Cloud Shellを使用する。

  1. サービスより「CloudShell」を選択する。
  2. CloudShellを使用して、put-backup-vault-notifications コマンドを実行する。
aws backup put-backup-vault-notifications --endpoint-url https://backup.ap-northeast-1.amazonaws.com --backup-vault-name Default --sns-topic-arn [SNSのトピックARN] --backup-vault-events BACKUP_JOB_COMPLETED
  1. get-backup-vault-notifications コマンドを実行して、通知が設定されていることを確認する。
aws backup get-backup-vault-notifications --backup-vault-name Default

$ aws backup get-backup-vault-notifications --backup-vault-name Default
{
    "BackupVaultName": "Default",
    "BackupVaultArn": "[BackupVaultARNの値]",
    "SNSTopicArn": "[SNSトピックARNの値]",
    "BackupVaultEvents": [
        "BACKUP_JOB_COMPLETED"
    ]
}

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

  1. サービスより「Amazon Simple Notification Service」を選択する。
  2. ナビゲーションペインで、「サブスクリプション」を選択する。
  3. 「サブスクリプションの作成」を選択する。
  4. 「トピック ARN」 で、作成した SNS トピックを選択する。
  5. 「プロトコル」 で、「Eメール」 を選択する。
  6. 「サブスクリプションの作成」を選択する。
  7. ステップ5 で入力した E メールアドレスに、サブスクリプションの確認メールが届くので、SNS サブスクリプションを確認する。
aws-sns-subscription-1 aws-sns-subscription-2 aws-sns-subscription-3 aws-sns-subscription-4

動作確認

ここまでで、Backupが成功した場合にSNSのトピックに通知され、サブスクリプションで設定したエンドポイントにEメールが送信されるという部分を作成した。
ここでは、実際にBackupを動作させ、Eメールが正しく受信できるかを確認する。

  1. サービスより「Amazon Backup」を選択する。

  2. ナビゲーションペイン「バックアップボールト」より先ほど作成したバックアップボールトを選択する。

  3. 復旧ポイント「オンデマンドバックアップを作成」を選択する

  4. リソースタイプ:EC2, インスタンスID:作成したインスタンスを選択し、「今すぐバックアップを作成」を選択する。 「オンデマンドバックアップを作成」を選択する。

  5. エンドポイントに設定した「Eメール」にメールが届いていれば動作確認はOK

aws-backup-verification-ondemand-1 aws-backup-verification-ondemand-2 aws-backup-verification-ondemand-3 aws-backup-verification-ondemand-4

参考

おわりに

AWS Backupの通知を行う設定をしてみた。
失敗することもあると思うので、業務では設定しておくと失敗した際に気づけるので良さそうだ。
AWSサービスを連携して、SNSで通知させるということはあまりできていなかったので勉強になってよかった。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。