Amazon EventBridge、Amazon SNSを利用してAWS Trusted Advisor の特定項目を通知する

記事タイトルとURLをコピーする

こんにちは、カスタマーサクセス課の城です。
今回はAmazon EventBridge 、Amazon Simple Notification Service を利用したAWS Trusted Advisorの特定項目の通知についてです。
コスト最適化項目の「利用頻度の低いAmazon EBSボリューム」で検知があった場合、通知させるという設定をやってみましたので、紹介いたします。

背景

アタッチされていないEBSボリュームを検知したらメール通知させたいという要件があり、当初、AWS Config ルールのAWS管理ルール「ec2-volume-inuse-check」を利用しようとしました。
ConfigルールはEBSボリュームの評価については、DeleteVolume API呼び出しがルールのトリガーとなる仕様があります。
Amazon EC2インスタンスの終了は、DeleteOnTermination属性を使用してボリュームの削除が行われますが、DeleteVolume API呼び出しは行われないため、EBSボリュームのは準拠または非準拠として表示されてしまいます。

削除した EBS ボリュームが AWS Config で準拠または非準拠として表示される理由

EventBridge、SNSを利用してConfig Rulesで非準拠とされたリソースの通知を行っていたところ、AutoScalingにてインスタンスの終了を毎日行っていた環境でしたので、不要な通知がされてしまう状況でした。
そこで、Trusted Advisorのコスト最適化項目のうち、「利用頻度の低いAmazon EBSボリューム」を利用した通知を設定してみました。

利用リージョンと参考ドキュメント

Trusted AdvisorをEventBridgeルールのソースとするにはバージニア北部リージョン(us-east-1)を利用する必要がありますので、ご注意ください。
参考にしたドキュメントリンクは下記となります。

docs.aws.amazon.com

ちなみにCloudWatch EventsルールはEventBridgeになっていますが、こちらのドキュメントには2021/11/30時点では反映されていないようです。

SNSトピックの作成

SNSのダッシュボードにて、左サイドバーの[トピック] ⇒ [トピックの作成] とクリックします。

f:id:swx-jo:20211130164421p:plain

今回は「詳細」の設定について、次の内容で作成しています。
他のオプション項目は設定していません。

設定項目 設定値
タイプ スタンダード
名前 TrustedAdvisor-UnderutilizedEBS
表示名 TrustedAdvisor-UnderutilizedEBS

必要項目を入力したら、[トピックの作成]をクリックします。

f:id:swx-jo:20211130165703p:plain

「トピック【トピック名】が正常に作成されました」というメッセージが表示され、作成したトピックの詳細表示されます。

f:id:swx-jo:20211130170018p:plain

サブスクリプションの作成

今回はメールで通知したいのでメールアドレスをサブスクライブします。
前項で作成したSNSトピックの画面から[サブスクリプションの作成]をクリックします。

f:id:swx-jo:20211130170426p:plain

今回は「詳細」の設定について、次の内容で作成しています。
他のオプション項目は設定していません。

設定項目 設定値
プロトコル Eメール
エンドポイント 送信先メールアドレス

必要項目を入力したら、[サブスクリプションの作成]をクリックします。

f:id:swx-jo:20211130171155p:plain

「【トピック名】へのサブスクリプションが正常に作成されました」というメッセージが表示され、作成したサブスクリプションの詳細表示されます。

f:id:swx-jo:20211130171510p:plain

作成したサブスクリプションはステータスが「保留中の確認」となっており、エンドポイントに設定したメールアドレス宛に確認メールが送信されます。
このメール本文内の[Confirm Subscription]をクリックして確認を行います。

f:id:swx-jo:20211130171912p:plain

Subscription Confirmed!のメッセージが表示されます。

f:id:swx-jo:20211130172045p:plain

サブスクリプションのステータスについては「確認済み」となっていることが確認できます。

f:id:swx-jo:20211130172450p:plain

EventBridgeルールの作成

EventBridgeのダッシュボードにて、左サイドバーの[ルール] ⇒ [ルールの作成] とクリックします。

f:id:swx-jo:20211130183558p:plain

ここでルールの詳細を設定するのですが、1点、補足事項です。
イベントパターンの設定項目でTrusted Advisorについては事前定義パターンというプルダウンメニューで選択をするとイベントパターン(json)を記載してくれる機能があるります。
2021/11/30時点の仕様では、マネジメントコンソールを日本語にしていると、イベントパターンにも日本語で入力されてしまうという仕様があるようで、今回はここの設定のタイミングだけ英語の表記にしています。

f:id:swx-jo:20211130184321p:plain

今回EventBridgeルールは次の内容で作成しています。
タグの項目は設定していません。

設定項目 設定値
Name TrustedAdvisor-UnderutilizedEBS
Define pattern Event pattern
Event matching pattern Pre-defined pattern by service
Service provider AWS
Service name Trusted Advisor
Event type Check Item Refresh Status
Status Any Status
Check Specific check(s):Underutilized Amazon EBS Volume
Resource ID Any resource ID
Select event bus AWS default event bus
Target SNS topic
Topic 【項2で作成したSNSトピック】

必要項目を入力したら、[Create]をクリックします。

f:id:swx-jo:20211130185744p:plain

「Rule 【ルール名】 was created successfully」というメッセージが表示されて、設定は完了です。

f:id:swx-jo:20211130185942p:plain

Trusted Advisorとメール通知の確認

試しにアタッチされていないEBSボリュームを作成し、Trusted Advisorにアクセスしてみます。
Trusted Advisorの更新についてはFAQに下記の記載があります。
24時間以内に更新されなかったチェックについて、アクセスしたタイミングで更新されます。
もし、通知が来ないようでしたら、個々のチェックのリフレッシュ、もしくは[すべてを更新]を試してみてください。

Q: Trusted Advisor の結果はどれぐらい頻繁に更新できますか?

最小更新間隔は、チェックの結果により異なります。個々のチェックをリフレッシュすることも、または [まとめ] ダッシュボードの右上隅にある [すべてを更新] を選択してすべてのチェックを一括で更新することもできます。Trusted Advisor ダッシュボードにアクセスすると、直近の 24 時間以内に更新されなかったチェックは、自動的に更新されます。これには、数分かかる場合があります。チェックタイトルの右側に最新の更新日時が表示されます。また、ビジネスまたはエンタープライズサポートのお客様の場合、Trusted Advisor データは毎週自動で更新されます。

Trusted Advisorの画面では作成したアタッチされていないボリュームが表示されています。

f:id:swx-jo:20211130191448p:plain

メールは下記のような形で送られます。 EBSボリューム毎に送られてきますので、もし定常的に検知されてしまうものがあれば非表示などの機能も使うとよいでしょう。
※下記例は1件分ですが、実際はTrusted Advisorで検知されている3件分のメールが送信されていました。
f:id:swx-jo:20211201101713p:plain

Trusted Advisor の非表示についてはFAQに下記記載での説明がありますので、ご参考ください。

Q: 「非表示の項目」機能はどのように動作しますか?

特定リソースのステータスについて通知を受信したくない場合は、そのリソースのレポートを解除(非表示に)することができます。これを行うのは、通常、チェックの結果を検査し、Trusted Advisor で行った設定または AWS リソースを変更しないことに決めた場合です。

項目を除外するには、リソース項目の左側にあるボックスをオンにし、[Exclude and Refresh (除外してリフレッシュ)] を選択します。除外した項目は別のビューに表示されます。除外した項目一覧から項目を選択し、[Include and Refresh (含めてリフレッシュ)] を選択して、いつでも項目を復元する (含める) ことができます。

この「除外してリフレッシュ」の機能は、チェック項目に対してではなく、リソースレベルでのみ利用可能です。個々のリソースアラートを除外する前に、そのリソースアラートを調べ、除外しても特定のエリアを見過ごすことなくデプロイの全体ステータスが表示されるかどうかを確認することをお勧めします。例については、AWS ブログの AWS Trusted Advisor For Everyone をご参照ください。

よくある質問 - AWS サポート | AWS

最後に

Trusted AdvisorはAWSを最適に使う上でとても有用なツールですね。
通知をするうえでちょっとしたハマりポイントもあったので、ブログにしてみました。
どなたかの助けになれば幸いです。

城 航太 (記事一覧)

営業部カスタマーサクセス課・課長

AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。最近はAmazon WorkSpacesやAmazon AppStream2.0が好きです。APN Ambassador 2019,2020