🐈

Amazon Bedrockのコストがざっくり日本円でいくらなのかCloudWatch Logsで確認する

に公開

この記事は

Bedrockのコスト計算をCloudWatchでできるようにまとめてみました。

事前準備

まず公式ドキュメントを参考にBedrockのログをCloudWatch Logsに出力する設定をします。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-invocation-logging.html#setup-cloudwatch-logs-destination

モデルの料金の確認

https://aws.amazon.com/jp/bedrock/pricing/

今回はClaude Sonnet 4を使っています。

CloudWatch Logs でログを確認

以下のようなフォーマットでログが出力されます。

{
  "timestamp": "2025-07-23T09:24:39Z",
  "accountId": "123456789012",
  "identity": {
    "arn": "arn:aws:iam::123456789012:user/sample-user"
  },
  "region": "ap-northeast-1",
  "requestId": "1ce30898-6835-4e22-a740-db3fb446e015",
  "operation": "InvokeModel",
  "modelId": "arn:aws:bedrock:ap-northeast-1:123456789012:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0",
  "input": {
    "inputContentType": "application/json",
    "inputBodyJson": {
      "anthropic_version": "bedrock-2023-05-31",
      "max_tokens": 4096,
      "messages": [
        {
          "role": "user",
          "content": "以下の商品データから価格が1000円以上のものを抽出してJSONで返してください。\n\n商品A: 800円\n商品B: 1200円\n商品C: 500円\n商品D: 1500円"
        }
      ]
    },
    "inputTokenCount": 504
  },
  "output": {
    "outputContentType": "application/json",
    "outputBodyJson": {
      "id": "msg_bdrk_01C9hM9t4tgJ7tLHS3JPN7hD",
      "type": "message",
      "role": "assistant",
      "model": "claude-sonnet-4-20250514",
      "content": [
        {
          "type": "text",
          "text": "{\n  \"products\": [\n    {\"name\": \"商品B\", \"price\": 1200},\n    {\"name\": \"商品D\", \"price\": 1500}\n  ]\n}"
        }
      ],
      "stop_reason": "end_turn",
      "stop_sequence": null,
      "usage": {
        "input_tokens": 504,
        "cache_creation_input_tokens": 0,
        "cache_read_input_tokens": 0,
        "output_tokens": 95
      }
    },
    "outputTokenCount": 95
  },
  "inferenceRegion": "ap-northeast-1",
  "schemaType": "ModelInvocationLog",
  "schemaVersion": "1.0"
}

CloudWatch Logs Insights を使ってコストを出す

ロググループを選択し、以下のクエリをCloudWatch Logs Insights で実行します。
今回はモデル単位で集計させたいのでby modelIdとしています。

filterをうまく使えば、operationやmodelIdでの絞り込みなども行えます。

fields
  @timestamp,
  modelId,
  operation,
  input.inputTokenCount as inputTokenCount,
  output.outputTokenCount as outputTokenCount,
  output.outputBodyJson.usage.cache_creation_input_tokens as cacheCreationInputTokens,
  output.outputBodyJson.usage.cache_read_input_tokens as cacheReadInputTokens
| filter inputTokenCount >= 1
| filter operation = 'InvokeModel'
| stats 
    sum(inputTokenCount) / 1000 * 0.003 * 150 as inputTokenCost,
    sum(outputTokenCount) / 1000 * 0.015 * 150 as outputTokenCost,
    sum(cacheCreationInputTokens) / 1000 * 0.00375 * 150 as cacheCreationInputTokenCost,
    sum(cacheReadInputTokens) / 1000 * 0.0003 * 150 as cacheReadInputTokenCost
by modelId

日本円での大体のコストが確認できます。

inputTokenCount を例とすると計算式は以下の通りになっています。

トークン数 / 1000トークン(料金表参照) * 0.003USD(料金表参照) * 150円(ざっくり1ドル)
SMARTCAMP Engineer Blog

Discussion