今回のゴール
以前に、AWSとオンプレのネットワークをSite To Site VPNで接続したのですが、そのトンネルの障害をCloudWatchを利用して検知して通知しようと思います。
Site To Site VPNはデフォルトでトンネルを2つ作成するので、1つのトンネルがダウンしたときに障害を通知して対応すれば可用性は上がるかと思います。
設定方法は、Tunnel毎にアラームを作成して、複合アラームとする方法や、VPN IDでアラームを作成する方法などがありますが、今回は後者の方法でアラームを作成します。
コンソールのみで確認するには、Personal Health Dashboardで確認できます。(特に設定は不要)
設定
NGのアラーム
CloudWatchサービス-[アラーム]-[アラーム]を選択して、「アラームの作成」をクリックします。

[メトリクスの選択]を選択して、[VPN]-[VPN 接続のメトリクス]を選択して、該当のVPN IDのTunnelStateを選択します。

[しきい値の種類]:静的
[TunnelState_NG が次の時…]:より低い
[… よりも]:1

[SNSトピックの選択]:既存のSNSトピックを選択
[通知の選択]:cloudwatch_event_vpn(登録済のSNSトピックを選択)

[アラーム名]:alarm_vpn_NG(任意)

OKのアラーム
アクションの設定まではNGのアラームと同じ設定です。
[アラーム状態のトリガー]:OKを選択します。

[アラーム名]:alarm_vpn_OK(任意)

確認
トンネルの1つを切断してアラートを検知できるか確認します。
今回はルーターの設定を変更して、トンネルの事前共有キーを変更することで障害をシミュレートしました。
Cloud Watch上で確認すると、障害が検知されております。

暫くすると障害を通知する下記内容のメールが届いておりました。
Alarm Details:
- Name: alarm_vpn_NG
- Description:
- State Change: OK -> ALARM
- Reason for State Change: Threshold Crossed: 1 out of the last 1 datapoints [0.8666666666666667 (19/06/21 01:17:00)] was less than the threshold (1.0) (minimum 1 datapoint for OK -> ALARM transition).
- Timestamp: Saturday 19 June, 2021 01:22:31 UTC
- AWS Account: XXXXXXXXXX
- Alarm Arn: arn:aws:cloudwatch:ap-northeast-1:XXXXXXXXXX:alarm:alarm_vpn_NG
続いてトンネルを正常な状態に戻して障害復旧を確認します。
Cloud Watch上で確認すると障害が復旧したことが確認できました。

暫くすると障害復旧を通知する下記内容のメールが届いておりました。
Alarm Details:
- Name: alarm_vpn_OK
- Description:
- State Change: ALARM -> OK
- Reason for State Change: Threshold Crossed: 1 out of the last 1 datapoints [1.0 (19/06/21 01:29:00)] was not less than the threshold (1.0) (minimum 1 datapoint for ALARM -> OK transition).
- Timestamp: Saturday 19 June, 2021 01:34:23 UTC
- AWS Account: XXXXXXXXXX
- Alarm Arn: arn:aws:cloudwatch:ap-northeast-1:XXXXXXXXXX:alarm:alarm_vpn_OK