垣見です。Amazon GuardDuty。導入するだけで脅威検知ができる、AWSセキュリティの基本サービスですよね。
しかも「30日間の無料トライアル」があり、その中で事前にどの程度のコストがかかるのかを把握してから継続判断ができます!
本日はこちらの詳しい仕様をご紹介します。
無料トライアル中の「推定組織コスト」
Amazon GuardDuty(以下、GuardDuty)はデータ量によって料金が変わり、一概に料金を予想しにくいサービスです。
ただし、「30日間の無料トライアル」が存在し、GuardDutyを有効化してから7日後以降は、「使用状況」画面から「過去30日間の使用量に基づいて、無料トライアル終了後の組織全体の推定コストが表示(画面より引用)」されます。
「使用状況」画面の「情報」をクリックすると、以下のような記載が確認できます。
使用コストの見積もりは、現在のリージョンの使用量のみを反映し、過去 7~30 日間の使用量に基づく平均値です。
使用日数が 7 日未満のアカウントの場合、コストは [保留中] と表示されます。無料トライアルの見積もりは、無料トライアル期間が終了した後の使用コストの予測を示します。

予算取りが必要なエンジニアにとってはうれしい親切機能ですね。
ここに表示される金額の細かい仕様について、上記の「過去 7~30 日間の使用量に基づく平均値」という言葉は、トライアル期間中は当てはまらない ということはあまり知られていないのではないでしょうか。
仕様
ここに表示される数値は、通常時は「過去 7~30 日間の使用量に基づく平均値」が表示されます。
しかし、トライアル期間の大半を含むGuardDuty使用日数が 30 日未満の場合は「使用された日数分のみの推定料金」が表示される仕様でした。
30日よりも早めに判断したい場合は、有効化日から現在までの日数を計算し、30日分になるように換算しなおす必要があります。
経緯
GuardDutyを委任したアカウントにて、組織(AWS Organizations)全体で有効化し、約10日が経過したタイミングでコストを確認しました。
コンソール上の「推定組織コスト」を「1ヶ月あたりの推定金額」として出したのですが、アカウント別にエクスポート(Guarddutyコンソール > 該当リージョン > 「使用状況」>「アカウント別」)した「1日当たりの平均値」の30倍の値と比較したところ、コンソールの表示額が自前計算の3分の1程度しかないことが判明します。
しかも1日経過後には、有効化したすべてのリージョンにて、前日に記録した金額よりも大きい金額が記載されていました。
結局ドキュメントを調べても仕様にたどり着けず、どんなロジックなのかAWSサポートへ問い合わせました。(いつもありがとうございます。)
GetUsageStatistics API
AWSサポートからの迅速かつ丁寧な回答で、原因が判明しました。 (いつもありがとうございます2)
まず、マネジメントコンソールの「推定組織コスト」表示の裏側では GetUsageStatistics というAPIが使われています。
このAPIのドキュメントによると、仕様は以下の通りです。
GetUsageStatistics API の仕様
For newly enabled detectors or data sources, the cost returned will include only the usage so far under 30 days.
(筆者訳:新しく有効化された検出器またはデータソースの場合、返されるコストには30日未満の使用状況のみが含まれます。)
参考:AWS SDK for Go v2 - GetUsageStatistics)
つまり、有効化後10日時点では「10日間の実績累計」が表示されているだけで、それが内部で平均化・30倍された「1か月分の推定」だと思い込んでしまうと、実際の予算は実はその3倍だった……というわけです。
無料トライアルは30日間なので、「高い場合は無料トライアル終了前に終了したい」という人にとっては注意が必要な仕様です。
試用期間中のコスト試算の方法
では、これから無料トライアル期間中に試算したいという場合はどうすべきか。
筆者は以下の方法で算出しました。
- 「アカウント別」に移動し、CSVをエクスポートする
マネジメントコンソールの「使用状況」からCSVを出します。(※アカウント別は委任アカウントで複数アカウントを選択しているときに出てきます。) - 手動で「1日平均 × 30」を計算する
APIの結果を鵜呑みにせず、累計コスト ÷ 稼働日数 で1日あたりの平均を出すなどして、それを自前で30倍しましょう。 CSVには「1 日あたりの合計平均コスト」も出るので、それを利用してもいいと思います。 - 30日間完走するまで油断しない
APIが「1か月分」を返してくれるのは、有効化から丸30日が経過した後です。
※なお、30日待ってから値が出たとしても、それはあくまで「推定値」ですので、ワークロードや使用状況が変化することで、変動する値であることは念頭に置く必要があります。有効化してからしばらくは特に、定期的なコスト確認をお勧めします。
まとめ
仕様を自分の都合のいいようにとらえず、きちんと数値で確認することが必要ですね。 APIドキュメントを丁寧に公開してくれているので、そちらも改めて読もうと思いました。
ブログが少しでもお役に立てれば幸いです。
垣見(かきみ)(執筆記事の一覧)
2023年新卒入社 エンタープライズクラウド部所属 2025 Japan AWS Jr.Champions
図解するのが好き。「サバワク」のアイキャッチ作成も担当しています