Amazon S3 サーバーアクセスログの形式 - Amazon Simple Storage Service

Amazon S3 サーバーアクセスログの形式

サーバーアクセスのログには、Amazon S3 バケットに対するリクエストの詳細が記録されます。サーバーアクセスログは次の目的で使用できます。

  • セキュリティ監査とアクセス監査の実施

  • 顧客ベースについて学ぶ

  • Amazon S3 の請求書を理解する

このセクションでは、Amazon S3 サーバーアクセスログファイルの形式およびその他の詳細について説明します。

サーバーアクセスのログファイルは、一連のログレコードを改行で区切って構成します。各ログレコードは 1 個のリクエストを表し、各フィールドをスペースで区切って構成します。

次に示すのは、5 個のログレコードで構成されるログの例です。

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /DOC-EXAMPLE-BUCKET1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /DOC-EXAMPLE-BUCKET1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /DOC-EXAMPLE-BUCKET1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /DOC-EXAMPLE-BUCKET1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /DOC-EXAMPLE-BUCKET1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes
注記

任意のフィールドを - に設定して、データが不明または使用不可であること、またはフィールドがこのリクエストに適用されなかったことを示すことができます。

ログレコードフィールド

次のリストは、ログレコードのフィールドについて説明しています。

Bucket Owner

ソースバケット所有者の正規ユーザー ID。正規ユーザー ID は、別の形式の AWS アカウント ID です。正規ユーザー ID の詳細については、AWS 全般のリファレンス の「AWS アカウント IDID」を参照してください。アカウントの正規ユーザー ID を検索する方法については、AWS アカウントの正規ユーザー ID を検索するには を参照してください。

エントリ例

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
バケット

リクエストの処理ターゲットのバケットの名前。システムで受け取ったリクエストの形式に誤りがあり、バケットを特定できない場合、そのリクエストはサーバーアクセスログに表示されません。

エントリ例

DOC-EXAMPLE-BUCKET1
時間

リクエストが受信された時間。これらの日付と時刻は協定世界時 (UTC) です。strftime() terminology を使用した形式は次のようになります: [%d/%b/%Y:%H:%M:%S %z]

エントリ例

[06/Feb/2019:00:00:38 +0000]
リモート IP

リクエスタの表面上の IP アドレス。中間プロキシやファイアウォールにより、リクエストを作成したマシンの実際の IP アドレスが不明確になる場合があります。

エントリ例

192.0.2.3
リクエスタ

リクエスタの正規ユーザー ID。認証されていないリクエストの場合は - です。リクエスタが IAM ユーザーであった場合、このフィールドは、リクエスタの IAM ユーザー名と IAM ユーザーが属する AWS アカウントのルートユーザーを返します。この識別子は、アクセスコントロールに使用されるものと同じです。

エントリ例

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
リクエスト ID

各リクエストを一意に識別するために Amazon S3 で生成される文字列。

エントリ例

3E57427F33A59F07
オペレーション

ここに表示されているオペレーションは、SOAP.operationREST.HTTP_method.resource_typeWEBSITE.HTTP_method.resource_type または BATCH.DELETE.OBJECT、または ライフサイクルとログ記録S3.action.resource_type として宣言されます。

エントリ例

REST.PUT.OBJECT
キー

リクエストのキー (オブジェクト名) 部分。

エントリ例

/photos/2019/08/puppy.jpg
Request-URI

HTTP リクエストメッセージの Request-URI の部分。

エントリ例

"GET /DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
HTTP ステータス

レスポンスの HTTP ステータスの数値。

エントリ例

200
エラーコード

Amazon S3 エラーコード、またはエラーが発生しなかった場合は「-」。

エントリ例

NoSuchBucket
送信バイト数

送信されたレスポンスのバイト数 (HTTP プロトコルオーバーヘッドを除きます)。ゼロの場合は「-」。

エントリ例

2662992
オブジェクトのサイズ

該当するオブジェクトの合計サイズ。

エントリ例

3462992
合計時間

サーバーから見た、リクエストの転送中の時間数 (ミリ秒単位)。これは、リクエストが受信されてから、レスポンスの最終バイトが送信されるまでの時間を計測した値です。クライアント側での計測値は、ネットワーク遅延により長くなる場合があります。

エントリ例

70
Turn−Around Time

Amazon S3 でリクエストの処理に要した時間数 (ミリ秒単位)。これは、リクエストの最終バイトが受信されてから、レスポンスの先頭バイトが送信されるまでの時間を計測した値です。

エントリ例

10
Referer

HTTP Referer ヘッダーの値 (存在する場合)。一般に、HTTP ユーザーエージェント (ブラウザなど) は、このヘッダーをリクエスト作成時のリンクページや埋め込みページの URL に設定します。

エントリ例

"http://www.example.com/webservices"
User-Agent

HTTP User-Agent ヘッダーの値

エントリ例

"curl/7.15.1"
バージョン ID

リクエストのバージョン ID、または オペレーションが versionId パラメータを取らない場合は「-」。

エントリ例

3HL4kqtJvjVBH40Nrjfkd
ホスト ID

x-amz-id-2 または Amazon S3 拡張リクエスト ID。

エントリ例

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
署名バージョン

署名バージョン SigV2SigV4 (リクエストの認証に使用)、または - (認証されていないリクエストの場合)。

エントリ例

SigV2
暗号スイート

HTTPS リクエストまたは HTTP の - に対してネゴシエートされた Secure Sockets Layer (SSL) 暗号。

エントリ例

ECDHE-RSA-AES128-GCM-SHA256
認証タイプ

使用されるリクエスト認証のタイプ。認証ヘッダーは AuthHeader、クエリ文字列 (署名付き URL) は QueryString、認証されていないリクエストには「-」。

エントリ例

AuthHeader
ホストヘッダー

Amazon S3 への接続に使用するエンドポイント。

エントリ例

s3.us-west-2.amazonaws.com

一部の古いリージョンでは、レガシーエンドポイントがサポートされています。これらのエンドポイントは、サーバーアクセスログまたは AWS CloudTrail ログに表示される場合があります。詳細については、「レガシーエンドポイント」を参照してください。Amazon S3 リージョンとエンドポイントの完全なリストについては、Amazon Web Services 全般のリファレンス の「Amazon S3 エンドポイントとクォータ」を参照してください。

TLS のバージョン

クライアントによってネゴシエートされた Transport Layer Security (TLS) バージョン。値は TLSv1.1TLSv1.2TLSv1.3- のいずれかです (TLS を使用しなかった場合)。

エントリ例

TLSv1.2
アクセスポイント ARN

リクエストのアクセスポイントの Amazon リソースネーム (ARN) です。アクセスポイントの ARN の形式が不正、または使用されていない場合、このフィールドには「-」が含まれます。アクセスポイントの詳細については、アクセスポイントの使用 を参照してください。ARN の詳細については、「AWS リファレンスガイド」の「Amazon リソースネーム (ARN)」を参照してください。

エントリ例

arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
aclRequired

リクエストの承認のためにアクセスコントロールリスト (ACL) が必要かどうかを示す文字列。リクエストに承認用の ACL が必要な場合、文字列は「Yes」です。ACL が必要なかった場合、文字列は「-」です。ACL の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。aclRequired フィールドを使用して ACL を無効にする方法の詳細については、オブジェクトの所有権の制御とバケットの ACL の無効化。 を参照してください。

エントリ例

Yes

コピーオペレーションの追加ログ記録

コピーオペレーションには GETPUT が含まれます。このため、コピーオペレーションの実行時には 2 つのログレコードが記録されます。前述のセクションでは、コピーオペレーションの PUT 部分に関連するフィールドを説明しています。次のリストでは、コピーオペレーションの GET 部分に関連するフィールドを説明します。

バケット所有者

コピーされたオブジェクトを格納するバケットの正規ユーザー ID。正規ユーザー ID は、別の形式の AWS アカウント ID です。正規ユーザー ID の詳細については、AWS 全般のリファレンス の「AWS アカウント IDID」を参照してください。アカウントの正規ユーザー ID を検索する方法については、AWS アカウントの正規ユーザー ID を検索するには を参照してください。

エントリ例

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
バケット

コピー対象オブジェクトのオブジェクトを格納するバケットの名前。

エントリ例

DOC-EXAMPLE-BUCKET1
時間

リクエストが受信された時間。これらの日付と時刻は協定世界時 (UTC) です。strftime() terminology を使用した形式は次のようになります: [%d/%B/%Y:%H:%M:%S %z]

エントリ例

[06/Feb/2019:00:00:38 +0000]
リモート IP

リクエスタの表面上の IP アドレス。中間プロキシやファイアウォールにより、リクエストを作成したマシンの実際の IP アドレスが不明確になる場合があります。

エントリ例

192.0.2.3
リクエスタ

リクエスタの正規ユーザー ID。認証されていないリクエストの場合は - です。リクエスタが IAM ユーザーであった場合、このフィールドは、リクエスタの IAM ユーザー名と IAM ユーザーが属する AWS アカウントのルートユーザーを返します。この識別子は、アクセスコントロールに使用されるものと同じです。

エントリ例

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
リクエスト ID

各リクエストを一意に識別するために Amazon S3 で生成される文字列。

エントリ例

3E57427F33A59F07
操作

ここに表示されているオペレーションは、SOAP.operationREST.HTTP_method.resource_typeWEBSITE.HTTP_method.resource_type または BATCH.DELETE.OBJECT と表示されます。

エントリ例

REST.COPY.OBJECT_GET
キー

コピー対象オブジェクトのキー (オブジェクト名) 部分。オペレーションがキーパラメータを取らない場合は「-」。

エントリ例

/photos/2019/08/puppy.jpg
Request-URI

HTTP リクエストメッセージの Request-URI の部分。

エントリ例

"GET /DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg?x-foo=bar"
HTTP ステータス

コピーオペレーションの GET 部分の HTTP ステータスの数値。

エントリ例

200
エラーコード

コピーオペレーションの GET 部分の Amazon S3 エラーコード、またはエラーがない場合は「-」。

エントリ例

NoSuchBucket
送信バイト数

送信されたレスポンスのバイト数 (HTTP プロトコルオーバーヘッドを除く)。ゼロの場合は「-」。

エントリ例

2662992
オブジェクトのサイズ

該当するオブジェクトの合計サイズ。

エントリ例

3462992
合計時間

サーバーから見た、リクエストの転送中の時間数 (ミリ秒単位)。これは、リクエストが受信されてから、レスポンスの最終バイトが送信されるまでの時間を計測した値です。クライアント側での計測値は、ネットワーク遅延により長くなる場合があります。

エントリ例

70
Turn−Around Time

Amazon S3 でリクエストの処理に要した時間数 (ミリ秒単位)。これは、リクエストの最終バイトが受信されてから、レスポンスの先頭バイトが送信されるまでの時間を計測した値です。

エントリ例

10
Referer

HTTP Referer ヘッダーの値 (存在する場合)。一般に、HTTP ユーザーエージェント (ブラウザなど) は、このヘッダーをリクエスト作成時のリンクページや埋め込みページの URL に設定します。

エントリ例

"http://www.example.com/webservices"
User-Agent

HTTP User-Agent ヘッダーの値

エントリ例

"curl/7.15.1"
バージョン ID

コピー対象オブジェクトのバージョン ID、または x-amz-copy-source ヘッダーでコピー元の一部として versionId パラメータを指定しなかった場合は「-」。

エントリ例

3HL4kqtJvjVBH40Nrjfkd
ホスト ID

x-amz-id-2 または Amazon S3 拡張リクエスト ID。

エントリ例

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
署名バージョン

Signature Version、SigV2SigV4 (リクエストの認証に使用)、または - (認証されていないリクエストの場合)。

エントリ例

SigV4
暗号スイート

HTTPS リクエストまたは HTTP の - に対してネゴシエートされた Secure Sockets Layer (SSL) 暗号。

エントリ例

ECDHE-RSA-AES128-GCM-SHA256
認証タイプ

使用されるリクエスト認証のタイプ。認証ヘッダーは AuthHeader、クエリ文字列 (署名付き URL) は QueryString、認証されていないリクエストには「-」。

エントリ例

AuthHeader
ホストヘッダー

Amazon S3 への接続に使用するエンドポイント。

エントリ例

s3.us-west-2.amazonaws.com

一部の古いリージョンでは、レガシーエンドポイントがサポートされています。これらのエンドポイントは、サーバーアクセスログまたは AWS CloudTrail ログに表示される場合があります。詳細については、「レガシーエンドポイント」を参照してください。Amazon S3 リージョンとエンドポイントの完全なリストについては、Amazon Web Services 全般のリファレンス の「Amazon S3 エンドポイントとクォータ」を参照してください。

TLS のバージョン

クライアントによってネゴシエートされた Transport Layer Security (TLS) バージョン。値は TLSv1.1TLSv1.2TLSv1.3- のいずれかです (TLS を使用しなかった場合)。

エントリ例

TLSv1.2
アクセスポイント ARN

リクエストのアクセスポイントの Amazon リソースネーム (ARN) です。アクセスポイントの ARN の形式が不正、または使用されていない場合、このフィールドには「-」が含まれます。アクセスポイントの詳細については、アクセスポイントの使用 を参照してください。ARN の詳細については、「AWS リファレンスガイド」の「Amazon リソースネーム (ARN)」を参照してください。

エントリ例

arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
aclRequired

リクエストの承認のためにアクセスコントロールリスト (ACL) が必要かどうかを示す文字列。リクエストに承認用の ACL が必要な場合、文字列は「Yes」です。ACL が必要なかった場合、文字列は「-」です。ACL の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。aclRequired フィールドを使用して ACL を無効にする方法の詳細については、オブジェクトの所有権の制御とバケットの ACL の無効化。 を参照してください。

エントリ例

Yes

カスタムアクセスログ情報

リクエストのアクセスログレコードに保存するカスタム情報を含めることができます。これを行うには、リクエストの URL にカスタムクエリ文字列パラメータを追加します。Amazon S3 では、「x-」で始まるクエリ文字列パラメータは無視されますが、これらのパラメータはログレコードの Request-URI フィールドの一部として、リクエストのアクセスログレコードに追加されます。

例えば、GET"s3.amazonaws.com/DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg?x-user=johndoe" リクエストは、"s3.amazonaws.com/DOC-EXAMPLE-BUCKET1/photos/2019/08/puppy.jpg" のリクエストと同じように動作します。ただし 、"x-user=johndoe" 文字列は関連付けられたログレコードの Request-URI フィールドに含まれている点が異なります。この機能は REST インターフェイスでのみ利用できます。

拡張可能なサーバーアクセスログの形式のプログラミングに関する考慮事項

場合によっては、新しいフィールドを各行末に追加することで、アクセスログレコードの形式を拡張することがあります。したがって、サーバーアクセスログを解析するコードは、理解できない可能性のある後続フィールドを処理するよう作成する必要があります。