構造化 JSON エンドポイントを使用したログの送信 (構造化 JSON ログ) - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

構造化 JSON エンドポイントを使用したログの送信 (構造化 JSON ログ)

構造化 JSON ログエンドポイント (/ingest/json) は、単一の JSON オブジェクトまたはオブジェクトの JSON 配列の標準 JSON を受け入れます。このエンドポイントは、各イベントが JSON オブジェクトである構造化ログデータ用に設計されています。

ベアラートークン認証を使用している場合は、続行するベアラートークン認証の設定前に のセットアップステップを完了してください。

リクエストの形式

Content-Type としてのみapplication/json受け入れられます。

単一の JSON オブジェクト:

{"timestamp":1771007942000,"message":"single event","level":"INFO"}

オブジェクトの JSON 配列:

[ {"timestamp":1771007942000,"message":"event one","level":"INFO"}, {"timestamp":1771007943000,"message":"event two","level":"ERROR"} ]

許容される JSON 値タイプ

このエンドポイントは厳密です。JSON オブジェクトのみがイベントとして受け入れられます。

Input 行動
単一の JSON オブジェクト 1 つのイベントとして受け入れられました
オブジェクトの JSON 配列 各オブジェクトが個別のイベントになる
空の配列 [] 受け入れられ、0 個のイベントが生成されます
配列内のオブジェクト以外 (文字列、数値など) スキップ済み
最上位プリミティブ ("hello"42) スキップ済み
連結オブジェクト {...}{...} 解析された最初のオブジェクトのみ

例 – 混合型を持つ配列:

[ {"timestamp":1771007942000,"message":"valid object"}, "just a string", 42, {"timestamp":1771007943000,"message":"another valid object"} ]

結果: 取り込まれた 2 つのイベント ( オブジェクト)、スキップされた 2 つのイベント (文字列と数値)。

タイムスタンプフィールド

"timestamp" フィールドは、NDJSON エンドポイントと同じエポックミリ秒単位です。

形式 次のように解釈されます
数値 (ミリ秒) "timestamp":1771007942000 1771007942000 ミリ秒
Missing (見つからない) (タイムスタンプフィールドなし) サーバーの現在の時刻
数値以外 "timestamp":"invalid" サーバーの現在の時刻

リクエスト例

curl -X POST "https://logs.<region>.amazonaws.com/ingest/json?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/json" \ -d '[{"timestamp":1771007942000,"message":"User logged in","user_id":"u-123"},{"timestamp":1771007943000,"message":"Order placed","order_id":"o-456"}]'

レスポンス

Success (すべてのイベントが受け入れられる):

HTTP 200 OK {}

部分的な成功 (一部のイベントが拒否):

{ "partialSuccess": { "rejectedLogRecords": 5, "errorMessage": "{\"tooOldLogEventCount\": 3, \"tooNewLogEventCount\": 1, \"expiredLogEventCount\": 1}" } }

rejectedLogRecords フィールドは、拒否されたイベントの総数です。errorMessage フィールドには、拒否理由別の JSON エンコードされた内訳が含まれます。

  • tooOldLogEventCount – タイムスタンプが保持期間より古いイベント

  • tooNewLogEventCount – タイムスタンプが遠すぎるイベント

  • expiredLogEventCount – 処理中に期限切れになったイベント

ベストプラクティス

イベントのバッチ処理

パフォーマンスと効率を向上させるには:

  • 可能であれば、1 つのリクエストで複数のイベントをバッチ処理する

  • 推奨バッチサイズ: リクエストあたり 10~100 イベント

  • 最大リクエストサイズ: 1 MB

エラー処理

アプリケーションに適切なエラー処理を実装します。一般的な HTTP ステータスコード:

  • 200 OK – 正常に取り込まれたログ

  • 400 Bad Request – 無効なリクエスト形式またはパラメータ

  • 401 Unauthorized — 無効または期限切れのベアラートークン

  • 403 Forbidden – アクセス許可が不十分

  • 404 Not Found – ロググループまたはストリームが存在しません

  • 429 Too Many Requests – レート制限を超えました

  • 500 Internal Server Error – サービスエラー (エクスポネンシャルバックオフで再試行)

制限事項

  • 最大イベントサイズ: イベントあたり 256 KB

  • 最大リクエストサイズ: 1 MB

  • リクエストあたりの最大イベント数: 10,000

  • ロググループ名は CloudWatch Logs の命名規則に従う必要があります

  • ベアラートークン認証を使用する場合は、ロググループでベアラートークン認証を有効にする必要があります。