
AWS Cost Anomaly DetectionがAWS User Notificationsと統合されフィルタリングがしやすくなりました
お疲れさまです。とーちです。
AWS Cost Anomaly Detection使ってますか?AWS上での異常なコストを検知できるいいサービスですよね。
このAWS Cost Anomaly DetectionがAWS User Notificationsと統合されたというアップデートがありました。AWS User Notificationsとの統合により、通知のフィルタリングがとてもやりやすくなりました。実際に設定方法等を試してみたので紹介します。
前提となるAWS Cost Anomaly Detectionの設定
まず前提として、AWS Cost Anomaly Detectionの設定が必要です。
AWS Cost Anomaly Detectionの設定では、コストモニターとアラートサブスクリプションを作成する必要があります。コストモニターが何を対象にコスト異常を検出するかで、アラートサブスクリプションはどこに通知するかという設定ですが、今回はアラートサブスクリプションについては使用しません。通知の部分はAWS User Notificationsが行うからです。
コストモニターにはいくつか種類がありますが、今回はAWS のサービス
という種類のものを使用します。
なお、コストモニターの作成方法や、コストモニターの種類については以下の記事に詳しく書いてありますので、ご参照ください。
AWS User Notificationsの設定手順
上記前提となる設定が完了している状態から始めていきます。まずマネージメントコンソールでAWS User Notificationsの画面を開き、「通知設定を作成」を押します。
今回は以下のような設定で作成しました。
- 名前:cost-anomaly-detection-all
- イベントルール:
- AWS のサービスの名前:AWS Cost Explorer
- イベントタイプ:Anomaly Detected
- リージョン:Asia Pacific (Tokyo)、US East (N. Virginia)などよく使うリージョンを指定
- 高度なフィルター:なし
- 集約設定:5 分以内に受領
- 配信チャネル:事前に作成した配信チャネル(Eメール)を選択
集約設定により半日ごとに集約して通知といったことも可能です。元々、AWS Cost Anomaly Detectionのアラートサブスクリプションには日次で集約という設定もあったので、こういった感じの通知にしたい場合は集約設定を 12時間以内に受領
にすると良いと思います。
高度なフィルターについて
高度なフィルターについてですが、受信したイベントをフィルタリングできる設定になっています。AWS Cost Anomaly Detectionで設定可能なフィルター例については以下のページに記載されています。
個人的にはこの高度なフィルターによって、AWS Cost Anomaly Detectionの使い勝手がだいぶ良くなったのではと感じます。
従来のフィルタリング方法との比較
従来、AWS Cost Anomaly Detectionでフィルタリングをするためには、以下のような方法がありました。
- コストモニターを作成する際にコスト配分タグ等を指定したカスタムモニターを作成:Cost Categories(管理アカウントでしか設定不可)またはコスト配分タグを使ったフィルタのみ可能
- アラートサブスクリプション設定:超過または到達コスト額によるフィルタのみ可能
- EventBridgeルール:柔軟にフィルタ条件を設定可能だが、通知を行うにはユーザー側でターゲット(SNSトピックやLambda関数、AWS Step Functions等)の作成、コーディング等が必要
どの方法もフィルタ条件が少なかったり追加でリソースの作成が必要など、いま一歩というところだったのですが、AWS User NotificationsによるフィルタはEventBridgeルールベースでの柔軟なフィルタ条件の設定と、通知をいい感じに整形して指定した送信先に送信できるという特性を兼ね備えているため、とても便利に使えるようになっています。
具体的なフィルター条件の例
ということで、フィルターの一例を紹介します。こちらの例にも記載されている通り、複数条件でのフィルターも実現することができます。
- フィルター条件
- EC2サービス、かつ
- コスト影響が$3以上あったとき
なお、EC2にて$3以上のコストが発生したときに必ず通知されるというものではないのでご注意ください。あくまでもAWS Cost Anomaly Detectionが異常なコストだと検出することが前提で、その上で条件を満たしたときに通知されます。
{
"source": ["aws.ce"],
"detail-type": ["Anomaly Detected"],
"detail": {
"DimensionValue": ["EC2"],
"MonitorName": ["aws-service-monitor"],
"Impact": {
"TotalImpact": [{ "numeric": [">", 3] }]
}
}
}
検知させてみた
異常検知された結果がこちらです。残念ながら上記のフィルター条件のコスト異常を発生させることが出来なかったのですが、タイミングよくECSでコスト異常が発生してくれました。
必要十分な通知という感じでいいですね。
注意点として、こちらのドキュメントにある通り、AWS Cost Anomaly Detectionは1 日に約 3 回しか実行されず、またデータとしては、「最大 24 時間の遅延がある Cost Explorer のデータ」を使用するので、通知までに最大24時間のタイムラグが発生します。
即時の通知でない点には注意ですが、設定しているだけでなにかあったときに気づけるのでセキュリティの観点からもとりあえず設定しておいていいレベルかなと思います。
まとめ
というわけで、AWS Cost Anomaly DetectionがAWS User Notificationsと統合されたというアップデートの紹介でした。
AWS User Notificationsとの統合によりだいぶ使いやすくなりそうですね。個人的にはAWS Cost Anomaly Detectionの通知をするときに第一選択肢として考えて良いのではないかなと思いました。
さっそく自分の検証用アカウントでも設定して、異常コストを検知できるようにしておきたいと思います。
以上、とーちでした。