Direct Connect に関するPHDのイベントが発生した場合にメール通知を行う方法を教えてください

Direct Connect の Personal Health Dashboard イベントが発生した場合にメール通知を行う CloudFormation の構築手順を記載します。
2021.09.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

IDが鳩サブレーのドメイン(www.hato.co.jp)と同じことを知ったアノテーション株式会社の hato です。

本記事は Direct Connect でイベントが発生した場合に、メールで通知内容を受け取る方法をご紹介します。

Direct Connect のイベント通知

2021年9月2日に発生した Direct Connect のトラブルでは、情報収集のため Personal Health Dashboard (PHD)に繰り返しアクセスした方も多いのではないでしょうか?

Personal Health Dashboard ではエンドユーザーが影響を受ける事象について、AWS側の対応状況を確認することができ、弊社テクニカルサポートでもAWS側の対応状況をお問い合わせ頂いた際は、Personal Health Dashboard をご案内しております。

AWS では既に Personal Health Dashboard でイベントが発生した場合にメール通知を行うナレッジを公開しており、あらかじめ設定しておけばメールで通知を受け取ることが可能です。

Direct Connect メンテナンスまたはイベントの通知を受け取る

先日の事象を受け「ナレッジを参考に設定しているが上手くいかない」とお問い合わせを頂くことも多いため、TIPSを交えて設定方法をご紹介いたします。

やってみた

AWS CloudFormation コンソールから、[スタックの作成] を選択します。

このとき、Direct Connect が存在するリージョンを選択していることを確認してください。イベントはリージョン単位で発行されるためです。
Monitoring AWS Health events with Amazon CloudWatch Events - AWS Health

「テンプレートの指定」で「Amazon S3 URL」を選択し、https://s3.amazonaws.com/aws-health-tools-assets/cloudformation-templates/DX_Notifier.jsonと入力して、[次へ] を選択します。

※記号が含まれるメールアドレスを使用する場合は、あらかじめメールアドレスが有効ではない?を参考にテンプレートの修正が必要です。

「スタックの名前」に任意のスタック名を入力し、「EmailAddress」に通知先となるメールアドレスを入力して、[次へ] を選択します。

[次へ] を選択します。

「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックをいれ、[スタックの作成] を選択します。

自動的にリソースが作成されるため、しばらく待ちます。
「イベント」タグの矢印を選択すると、作成状況が更新されます。

ステータスが「CREATE_COMPLETE」になったことを確認します。

通知先に設定したメールアドレスに受信許可のメールが届きますので、「Confirm subscription」を選択します。

「Subscription confirmed!」が表示されることを確認します。

通知のテスト

Direct Connect でイベントを発生させることは現実的ではないので、Lambda のテスト機能を使用します。

Lambda コンソールからスタック名で指定した Lambda を選択します。

「テスト」タブを選択します。

「名前」に任意のテスト名を入力し、その下の赤枠で囲った部分に、次のドキュメントを参考にイベント発生時に受信するJSONを入力します。

サポートされているサービスからの CloudWatch Events イベントの例 - Amazon CloudWatch Events

■参考例

{
    "version": "0",
    "id": "121345678-1234-1234-1234-123456789012",
    "detail-type": "AWS Health Event",
    "source": "aws.health",
    "account": "123456789012",
    "time": "2016-06-05T06:27:57Z",
    "region": "ap-northeast-1",
    "resources": [],
    "detail": {
      "eventArn": "arn:aws:health:ap-northeast-1::event/DIRECTCONNECT/AWS_DIRECTCONNECT_OPERATIONAL_ISSUE/AWS_DIRECTCONNECT_OPERATIONAL_ISSUE",
      "service": "DIRECTCONNECT",
      "eventTypeCode": "AWS_DIRECTCONNECT_OPERATIONAL_ISSUE",
      "eventTypeCategory": "issue",
      "region": "ap-northeast-1",
      "startTime": "Sat, 11 Jun 2016 05:01:10 GMT",
      "endTime": "Sat, 11 Jun 2016 05:30:57 GMT",
      "eventDescription": [
        {
          "latestDescription": "[RESOLVED] ネットワーク接続性 | Network Connectivity\n\n[01:01 AM PDT] 日本時間 2021/01/02 03:04 から一部の AWS Direct Connect 接続と AP-NORTHEAST-1 リージョン間にネットワーク接続性の問題が発生していることを確認しております。この問題について調査を行っております"
        }
      ]
    }
}

「変更を保存」「テスト」の順に選択します。

「実行結果: 成功」のメッセージが表示されることを確認します。

通知先にメールが届くことが確認できました。

メールアドレスが有効ではない?

[スタックの作成] を選択した際に、次のエラーメッセージが表示される場合があります。

Parameter EmailAddress failed to satisfy constraint: Please enter a valid email address for the SNS subscription

その際は、テンプレートファイルをローカルに一度ダウンロードし、7行目(AllowedPattern)を丸ごと削除してください。
該当の制限ではメールアドレスとして有効でも記号(.-)が含まれているメールアドレスはエラーとなるためです。

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "EmailAddress": {
	  "Description": "Please enter an email address to subscribe to the SNS topic. To subscribe additional email addresses and for other subscription options, go to SNS >> Topics >> \"DXMaintNotify\" >> Create subscription",
      "Type": "String",
	  "AllowedPattern": "[a-zA-Z0-9]+@[0-9a-zA-Z]+\\.[a-zA-Z]+",
	  "ConstraintDescription": "Please enter a valid email address for the SNS subscription"
    }
  },

修正したテンプレートは、「スタックの作成」ページで「Amazon S3 URL」のかわりに「テンプレートファイルのアップロード」を選択することで使用することができます。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。