

# CloudWatch Logs のログ形式
<a name="sal-cw-log-format"></a>

Amazon S3 サーバーアクセスログが Amazon CloudWatch Logs に配信されると、各ログレコードは構造化された JSON オブジェクトになります。これは、Amazon S3 汎用バケットへの配信に使用されるスペース区切りのテキスト形式とは異なります。構造化された形式により、正規表現解析なしで CloudWatch Logs Insights でフィールドを直接クエリ可能になります。

**注記**  
汎用バケット配信に使用されるスペース区切りのテキスト形式については、「[Amazon S3 サーバーアクセスログの形式](LogFormat.md)」を参照してください。

## ログレコードフィールド
<a name="sal-cw-log-record-fields"></a>

次の表は、CloudWatch Logs に配信される各サーバーアクセスログレコードのフィールドを示しています。


**CloudWatch Logs のサーバーアクセスログフィールド**  

| フィールド | タイプ | 説明 | 
| --- | --- | --- | 
| schema\_version\_id | string | ログレコードスキーマのバージョン識別子 (例: V\_1\_0)。このフィールドを使用して、将来のバージョンで新しいフィールドが追加されたときのスキーマ変更を検出します。 | 
| bucket\_arn | string | ソースバケットの ARN。 | 
| bucket\_name | string | リクエストが行われたバケットの名前。バケット ARN から派生します。 | 
| request\_time | string | リクエストを受信した時刻 (UTC)。ISO 8601 (yyyy-MM-dd'T'HH:mm:ss.SSS'Z') としてフォーマットされます。S3 Tables 統合 (Iceberg) では、このフィールドは timestamptz として保存されます。 | 
| bucket\_owner\_id | string | ソースバケット所有者の正規ユーザー ID。 | 
| remote\_ip | string | リクエスタの表面上の IP アドレス。使用できない場合は、デフォルトで null になります。 | 
| requester | string | リクエスタの正規ユーザー ID。認証されていないリクエストの場合は null です。IAM ユーザーとロールの場合、これは ARN です。 | 
| request\_id | string | リクエストごとに Amazon S3 によって生成される一意の識別子。使用できない場合は、デフォルトで null になります。 | 
| operation | string | REST.GET.OBJECT や REST.PUT.OBJECT などの、実行されたオペレーション。使用できない場合は、デフォルトで null になります。 | 
| key\_name | string | リクエストのオブジェクトキー、またはオペレーションにオブジェクトが含まれていない場合は null。 | 
| request\_uri | string | HTTP リクエストメッセージの Request-URI 部分。使用できない場合は null。 | 
| http\_status | int | レスポンスの数値の HTTP ステータスコード (例: 200 または 403)。使用できない場合は、デフォルトで null になります。 | 
| error\_code | string | NoSuchKey または AccessDenied などの Amazon S3 エラーコード。エラーが発生しなかった場合は null。 | 
| bytes\_sent\_size | long | 送信されたレスポンスのバイト数 (HTTP プロトコルオーバーヘッドを除きます)。使用できない場合は、デフォルトで null になります。 | 
| object\_size | long | オブジェクトの合計サイズ。使用できない場合は、デフォルトで null になります。 | 
| total\_duration | long | リクエストが受信されてから送信されたレスポンスの最後のバイトまでのリクエストの合計時間 (ミリ秒単位)。使用できない場合は、デフォルトで null になります。 | 
| turn\_around\_duration | long | Amazon S3 がリクエストの処理にかかった時間 (ミリ秒単位)。これは、リクエストの最終バイトが受信されてから、レスポンスの先頭バイトが送信されるまでの時間を計測した値です。使用できない場合は、デフォルトで null になります。 | 
| referer | string | HTTP Referer ヘッダーの値 (存在しない場合は null)。 | 
| user\_agent | string | HTTP User-Agent ヘッダーの値。使用できない場合は、デフォルトで null になります。 | 
| version\_id | string | リクエストのバージョン ID。オペレーションにバージョニングされたオブジェクトが含まれていない場合は null。 | 
| host\_id | string | Amazon S3 拡張リクエスト ID (x-amz-id-2)。使用できない場合は、デフォルトで null になります。 | 
| signature\_version | string | リクエストの認証に使用される署名バージョン: SigV2 または SigV4。認証されていないリクエストの場合は、デフォルトで null になります。 | 
| cipher\_suite | string | HTTP リクエストのためにネゴシエートされた TLS 暗号スイート。HTTP の場合は null。 | 
| authentication\_type | string | リクエスト認証のタイプ: AuthHeader、QueryString、または null。 | 
| host\_header | string | Amazon S3 への接続に使用するエンドポイント。使用できない場合は、デフォルトで null になります。 | 
| tls\_version | string | クライアントによってネゴシエートされた TLS バージョン: TLSv1.1、TLSv1.2、TLSv1.3、または null。 | 
| access\_point\_arn | string | リクエストに使用されるアクセスポイントの ARN。リクエストがアクセスポイントを使用しなかった場合は null。 | 
| acl\_required | boolean | リクエストに ACL が必要だったかどうか。適用できない場合、デフォルトで null になります。 | 
| source\_region | string | リクエストの発信元の AWS リージョン。発信元のリージョンを特定できない場合 (PrivateLink 接続、Direct Connect 接続、Bring your own IP addresses (BYOIP)、非 AWS IP アドレスなど)、またはライフサイクルやチェックサムなど、お客様が設定したポリシーやアクションに基づいてトリガーされたオペレーションによってログが生成された場合は、null になります。 | 

## サンプルログレコード
<a name="sal-cw-sample-record"></a>

以下は、CloudWatch Logs に表示されるサーバーアクセスログレコードの例です。

```
{
  "schema_version_id": "V_1_0",
  "bucket_arn": "arn:aws:s3:::my-data-bucket",
  "bucket_name": "my-data-bucket",
  "request_time": "2026-04-29T14:32:16.000Z",
  "bucket_owner_id": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be",
  "remote_ip": "203.0.113.45",
  "requester": "arn:aws:iam::123456789012:role/DataAnalystRole",
  "request_id": "3E57427F33A59F07",
  "operation": "REST.GET.OBJECT",
  "key_name": "reports/2026/quarterly-summary.parquet",
  "request_uri": "GET /my-data-bucket/reports/2026/quarterly-summary.parquet HTTP/1.1",
  "http_status": 200,
  "error_code": null,
  "bytes_sent_size": 1048576,
  "object_size": 1048576,
  "total_duration": 45,
  "turn_around_duration": 12,
  "referer": null,
  "user_agent": "aws-sdk-java/2.20.0",
  "version_id": null,
  "host_id": "s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=",
  "signature_version": "SigV4",
  "cipher_suite": "TLS_AES_128_GCM_SHA256",
  "authentication_type": "AuthHeader",
  "host_header": "my-data-bucket.s3.us-east-1.amazonaws.com",
  "tls_version": "TLSv1.3",
  "access_point_arn": null,
  "acl_required": false,
  "source_region": "us-east-1"
}
```

## 汎用バケットログ形式との違い
<a name="sal-cw-format-differences"></a>

CloudWatch Logs ログ形式は、次の点で汎用バケットログ形式とは異なります。
+ **形式** – CloudWatch Logs ログは構造化された JSON オブジェクトです。汎用バケットログはスペース区切りのテキストです。
+ **フィールド名** – CloudWatch Logs 形式では、記述的なアンダースコア区切りのフィールド名 (`bytes_sent_size`、`total_duration`、`key_name`、`authentication_type` など) を使用します。汎用バケット形式は、名前付きの列がないスペース区切りテキストです。
+ **追加フィールド** – CloudWatch Logs 形式には、汎用バケットテキスト形式では存在しない `schema_version_id` と `bucket_arn` が含まれます。
+ **解析は不要** – CloudWatch Logs ログは構造化された JSON であるため、正規表現解析なしで CloudWatch Logs Insights で個々のフィールドを直接クエリできます。汎用バケットテキスト形式には、フィールドを抽出するための正規表現またはカスタムパーサーが必要です。