前回の記事では、AWS Configのrequired-tagsルールの設定を行いました。
本記事では、required-tagsで非準拠となった場合にメール通知する方法をご紹介します。
- 初期の実装方法:EventBridge+SNS
- 改善策:AWS User Notificationsの利用
- 設定方法
- 動作確認
- EventBridge+SNSとAWS User Notificationsの違い
- まとめ
初期の実装方法:EventBridge+SNS
通知方法について、まずはAWSの生成AIサービスであるAmazon Qに質問してみたところ、EventBridgeとSNSを利用する方法を提案されました。
実際に実装してみたところ、通知自体は実現することができたのですが、メールがJSON形式で配信されるため非常に読みづらい形になってしまいました。

改善策:AWS User Notificationsの利用
そこで改めて実装方法を調べてみたところ、AWS User Notificationsでも通知できることが分かりました。
AWS User Notificationsを利用すれば、メールがJSON形式にはならず、成形された読みやすい形になるようです。
AWS User Notificationsとは
AWS User Notificationsとは、Amazon CloudWatchアラームやEC2 インスタンスの状態変化など複数のAWSサービスからの通知を一元管理し、ユーザーに分かりやすい形式で通知することができるサービスです。
通知はEメール、AWSコンソールモバイルアプリ、SlackやMicrosoft Teams対応のAWS Chatbotなどの複数チャネルで配信可能です。
設定方法
それでは実際に、AWS User Notificationsを利用して通知を実装していきます。
通知設定の作成
AWSマネジメントコンソールで「AWS User Notifications」と検索し、検索結果に出てくる「AWS User Notifications」をクリックします。

左メニューの「通知設定」をクリックします。

右上の「通知設定を作成」をクリックします。

名前には任意の通知設定名を入力します。

AWSサービスの名前では「Config」を、イベントタイプでは「Config Rules Compliance Change」を選択します。特定のルール名には前回の記事で作成したルール名「required-tags」を入力します。

リージョンはルールを作成したリージョンを選択します。

集約設定では非準拠リソースを検知したらすぐに通知するために、「集約しない」を選択します。

配信チャネルでは今回はEメールを選択します。受信者にメールアドレス、名前は任意の名前を入力します。

通知ハブでは任意のリージョンを少なくとも一つ選択します。今回はルールを作成したリージョンと同じAsia Pacific(Tokyo)を選択しました。設定値が入力できたら、「通知設定を作成」をクリックします。

通知設定が作成できました。作成した時点ではEメールの検証ができていないため、ステータスが非アクティブとなっています。

Eメールの検証
通知設定作成後、配信チャネルで設定したメールアドレスにEメールの検証メールが届くため、「Verify Email」をクリックし検証を完了させます。

下記の画面が表示されたら検証完了です。

検証が完了すると、通知設定のステータスがアクティブになります。

動作確認
required-tagsルールで準拠になっているリソースからタグを削除し、しばらく待つとメール通知が届きました。
SNSから配信されるメールはJSONでしたが、AWS User Notificationsで配信されるメールはユーザーに読みやすい形になっていました。

EventBridge+SNSとAWS User Notificationsの違い
EventBridge+SNSで実装した場合はメールがJSON形式となりますが、メール内に非準拠となったリソースの情報も含まれています。
AWS User Notificationsで実装した場合はメールはユーザーが読みやすい形に成形されていますが、メール内には非準拠となったリソースの情報は含まれていないため、 詳細はマネジメントコンソールで確認する必要があります。
どちらの方法も簡単にメール通知を実現できますが、よりメールの内容をカスタマイズしたい場合はLambdaなどのサービスを利用する必要がありそうです。
まとめ
これまで、AWS Configでリソースタグのチェックをする方法についてご紹介してきました。
現状はrequired-tagsルールでサポートされているリソースに限りがあるため、すべてのリソースのチェックをすることはできませんが、非準拠チェックから通知まで簡単に実装できるため、実装コストは低いと感じました。
今後、required-tagsルールでサポートされるリソースが増えることを期待します!