Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Bedrock のコスト内訳を気合でトラッキングする

Avatar for Hayato Kawai Hayato Kawai
February 18, 2026
47

Amazon Bedrock のコスト内訳を気合でトラッキングする

Japan Datadog User Group Meetup#15@東京 で話した資料です。
https://datadog-jp.connpass.com/event/378380/

Avatar for Hayato Kawai

Hayato Kawai

February 18, 2026
Tweet

Transcript

  1. Japan Datadog User Group Meetup #15 Amazon Bedrock の コスト内訳を気合で

    トラッキングする Feb.18 2026 - Hayato Kawai (@fohte) © 2026 Wantedly, Inc.
  2. 自己紹介 名前 Fohte ( ふぉーて) 川井 颯人 (Hayato Kawai) 所属

    • ウォンテッドリー株式会社 / Infra Squad • Japan Datadog User Group アカウント •  @fohte •  @fohte © 2026 Wantedly, Inc.
  3. 持ち帰ってほしいこと • Bedrock のコスト内訳は Datadog APM の手動計装 + Trace Metrics

    で追える ◦ ingestion も sampling される点に注意 • 正確性が必要なら Inference Profile と併用しよう © 2026 Wantedly, Inc.
  4. CONTENTS 01 Bedrock コスト監視のつらさ 02 Datadog APM で解決する 03 ハマりどころ:

    span の sampling 04 Inference Profile との使い分け © 2026 Wantedly, Inc.
  5. Bedrock のコスト監視のつらさ • ウォンテッドリーでは生成 AI をプロダクトに組み込む事例が増加し ている 昨年 11 月に採用候補者を探すための生成

    AI エージェントをリリース https://www.nikkei.com/nkd/company/article/?DisplayType=1&ng=DGKKZO92778390T21C25A1TB1000&scode=3991&ba=1 © 2026 Wantedly, Inc.
  6. 解決策: Inference Profile による分離 詳細は JAWS-UG 東京 ランチタイム LT 会

    #29 のスライドにて https://speakerdeck.com/fohte/bedrock-nokosutojian-shi-she-ji © 2026 Wantedly, Inc.
  7. Inference Profile による分離 • 用途ごとに Application Inference Profile を作成 ◦

    この inference profile に env , application のようなタグをつける • Cost Explorer 上でタグごとに分類する © 2026 Wantedly, Inc.
  8. Inference Profile の課題 • 作成するのがまあまあ大変 ◦ Terraform module を作ったものの、module は複雑怪奇に…

    • ひとつのアプリケーションの中でも機能ごとに inference profile を 作りたい ◦ 欲を言えば、どのメソッドから呼ばれているのかも知りたい • Cost Explorer はリアルタイム性がない ( 当日は反映されない) © 2026 Wantedly, Inc.
  9. アプローチ: Bedrock 呼び出しを全部計装する • Datadog::Tracing.trace で Bedrock API 呼び出しを計装 •

    span tag に必要な情報を詰め込む ◦ どの機能から呼び出されたか ( 例: feature:sourcing_ai ) ◦ input/output トークン数 ◦ モデル • ( 余談) dd-trace-rb に自動計装がなかった (Python はある) © 2026 Wantedly, Inc.
  10. 計装のイメージ (Ruby / dd-trace-rb) • Bedrock API 呼び出しを #trace で囲み、レスポンスから

    usage を 取得して tag に詰める Datadog::Tracing.trace("bedrock.converse") do |span| bedrock_client.converse(params).tap do |res| span.set_tag("feature", "sourcing_ai") span.set_tag("input_tokens", res.usage.input_tokens) span.set_tag("output_tokens", res.usage.output_tokens) end end © 2026 Wantedly, Inc.
  11. span から metrics 化 • Datadog APM は span から

    custom metrics を生成できる ◦ コスト分析に必要な情報は span tag から tag を設定 namespace / env / model / feature ごとに閲覧可能に © 2026 Wantedly, Inc.
  12. 前提: APM の trace pipeline • App → Agent →

    Datadog backend の流れで 2 段階ある ◦ Ingestion: Agent から backend への送信 ◦ Indexing: Retention Filter による保持 ( 検索・閲覧用) • 今回使った Span-based Metrics は Ingested Spans から生成され る ◦ → Ingestion で落ちた span からは metrics が作れない ( 詳細) https://docs.datadoghq.com/tracing/trace_pipeline/ © 2026 Wantedly, Inc.
  13. Span-based Metrics が実態と大きく乖離していた • Cost Explorer の実態と比較したところ、約 5% しか捕捉できていな かった

    ◦ 残りの 95% は Datadog に届く前に drop されていた • 原因: Datadog Agent の head-based sampling ◦ Datadog Agent のデフォルト: 10 traces/sec/Agent ◦ 手動計装した大部分が ingest 前に drop ◦ Span-based Metrics は Ingested Spans のみから生成される © 2026 Wantedly, Inc.
  14. 解決策: Single Span Sampling • head-based sampling で落とされた trace の中から、特定の

    span だけを個別に ingest する仕組み ◦ trace 全体ではなく span 単位で保持判定できる • → bedrock.converse だけを 100% ingest 可能 ◦ root span は保持されず、trace 全体の可視化はできない 実際のトレースの例 © 2026 Wantedly, Inc.
  15. 正確性 vs 柔軟性 Inference Profile Datadog APM (span) コストの正確性 100%

    ~90% ( ネットワーク不調等で欠損しうる) 粒度 Inference Profile 単位 ( 管理コストと粒度のトレードオフ) 機能・アクション単位 リアルタイム性 最大 24h 遅延 ほぼリアルタイム 運用コスト 作成・管理が大変 アプリ側で完結 © 2026 Wantedly, Inc.
  16. どう使い分けるか • 正確なコスト把握 → Inference Profile + Cost Explorer •

    機能単位の傾向分析・リアルタイム監視 → Datadog APM • 併用がベスト © 2026 Wantedly, Inc.
  17. まとめ • Bedrock のコスト内訳は Datadog APM の手動計装 + Trace Metrics

    で追える ◦ ingestion も sampling される点に注意 • 正確性が必要なら Inference Profile と併用しよう © 2026 Wantedly, Inc.