はじめに
みなさんはBedrockを使っていて、料金確認を翌日まで待った経験はあるだろうか。
自分はある。AIエージェントにブラウザツールを持たせて動かしていたら、トークン数が爆発していた。気づいたのは翌日のAWS請求ページを見てから...。
「もっと早く知れたら止められたのに」と思った。
実はBedrockはCloudWatchにトークン数をnear real-timeで出している。それを知ってからは、請求ページを待たずにその場で確認できるようになった。
この記事ではCloudWatchを使った確認方法を紹介する。
AWSの料金確認はなぜ遅いのか
AWSの請求ページやCost Explorerは、料金データが反映されるまで1〜2日かかる。当日分はその日には出てこない。
これはAWS全体の仕様で、Bedrockも例外ではない。トークンをどれだけ使ったかは、使った瞬間にはわからない...。
でも、Bedrockは別のルートでリアルタイムに近い形でトークン数を外に出している。
BedrockはCloudWatchにトークン数を出している
Bedrockは AWS/Bedrock というCloudWatchの名前空間に、モデル呼び出しのメトリクスをnear real-timeで送っている。
その中に InputTokenCount と OutputTokenCount がある。
InvokeModel・Converse どちらのAPI経由でも記録される。Strandsのようなフレームワークが内部でConverseを叩いていても問題ない!!
CloudWatchメトリクスで集計を確認する
設定不要。AWSコンソールだけで確認できる。
確認手順
-
AWSコンソールで CloudWatch を開く
統計は「合計(Sum)」で見る
ここで1つ罠がある。
デフォルトの統計が Average(1呼び出しあたりの平均トークン数)になっている。これのままだと全然違う数字が出てくる。
料金計算に使いたいのは期間の合計なので、必ず Sum (合計)に変更する。
変更場所はグラフ下のメトリクス一覧テーブルの 「統計」列。Average (平均)の文字をクリックすると Sum (合計)に変更できる。

期間(Period)の選び方
月間累計を確認したい場合
- 時間範囲を 月初〜今日 に設定
- Period を 30日 に設定
これでカレンダー月に沿ったバケットが作られ、データポイントが1点だけ表示される。その値が今月ここまでの合計トークン数だ!!
当日の使用量を確認したい場合
- 時間範囲を 今日 に設定
- Period を 1日 に設定
その日に使ったトークン数が1点で表示される。「今日どのくらい使ってるんだろう」と気になったときに手軽に確認できる。
クロスリージョン推論プロファイルを使っている場合の注意
東京リージョンでBedrockを使っている場合、ModelIdに jp. や global. のプレフィックスが付いているケースがある。これはクロスリージョン推論プロファイルで、プレフィックスによって単価が変わる。
| モデルIDのプレフィックス | 入力 | 出力 |
|---|---|---|
なし / global.
|
$1.00 / 1Mトークン | $5.00 / 1Mトークン |
jp. |
$1.10 / 1Mトークン | $5.50 / 1Mトークン |
jp. は日本国内でのデータ処理を保証する地域CRISで、グローバルより約10%割増になる。
CloudWatchのModelIdディメンションにこのプレフィックスが含まれるので、プレフィックスごとに単価を分けて計算する必要がある。
トークン数から料金を計算する
メトリクスで確認したトークン数から料金を計算する方法はこうなる。
料金(ドル) = global入力トークン数 / 1,000,000 × 1.00
+ global出力トークン数 / 1,000,000 × 5.00
+ jp入力トークン数 / 1,000,000 × 1.10
+ jp出力トークン数 / 1,000,000 × 5.50
実際に検証してみた
5/1〜5/26のトークン数をCloudWatchで取得して計算してみた。
| CloudWatchから算出 | Cost Explorerの実際の請求 | |
|---|---|---|
| Claude Haiku 4.5 | $0.966 | $0.97 |
誤差は約0.4%。CloudWatchの表示値が丸められているため(384,277トークンを384kと表示するなど)。料金感をつかむには十分な精度だと思う。
誤差がもっと小さくなる計算方法や見落としがあったらコメントで教えてもらえると嬉しい。
この方法の限界
アカウント内の全Bedrockの呼び出しが合計される。複数のアプリやエージェントを同時に動かしている場合、どれがどれだけ使ったかは区別できない...。
1つのエージェントだけ動かしているなら十分だと思う。
おわりに
AWS請求ページを1〜2日待たなくても、CloudWatchメトリクスを使えばBedrockのトークン使用量をほぼリアルタイムで確認できる。コードの変更も不要だ。
「エージェント単位でコードの中から監視したい」「ローカル開発中にも見たい」という場合は、Strandsのフックを使う方法が別途あるらしいので、今度調べてたいと思う。





