

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

# 構造化 JSON エンドポイントを使用したログの送信 (構造化 JSON ログ)
<a name="CWL_HTTP_Endpoints_StructuredJSON"></a>

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

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

## リクエストの形式
<a name="CWL_StructuredJSON_Format"></a>

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 値タイプ
<a name="CWL_StructuredJSON_Accepted_Types"></a>

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


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

**例 – 混合型を持つ配列:**

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

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

## タイムスタンプフィールド
<a name="CWL_StructuredJSON_Timestamp"></a>

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


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

## リクエスト例
<a name="CWL_StructuredJSON_Example"></a>

```
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"}]'
```

## レスポンス
<a name="CWL_StructuredJSON_Responses"></a>

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

```
HTTP 200 OK
{}
```

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

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

`rejectedLogRecords` フィールドは、拒否されたイベントの総数です。`errorMessage` フィールドには、拒否理由別の JSON エンコードされた内訳が含まれます。
+ `tooOldLogEventCount` – タイムスタンプが保持期間より古いイベント
+ `tooNewLogEventCount` – タイムスタンプが遠すぎるイベント
+ `expiredLogEventCount` – 処理中に期限切れになったイベント

## ベストプラクティス
<a name="CWL_StructuredJSON_Best_Practices"></a>

### イベントのバッチ処理
<a name="CWL_StructuredJSON_Batching"></a>

パフォーマンスと効率を向上させるには:
+ 可能であれば、1 つのリクエストで複数のイベントをバッチ処理する
+ 推奨バッチサイズ: リクエストあたり 10～100 イベント
+ 最大リクエストサイズ: 1 MB

### エラー処理
<a name="CWL_StructuredJSON_Error_Handling"></a>

アプリケーションに適切なエラー処理を実装します。一般的な HTTP ステータスコード:
+ `200 OK` – 正常に取り込まれたログ
+ `400 Bad Request` – 無効なリクエスト形式またはパラメータ
+ `401 Unauthorized` — 無効または期限切れのベアラートークン
+ `403 Forbidden` – アクセス許可が不十分
+ `404 Not Found` – ロググループまたはストリームが存在しません
+ `429 Too Many Requests` – レート制限を超えました
+ `500 Internal Server Error` – サービスエラー (エクスポネンシャルバックオフで再試行)

## 制限事項
<a name="CWL_StructuredJSON_Limitations"></a>
+ 最大イベントサイズ: イベントあたり 256 KB
+ 最大リクエストサイズ: 1 MB
+ リクエストあたりの最大イベント数: 10,000
+ ロググループ名は CloudWatch Logs の命名規則に従う必要があります
+ ベアラートークン認証を使用する場合は、ロググループでベアラートークン認証を有効にする必要があります。