
マルチアカウント環境でのCost Anomaly Detection、モニター4種の使い分けを整理して、メンバーアカウントで作れる範囲を確かめてみた
はじめに
おはようございます〜
クラウド事業統括本部/プロフェッショナルサービス事業本部/運用イノベーション部の三ツ口寛太です(╹◡╹)
AWS Cost Anomaly Detection(以下、CAD)は、普段と違うコストの増え方を機械学習で検知してくれるサービスです。
1アカウントなら「とりあえずAWSサービス別モニターを作る」で足りますが、AWS Organizations配下で複数アカウントを運用していると、次のような悩みが出てきます。
- 管理アカウントでまとめて見るべきか、アカウントごとに見るべきか
- 本番・開発、チーム、プロジェクトで通知先を分けたい
- モニターの種類が複数あって、どれを選べばよいか分からない
CADの初期設定やモニター拡張のアップデートは、すでにDevelopersIOで紹介されています。
この記事では、「マルチアカウントでどのモニターをどのユースケースに使うか」という設計の判断軸に絞って整理します!
なお、検証には会社の検証用アカウント(Organizationsのメンバーアカウント)を使ったため、管理アカウントでの挙動は実機で確認していません。管理アカウントの挙動は公式ドキュメントをもとに整理し、実機ではメンバーアカウントで「何が作れて、何が作れないか」を確かめました。🧑💻
この記事で分かること
- CADのモニター4種(AWSサービス / リンクアカウント / コストカテゴリ / コスト配分タグ)の違い
- マルチアカウントでのユースケース別のモニター選び
- メンバーアカウントで実際に作れたモニターと、作れなかったモニター
- 通知(アラートサブスクリプション)の設定で選べる内容
こだわりポイント
- 「どれが良いか」ではなく「どんな組織・目的ならどれか」で整理する
- 公式ドキュメントで確認できたことと、実機で確認したことを分けて書く
- 管理アカウントの挙動は未検証と明記し、メンバーアカウントで作れる範囲・作れない範囲を実機で記録する
- 検知結果の検証は今回やらない(設定とユースケースの整理に絞る)
先に結論
- メンバーアカウントで実際に作れたのは、AWSサービス別モニターだけでした
- コスト配分タグ別とコストカテゴリ別は、このメンバーアカウントではキーを選べず、使えませんでした(タグは選択肢が空、コストカテゴリは取得エラー)
- リンクアカウント別は、選べるアカウントが自分だけでした。複数アカウントを選ぶと合計コストで評価され、最大10アカウントまで選べます
- 公式ドキュメントでは、リンクアカウント別・コスト配分タグ別・コストカテゴリ別のモニターは管理アカウントでしか作れず、メンバーアカウントで作れるのはAWSサービス別(AWSによる管理)だけと書かれています。実機の結果と一致しました
- 組織内の全メンバーアカウントをまとめて見たいなら、管理アカウントでAWS管理のリンクアカウント別モニターを使う、というのが公式の説明です(実機では未検証)
- AWSサービス別モニターは、1アカウントに1つしか作れません
今回の検証環境
| 項目 | 内容 |
|---|---|
| Organizations | 配下のメンバーアカウント(多数のメンバーを持つ組織) |
| 操作するアカウント | 検証用アカウント(管理アカウントではない) |
| Cost Explorer | 有効化済み |
| コスト配分タグ | このアカウントからは利用不可(後述) |
| コストカテゴリ | このアカウントからは利用不可(後述) |
公式ドキュメントと実機の切り分け
| 内容 | 根拠 |
|---|---|
| どのモニターを、どのアカウントで作れるか | 公式ドキュメント(実機の結果とも一致) |
| 管理アカウントで設定したときの対象範囲 | 公式ドキュメント(実機では未検証) |
| 上限10アカウント、複数アカウントは合算 | 公式ドキュメント(実機の画面でも確認) |
| メンバーアカウントでの各モニターの作成可否 | 実機で確認 |
| 画面に表示される上限・仕様の説明 | 実機の画面で確認 |
| 検知の精度・ラグ | 検証していない |
モニターの種類
実機の作成画面では、モニターが「モニタリング方式」と「モニターディメンション」の2段階で選べました。
| モニタリング方式 | 内容(画面の説明より) |
|---|---|
| AWSによる管理 | 使用可能なすべての値を個別に自動でモニタリングする(上限は5,000値) |
| カスタマーマネージド | モニタリングする値を自分で選ぶ。選んだ値は集計されてモニタリングされる |
| ディメンション | 向くユースケース(画面の説明より) |
|---|---|
| AWSのサービス - 推奨事項 | 使用する各サービスを個別に評価し、小さな異常も検出しやすくする |
| 連結アカウント | 組織が連結アカウントごとにチームや製品、環境を定義している場合 |
| コストカテゴリ | 組織がコストカテゴリを使ってチームや製品、環境を定義している場合 |
| コスト配分タグ | 組織がコスト配分タグを使ってチームや製品、環境を定義している場合 |
やってみた
1. 事前準備:アカウント種別とCLIでの確認
まず、操作するアカウントが組織に所属しているかを確認しました。
aws organizations describe-organization --query 'Organization.[Id,MasterAccountId,ManagementAccountId]'
[
"o-xxxxxxxxxx",
"111111111111",
null
]
組織ID(o-xxxxxxxxxx)が返ってきたので、このアカウントはOrganizationsに所属しています。MasterAccountIdは、自分のアカウントIDとは別のIDでした。そのため、操作しているのはメンバーアカウントであることが分かります。
次に、コスト配分タグとコストカテゴリをCLIで確認しました。
aws ce list-cost-allocation-tags --status Active
aws ce list-cost-category-definitions
どちらも、次のエラーになりました。
AccessDeniedException: Failed to list Cost Allocation Tags: Linked account doesn't have access to cost allocation tags.
AccessDeniedException: Failed to list Cost Categories: Linked account doesn't have access to cost category.
エラー文に「Linked account(リンクアカウント)」とあることから、このアカウントではコスト配分タグとコストカテゴリを利用できないことが分かります。
2. AWSサービス別モニターを作成
「Cost Anomaly Detection」→「Cost monitors」→「Create monitor」から作成しました。
最初、すでに別のAWSサービス別モニターがあったため、作成画面に次のメッセージが出て、「AWSのサービス - 推奨事項」の選択肢がグレーアウトされていました。
アカウントについて作成できる AWS のサービスのモニタータイプは 1 つだけです。既存のモニターを削除して、新しい AWS のサービスのモニターを作成します。

既存モニターがあると、AWSのサービスが選べない
既存のモニターを削除してから、cad-lab-service を作成できました。作成直後には、次のメッセージが表示されます。
アラート設定および異常が検出されたかどうかに応じて、24 時間以内にアラートの受信が開始される場合があります。

作成したモニターの詳細(ARNはマスク)
モニターの詳細では、タイプが「AWSのサービス」、モニタリングが「すべてのサービス」、管理者が「AWSによる管理」でした。総支出(MTD)の金額が小さいことから、このアカウント自身のコストだけを見ていると考えられます。
3. リンクアカウント別モニターを確認
「カスタマーマネージド」×「連結アカウント」を選ぶと、次のことが画面で確認できました。
- 「個々のアカウントまたは複数のアカウントの合計コストを追跡できます」と表示される
- 「最大 10 個のアカウントを選択します」と表示される
- 選択肢に出てきたアカウントは、自分のアカウントだけだった

連結アカウントの選択画面(選択肢は自分のアカウントだけ。アカウントIDと名前はマスク)
メンバーアカウントからは、他のアカウントを選べませんでした。公式ドキュメントでも、リンクアカウント別のモニターは管理アカウントでのみ作成できるとされています。
公式ドキュメントの説明では、カスタマーマネージドのモニターは、選んだアカウント(最大10個)の支出を合算して評価します。一方、AWSによる管理のモニターは、値(アカウント)ごとに個別に評価します(最大5,000値)。アカウント単位で異常を見つけたいなら、AWSによる管理を選ぶほうが向いていると考えられます。
4. コスト配分タグ別モニターを確認
「AWSによる管理」×「コスト配分タグ」を選び、キーのドロップダウンを開くと、「タグキーが見つかりません。」と表示されました。

コスト配分タグのキーが選べない
CLIでのエラーと合わせると、このアカウントでは、コスト配分タグ別モニターは使えませんでした。
公式ドキュメントでは、リンクアカウント別・コスト配分タグ別・コストカテゴリ別のモニターは管理アカウントでしか作れないとされています。また、コスト配分タグの管理画面にアクセスできるのは、Organizationsの管理アカウントと、組織に属さない単体アカウントだけです。今回の結果は、この説明と合っています。なお、画面やCLIのエラー文言そのものは、ドキュメントには見当たりませんでした。
5. コストカテゴリ別モニターを確認
「AWSによる管理」×「コストカテゴリ」を選び、キーのドロップダウンを開くと、「コストカテゴリキーの取得中にエラーが発生しました。」と表示されました。

コストカテゴリのキー取得でエラーになる
こちらも、このアカウントでは使えませんでした。
なお、コストカテゴリを誰が作れるかについては、公式ドキュメントの記述が分かれています。管理アカウントまたは単体アカウントだけが作成・管理できる、という記述が2か所ある一方、別の箇所には、通常のアカウントと管理アカウントに既定で作成のアクセス権があるという記述もあります。ただ、CADのモニターに関しては、管理アカウントでしか作れないとされているので、今回の結果と矛盾はしません。
6. アラートサブスクリプションの設定画面
モニター作成のステップ2で、アラートサブスクリプションを設定します。
| 項目 | 選べる内容(実機の画面) |
|---|---|
| アラート頻度 | 個々のアラート/日次の要約/週次の要約(週次は画面では未確認。公式ドキュメントでは、メールで週1回届く) |
| 受信者(個々のアラート) | Amazon SNS ARNを入力(SNSトピックの用意とアクセス許可が必要) |
| 受信者(日次の要約) | メールアドレス(カンマ区切りで最大10個) |
| しきい値 | 画面では$の金額を指定(初期は「予想支出を上回る金額」)。公式ドキュメントでは、金額とパーセンテージの2種類があり、2つ目のしきい値を追加してAND/ORで組み合わせられる |
| そのほか | 「Amazon Chatbot のアラート」の設定が用意されている(公式ドキュメントでは、SNSトピックをSlackチャンネルなどに紐づける設定として説明されている) |

「個々のアラート」を選ぶと、通知先がSNS ARNの入力になる

「日次の要約」を選ぶと、通知先がメールアドレスの入力になる
頻度によって通知先の入力が変わり、個別アラートはSNS、要約はメールという使い分けでした。SNSには別途料金がかかる旨も表示されます。
今回は、手軽に確認するため、日次の要約でメールを通知先にして作成しました。
結果のまとめ
メンバーアカウントでの確認結果です。
| モニター | 結果 | 備考 |
|---|---|---|
| AWSサービス別 | 作成できた | 1アカウントに1つ。既存があると、削除しないと作れない |
| リンクアカウント別(カスタマーマネージド) | 作成画面まで確認。自分のアカウントのみ選択可 | 最大10アカウント。合計コストで評価。作成は未実施 |
| コスト配分タグ別(AWSによる管理) | 使えなかった | 「タグキーが見つかりません」 |
| コストカテゴリ別(AWSによる管理) | 使えなかった | 「キーの取得中にエラー」 |
| 管理アカウントでの挙動 | 未検証 | |
| 検知の挙動 | 未検証 |
ユースケース別の使い分け(整理)
実機で確認できなかった部分は、公式ドキュメントをもとにした整理です。
| ユースケース | 候補 | ポイント |
|---|---|---|
| 各アカウントが自分のコストを見たい | AWSサービス別(メンバーアカウントで作成) | 実機で作成できた。1アカウント1つ |
| 全メンバーアカウントをまとめて見たい | 管理アカウントでAWS管理のリンクアカウント別 | 公式: 組織内の全メンバーアカウントを自動で追跡。実機では未検証 |
| アカウントごとに責任を分けたい | 管理アカウントでリンクアカウント別 | AWS管理は個別に評価、カスタマーマネージドは選んだ最大10アカウントを合算して評価 |
| 本番/開発、事業部で分けたい | コストカテゴリ別 | メンバーアカウントでは使えなかった。公式でも管理アカウントのみ |
| プロジェクト・チームで分けたい | コスト配分タグ別 | 同上。タグの有効化も必要で、反映に最大24時間かかる場合がある |
注意点
- 今回はモニターの作成と設定の確認までで、実際に異常が検知されるかは検証していません
- Organizationsの管理アカウントでの挙動は実機で検証していません。管理アカウントに関する記述は、公式ドキュメントによるものです
- モニターとアラートサブスクリプションは、作成したアカウントからしかアクセスできない、と公式ドキュメントにあります。複数アカウントで運用するときは、どのアカウントに作るかを決めておく必要があります
- 個別アラートで使うSNSには別途料金がかかります(作成画面にも表示されます)。CAD自体の料金は、今回は確認していません
- 「カスタマーマネージド」でのコスト配分タグ別・コストカテゴリ別、「AWSによる管理」でのリンクアカウント別の作成は、今回は確認していません
- 検証用の構成です。本番運用では閾値や通知先を運用に合わせて設計してください
まとめ
メンバーアカウントでは、CADのモニター4種のうち、実際に作れたのはAWSサービス別だけでした。コスト配分タグ別・コストカテゴリ別はキーを選べず、リンクアカウント別は自分のアカウントしか選べませんでした。
複数アカウントをまたいで見たい場合は、管理アカウントで設定する前提で設計するのがよさそうです。
検知結果の検証や、Slack通知(Amazon Chatbot)の作り込みは、また別の記事で試してみたいと思います。
最後に
本日の写真はこちら!(ででん)

僕の愛車のマグナです!最近大型免許を取ったので乗り換えも検討していますが、手放したくないです、。
本日も最後までご覧くださりありがとうございました〜
参考
- Getting started with AWS Cost Anomaly Detection
- Extending AWS managed monitors in AWS Cost Anomaly Detection
- Organizing costs using AWS Cost Categories
- Using cost allocation tags
- 【アップデート】Cost Anomaly Detection のAWS管理モニターが拡張。リンクアカウント、コスト配分タグ、コストカテゴリの監視に対応しました
- 組織でコスト異常を検知する!Cost Anomaly Detection の設定方法を紹介
- AWS Cost Anomaly Detectionが得意なこと・苦手なこと










