
Claude Code/CoworkのOpenTelemetryログをCloudWatch Logsにコレクター無しに送信してみた
Claude CodeとClaude Coworkはクライアント端末で実行され、OpenTelemetry(OTel)によるテレメトリデータの送信に対応し、Bearerトークン認証に制約されます。
CloudWatch Logs HTTP Endpoints for OTLPを用い、コレクターを使用せずに、OTelログを低コスト、かつ、サーバーレスにCloudWatch Logsに送信する方法を紹介します。

AWSにOTelテレメトリデータを送信したい!
CloudWatchにはOTLP(OpenTelemetry Protocol)を受け付けるエンドポイントがあり、コレクターを介さずにテレメトリデータを直接送信できます。
直近でも、以下のような大きなアップデートがありました
- 2026/03/16 : OTelログがHTTPをサポート。SigV4認証だけでなく、Bearer Token認証にも対応
- 2026/04/03 : OTelメトリクスがHTTPをプレビューサポート。OTelの階層的なデータ構造やPromQLのクエリにも対応
本記事で紹介するアプローチは、この3月のアップデートを活かしてコレクターレスにOTelログをBearer Token認証で送信するというものです。
やってみた:AWS側の準備
Claude Code/CoworkからCloudWatch OTLPエンドポイントにOTelログを実際に送信します。
AWS側では以下の2つの対応が必要です
- IAMユーザーにCloudWatch Logs向けのAPIキーを発行
- CloudWatch LogsのロググループにBearer Token認証を有効化
1. IAMユーザーにCloudWatch Logs向けのAPIキーを発行
IAM ユーザーを作成し、CloudWatch Logsへの書き込み権限を付与します。
このユーザーに対して、Security credentials→API keysからCloudWatch Logs向けのAPIキーを発行します。

2. CloudWatch LogsのロググループにBearer Token認証を有効化
CloudWatch Logs HTTP Endpoints for OTLP は 2026/04/17 時点で以下のリージョンで利用可能です。
米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、米国東部 (オハイオ)。特に、東京リージョンでは対応していません。
今回は、米国東部 (バージニア北部)リージョンを利用しました。
CloudWatch Logsのロググループ、及び、ログストリームを作成します。
次に、作成したロググループに対して、Actionsメニューから Bearer Tokenを有効化します。

やってみた:Claude Coworkからの送信
OTel 設定
Claude CoworkのEnterprise/Teamプランでは、OTelの送信先を組織管理画面から設定できます。
セッション開始時に、この設定を取得します。
組織設定→Cowork→モニタリングと移動します。

以下の内容を入力します。
- OTLP endpoint
- 例:
https://logs.リージョン.amazonaws.com - CloudWatch Logs のリージョンごとのエンドポイントです
- URIパス(
/v1/logs)は不要です。
- 例:
- OTLP protocol
- 例:
http/protobuf - プロトコルを選択します。
- 例:
- OTLP headers
- 例:
Authorization=Bearer xxx,x-aws-log-group=/claude/otel,x-aws-log-stream=code - 少し注意が必要です。トークンとCloudWatch Logsの情報を「,」区切りで「Key=Value」形式で入力します。
- Authorization :
Bearer <ServiceCredentialSecret>※ ServiceCredentialSecret はIAMユーザーに発行したAPIキー - x-aws-log-group : CloudWatch Logsロググループ名
- x-aws-log-stream : CloudWatch Logsログストリーム名
- 例:
参考
ドメイン制御
CoworkからAWSへのAPI通信を許可します。
機能→追加の許可ドメインからOTelテレメトリー送信先の *.amazonaws.com への通信を許可します。

CloudWatch Logsの確認
ログストリームには、以下のようなOTelログが記録されます。
{
"resource": {
"attributes": {
"host.arch": "arm64",
"os.type": "darwin",
"service.name": "cowork",
"service.version": "1.2581.0"
}
},
"scope": {
"name": "com.anthropic.claude_code.events"
},
"body": "claude_code.user_prompt",
"attributes": {
"user.email": "xxx@example.com",
"prompt": "あなたの名前は?",
"session.id": "xxxxxx-..."
}
}
やってみた:Claude Codeからの送信
OTel 設定
Claude Code は設定情報(ポリシー)をクライアント端末で保持し、Claude Code CLI起動時に環境変数経由でOTel設定を渡します。
この設定ファイルは、MDMや組織管理(server-managed-settings)で中央管理することも、ユーザーが個別に設定する(~/.claude/settings.json等)こともできます。
参考
設定例
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_ENDPOINT": "https://logs.リージョン.amazonaws.com",
"OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer xxx,x-aws-log-group=/claude/otel,x-aws-log-stream=code"
},
...
以下の内容を入力します。
CLAUDE_CODE_ENABLE_TELEMETRY- 例:
1 - Claude Code のテレメトリ送信(ログ、メトリクス等)を有効化するためのフラグです。
1で有効になります。
- 例:
OTEL_LOGS_EXPORTER- 例:
otlp
- 例:
OTEL_EXPORTER_OTLP_PROTOCOL- 例:
http/protobuf
- 例:
OTEL_EXPORTER_OTLP_ENDPOINT- 例:
https://logs.リージョン.amazonaws.com - 送信先となる AWS CloudWatch Logs のリージョン別エンドポイントです。末尾のパス(
/v1/logs)を含めないように注意してください。
- 例:
OTEL_EXPORTER_OTLP_HEADERS- 例:
Authorization=Bearer xxx,x-aws-log-group=/claude/otel,x-aws-log-stream=code - Coworkと同じ仕様です。
- 例:
CloudWatch Logsの確認
{
"resource": {
"attributes": {
"host.arch": "arm64",
"os.type": "darwin",
"service.name": "claude-code",
"service.version": "2.1.92"
}
},
"scope": {
"name": "com.anthropic.claude_code.events"
},
"body": "claude_code.api_request",
"attributes": {
"cost_usd": "0.012381900000000001",
"model": "claude-haiku-4-5-20251001",
"input_tokens": "14",
"output_tokens": "841",
"cache_read_tokens": "75654",
"duration_ms": "9390",
"user.email": "xxx@example.com",
"session.id": "786b88d7-..."
}
}
CloudWatch OTLP Endpointの注意事項
リージョン制限
CloudWatch Logs HTTP Endpoints for OTLPのBearer認証は、2026年3月GA時点でUS 4リージョンのみ対応しています。
- us-east-1 (N. Virginia)
- us-east-2 (Ohio)
- us-west-1 (N. California)
- us-west-2 (Oregon)
東京リージョン(ap-northeast-1)では利用できません。
OTelメトリクスはBearer Token未対応
ログは Bearer Tokenに対応していますが、メトリクスはまだ対応していません。
メトリクス相当のデータが必要な場合、以下の様な対応が考えられます
- OTelログを集計
- Admin Analytics APIを利用
料金モデル
CloudWatch Logs OTLPエンドポイントの利用では、通常のCloudWatch Logsと同じく、取り込み(DataProcessing-)、保存(TimeStorage-)課金が適用されます。
クライアント端末向けデバッグ SKILL
以下のようなSKILLをクライアント環境にインストールします。
---
name: printenv-otel
description: 環境変数からOTEL_を含むものをダンプして一覧表示する。/printenv_otel で呼び出す。Claude Code/Cowork環境でOpenTelemetry関連の設定確認に使用。OTel環境変数の確認、OTEL設定の一覧、テレメトリ設定のチェックなどに対応。
---
# printenv_otel
現在のセッションの環境変数から `OTEL_` を含むものを抽出し、一覧表示する。
## 手順
1. Bashツールで `printenv | grep OTEL_` を実行する(大文字小文字を区別する)
2. 結果をマークダウンテーブルで表示する
| 変数名 | 値 |
|--------|-----|
| OTEL_EXPORTER_OTLP_ENDPOINT | http://localhost:4318 |
| OTEL_LOGS_EXPORTER | otlp |
3. `OTEL_` を含む環境変数が1つも見つからなかった場合は「OTEL_ を含む環境変数は設定されていません」と伝える
## 注意
- `printenv` の出力をそのまま使い、値の加工や省略はしない
- 値にトークンやキーが含まれる可能性があるため、マスキングはしないが、ユーザーが共有時に注意するよう一言添える
SKILLを明示的に実行しています
CLAUDE_SHELL > /printenv-otel
⏺ Bash(printenv | grep OTEL_)
⎿ OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
… +4 lines (ctrl+o to expand)
⏺ ┌─────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 変数名 │ 値 │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_METRICS_EXPORTER │ otlp │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_LOGS_EXPORTER │ otlp │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_EXPORTER_OTLP_PROTOCOL │ http/protobuf │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_EXPORTER_OTLP_ENDPOINT │ https://logs.us-east-1.amazonaws.com │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_EXPORTER_OTLP_HEADERS │ Authorization=Bearer XXXX,x-aws-log-group=/claude/otel,x-aws-log-stream=claude │
├─────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ OTEL_EXPORTER_OTLP_METRICS_TEMP │ delta │
│ ORALITY_PREFERENCE │ │
└─────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
OTEL_EXPORTER_OTLP_HEADERS にBearerトークンが含まれています。外部共有時はご注意ください。
最後に
CloudWatch Logs HTTP Endpoints for OTLPを用いて、Claude Code/CoworkのOpenTelemetryログをAWSに送信する方法を紹介しました。
Claude Code/CoworkはBearer Token認証のみ対応しているという制約に対して、ECS等でOTel Collectorを用意したり、Grafanaのような大掛かりなOTelソリューションを用意することなく、シンプルかつ低コストに運用できます。クライアントに対して、AWS CLIなどAWSを意識した追加のセットアップも不要です。
ただし、以下の制限にはご注意ください
- CloudWatch Logs OTLPエンドポイントは、2026年4月時点でUSリージョンのみ対応。東京リージョンでは利用できない
- OTelテレメトリーでログはBearer Token対応だが、メトリクスはBearer Token未対応








