【アップデート】CloudWatch SyntheticsのカナリアイベントがAmazonEventBridgeでサポートされました

2021.02.22

どーもsutoです。

2021年2月19日にCloudWatchにAWS Backupメトリクスとイベントが使えるようになったとのことで実際に確認してみました。

このアップデートによって、CloudWatch SyntheticsによるWebの外形監視が正常に動作しているかをイベントトリガーとして、SNSに通知させたりLambdaを実行させることができます。

実際に検証してみた

検証環境は以下のとおりに準備しました。

  • Webサーバとして動作するEC2を1台作成
  • 上記WebサーバのURLを監視するCloudWatch SyntheticsのCanaryを作成
  • EventBridgeのターゲットとしてSNSトピックを準備(サブスクリプションには自分のメアドを設定済)
  • SyntheticsのイベントパターンとSNSを通知先としてEventBridgeルールを作成

本記事ではEventBridgeルール以外の作成手順は省略させていただきます。

CloudWatch Syntheticsの設定手順は、こちらの記事がわかりやすいです。

この手順を参考に「web-test-canary」という名前のカナリアを設定しました。

CloudWatch Syntheticsのイベントを作成

CloudWatch Syntheticsのイベントルールを作成するには、AWSコンソールでカスタムイベントパターンを作るか、AWS CLIで作成するかのどちらかとなります。

今回は、公式ドキュメントを参考にAWS CLIで作成してみました。

  1. イベントパターンの作成
aws events put-rule \
  --name WebTestEvent \
  --region ap-northeast-1 \ 
  --event-pattern "{\"source\": [\"aws.synthetics\"], \"detail\": {\"canary-name\": [\"web-test-canary\"]}}"
  1. イベントのターゲットを設定
aws events put-targets \
  --rule WebTestEvent \
  --targets "Id"="1","Arn"="arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:Default_CloudWatch_Alarms_Topic"

canary-nameやSNSのArnは各であらかじめ作成しておいたリソースを入力してください。

AWSコンソール画面上では以下のような設定になっているはずです。

では実際に受信したメールを確認してみます。

Canary実行が成功していることが通知されていました。

次にCanaryのターゲットを存在しないURLに変更して、Canary実行失敗させた場合の通知内容を見てみます。

失敗時のみ通知させたい場合は、"detail": {"test-run-status": [ "FAILED" ]}あたりで条件をつければ良さそうですね。

まとめ

以上、CloudWatch SyntheticsのカナリアイベントをEventBridgeに設定する方法でした。

小ネタに近いボリュームでしたが、この記事はお役立てれば幸いです。