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

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

IDが鳩サブレーのドメイン(www.hato.co.jp)と同じことを知ったアノテーション株式会社の hato です。
hatoson 810「集塵力の変わらない ただ一つの手動式クリーナー!」がすごく気になります)

本記事は 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サイトをご覧ください。