[アップデート] Amazon CloudWatch LogsがHTTPリクエスト経由でログを取り込めるようになりました

[アップデート] Amazon CloudWatch LogsがHTTPリクエスト経由でログを取り込めるようになりました

エンドポイントにHTTPリクエストを送るだけで、Amazon CloudWatch Logsのログを発行できるようになったぞ!
2026.03.18

はじめに

おのやんです。

何やら面白そうなアップデートが公開されました。Amazon CloudWatch(以下、CloudWatch) Logsで、HTTP経由のログ取り込みが可能になっています。

https://aws.amazon.com/jp/about-aws/whats-new/2026/03/cloudwatch-http-log-collector/

これまでCloudWatch Logsへのログ送信は、AWS SDKやCloudWatch Agent、Fluent Bit、FireLensなどのエージェントを利用する方法がメインでした。それが今回のアップデートにより、HTTPリクエストを送信するだけでCloudWatch Logsにログを取り込めるようになっています。

なお、OTLPエンドポイント(/v1/logs)自体は以前からSigV4認証で利用可能でした。CloudWatchのドキュメントとして、OTLPエンドポイントがSigV4認証で記載されています。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OTLPEndpoint.html

弊社でもOTLPエンドポイント経由でCloudWatch Logsにログを発行してみたブログが公開されていますので、合わせてご参照ください。

https://dev.classmethod.jp/articles/node-js-otlp-export-logs-and-trace-to-aws/

今回のアップデートでは、HLC、ND-JSON、Structured JSONの3つが追加され、OTLPエンドポイントを含む全エンドポイントで、Bearer Token認証が追加された形です。

これらを経緯を踏まえて、現在利用可能なエンドポイントがこちらです。

Log type Endpoint Content-Type Format
OpenTelemetry Logs(既存) https://logs.<region>.amazonaws.com/v1/logs application/json or application/x-protobuf OTLP JSON or Protobuf
HLC Logs(新規) https://logs.<region>.amazonaws.com/services/collector/event application/json HLC format
ND-JSON Logs(新規) https://logs.<region>.amazonaws.com/ingest/bulk application/json or application/x-ndjson Newline-delimited JSON
Structured JSON Logs(新規) https://logs.<region>.amazonaws.com/ingest/json application/json JSON object or array

HTTPエンドポイントでは、SigV4認証(IAMクレデンシャルを使用した従来のAWS認証)とBearer Token認証(サービス固有のAPIキーを使用した認証)の二つが利用可能です。

Bearer Token認証を使用する場合、CloudWatchの設定画面からAPIキーを生成します。APIキーの生成時は、CloudWatchの裏側で自動的にIAMユーザーが作成され、CloudWatchLogsAPIKeyAccessマネージドポリシーがアタッチされます。また、各ロググループで個別にbearer token認証を有効化する必要があります。

今回のアップデートで、HTTPリクエストのみでログを送信できるようになった一方で、従来のログ送信エージェントに備わっているようなリトライ処理などはアプリケーション側で実装する必要があります。ネットワークが切断した時のログ欠損リスクなどもあるため、要件に合わせて採用を検討したいところです。

本機能はバージニア(us-east-1)、オハイオ(us-east-2)、カリフォルニア(us-west-1)、オレゴン(us-west-2)でのみ利用可能です。

その他、HTTP Log Collectorに関する仕様はこちらのAWSドキュメントを参考にしてください。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HTTP_Endpoints.html

やってみた

ということで、実際にHTTP Log Collectorのエンドポイントにリクエストを送ってCloudWatch Logsのログを発行してみます。今回はバージニアリージョンのAWSアカウント上に、HLCとND-JSONのログを発行する形で検証します。

検証用のCloudWatch Logsロググループ(aws-test-log-group-cloudwatch-http-log-collector)と、CloudWatch Logsログストリーム(aws-test-log-stream-cloudwatch-http-log-collector)を作成します。

CloudWatch Logsのロググループとログストリームを作成

次に、CloudWatchコンソール左側のナビゲーションバーから「設定」に移動し、APIキーを作成します。

CloudWatchコンソール上でAPIキーを作成

今回は検証用なので、有効期限を1日に設定して作成します。

有効期限を1日に設定してAPIキーを作成

表示されたAPI Key名とシークレットをメモしておきます。

表示されたAPI Key名とシークレット

ちなみに、裏側ではIAMユーザーが作成されています。

作成されたIAMユーザー

次に、ロググループに対して「ベアラートークン認証の編集」をクリックします。

「ベアラートークン認証の編集」をクリック

「はい」を押します。

ベアラートークン認証を有効化

ベアラートークン認証が有効になりました。

ベアラートークン認証の有効化を確認

curlを使って、HLCエンドポイントにログを送信します。

$ curl -X POST \
  "https://logs.us-east-1.amazonaws.com/services/collector/event" \
  -H "Authorization: Bearer <API_KEY_SECRET>" \
  -H "Content-Type: application/json" \
  -H "x-aws-log-group: aws-test-log-group-cloudwatch-http-log-collector" \
  -H "x-aws-log-stream: aws-test-log-stream-cloudwatch-http-log-collector" \
  -d '{
    "time": 1773821998.413,
    "host": "test-server-01",
    "source": "/var/log/app.log",
    "event": {
      "level": "INFO",
      "message": "HTTP Log Collector test event",
      "request_id": "abc-123"
    }
  }'

 {}

CloudWatchログストリームにHLC形式のログが発行されました。

CloudWatchログストリームにHLC形式のログが発行された

次に、ND-JSON形式のログイベントを3個送信します。

$ curl -X POST \
  "https://logs.us-east-1.amazonaws.com/ingest/bulk" \
  -H "Authorization: Bearer <API_KEY_SECRET>" \
  -H "Content-Type: application/x-ndjson" \
  -H "x-aws-log-group: aws-test-log-group-cloudwatch-http-log-collector" \
  -H "x-aws-log-stream: aws-test-log-stream-cloudwatch-http-log-collector" \
  -d '{"timestamp": 1773822509381, "level": "INFO", "message": "ND-JSON test event 1"}
{"timestamp": 1773822510381, "level": "WARN", "message": "ND-JSON test event 2"}
{"timestamp": 1773822511381, "level": "ERROR", "message": "ND-JSON test event 3"}'

{}

CloudWatchログストリームにND-JSON形式のログが3個発行されました。

CloudWatchログストリームにND-JSON形式のログが3個発行された

まとめ

CloudWatch Logsで、HTTPリクエストを経由したログ取り込みが可能になりました。エージェントなしでログを取り込めるため、要件にもよりますが、HTTPリクエストで十分なケースではめちゃくちゃ便利ではないでしょうか。

一点、認証方式の選択について触れておきます。EC2インスタンスプロファイルやECSタスクロール、SSMハイブリッドアクティベーションなどが使える環境であれば、SigV4 + AWS認証で一時認証情報を利用するのがセキュアです。

一方で、AWS外の環境でSSMエージェントも導入しづらいケースでは、これまでIAMアクセスキーを払い出すしかありませんでした。IAMアクセスキーには有効期限がないため、漏洩時のリスクが大きくなりがちです。その点、今回のAPIキーは有効期限が組み込みで、スコープもCloudWatch Logsへの送信に限定されるため、漏洩時の被害を限定しやすいのが嬉しいです。

特にCloudWatch Logsのログ取り込み料金は予想外に高額になるケースがあるため、認証情報が漏れて大量のログを発行されて金銭被害に遭うなどないよう、要件に合った認証方式を選択したいですね。では!

この記事をシェアする

FacebookHatena blogX

関連記事