サーバーアクセスログを使用したリクエストのログ記録 - Amazon Simple Storage Service

サーバーアクセスログを使用したリクエストのログ記録

サーバーアクセスのログには、バケットに対するリクエストの詳細が記録されます。サーバーアクセスのログは、多くのアプリケーションに役立ちます。たとえば、アクセスのログ情報は、セキュリティやアクセスの監査に役立ちます。また、顧客基盤について知り、Amazon S3 の請求を理解することにも役立ちます。

注記

サーバーアクセスログには、2019 年 3 月 20 日より後に開設されたリージョンで発生するリージョン違いによるリダイレクトエラーに関する情報は記録されません。リージョン違いによるリダイレクトエラーは、オブジェクトまたはバケットに対するリクエストがそのバケットがあるリージョン以外で行われた場合に発生します。

ログ配信を有効にするにはどうすればよいですか?

ログ配信を有効にするには、次の基本的な手順を実行します。詳細については、「」を参照してくださいAmazon S3 サーバーアクセスログを有効にします。

  1. ターゲットバケットの名前を指定します。このバケットは、Amazon S3 がアクセスログをオブジェクトとして保存する場所です。ソースバケットとターゲットバケットの両方が同じ AWS リージョン にあり、同じアカウントによって所有されている必要があります。

    ログの保存先のバケットとして、ソースバケットと同じリージョンにあるユーザー所有のバケットを指定できます。これにはソースバケット自体も含まれます。ただし、ログを管理しやすくするため、アクセスログは別のバケットに保存することをお勧めします。

    ソースバケットとターゲットバケットが同じである場合、バケットに書き込まれるログに関する追加のログが作成されます。これは、ストレージの請求額がいくらか増える可能性があるため、望ましくない場合があります。また、ログに関する追加のログのために、必要なログを見つけにくくなります。アクセスログの保存先をソースバケットにする場合は、ログオブジェクトを簡単に区別できるように、すべてのログオブジェクトキーにプレフィックスを指定し、オブジェクト名を共通の文字列で始めてください。

    キープレフィックスは、複数のバケットが同じターゲットバケットにログを記録する場合に、ソースバケットを区別するためにも役立ちます。

  2. (オプション) Amazon S3 のすべてのログオブジェクトのキーにプレフィックスを割り当てます。 プレフィックスを使用すると、ログオブジェクトを見つけやすくなります。例えば、プレフィックスの値として logs/ を指定すると、Amazon S3 で作成する各ログオブジェクトのキーの先頭に logs/ というプレフィックスが付きます。

    logs/2013-11-01-21-32-16-E568B2907131C0C0

    キープレフィックスは、ログを削除するときにも役立ちます。例えば、特定のキープレフィックスを使用して、Amazon S3 のライフサイクル設定ルールを指定することができます。詳細については、「Amazon S3 ログファイルの削除」を参照してください。

  3. (オプション) 作成されたログを他のユーザーが利用するためのアクセス許可を設定します。デフォルトでは、バケット所有者のみにログオブジェクトへのフルアクセスが許可されます。詳細については、「Amazon S3 での Identity and Access Management」を参照してください。

ログオブジェクトのキーフォーマット

Amazon S3 では、ターゲットバケットにログオブジェクトをアップロードする際に、以下のオブジェクトキーフォーマットを使用します。

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString/

このキーで、YYYYmmDDHHMMSS は、ログファイルを配信した年、月、日、時、分、秒をそれぞれ表す数字です。これらの日付と時刻は協定世界時 (UTC) です。

ある時点で配信されたログファイルには、その時点より前に書き込まれたレコードが含まれます。特定の期間のすべてのログレコードが配信されたかどうかを知る方法はありません。

キーの UniqueString コンポーネントは、ファイルの上書きを防止するためのものです。意味はないため、ログ処理ソフトウェアでは無視されます。

プレフィックスの末尾であることを示すには、末尾のスラッシュ / が必要です。

ログを配信する方法

Amazon S3 は定期的にアクセスログレコードを収集し、レコードをまとめてログファイルを作成し、そのログファイルを、ログオブジェクトとしてターゲットバケットにアップロードします。複数のソースバケットでログ記録の配信先が同じターゲットバケットである場合、これらのすべてのソースバケットのアクセスログがターゲットバケットに収容されます。ただし、各ログオブジェクトは、ソースバケット別にアクセスログレコードをレポートします。

Amazon S3 は、Log Delivery グループと呼ばれる特別なログ配信アカウントを使用してアクセスログを書き込みます。このような書き込みは、通常のアクセスコントロールの制約に従います。ログ配信グループにターゲットバケットへの書き込みアクセス許可を付与するには、ターゲットバケットのアクセスコントロールリスト (ACL) に付与エントリを追加する必要があります。

Amazon S3 コンソールを使用してバケットへのログ記録を有効にすると、コンソールは、ソースバケットでのログ記録の有効化とターゲットバケットでの ACL の更新の両方を行って、ログ配信グループに書き込みアクセス許可を付与します。詳細については、「アクセスコントロールリスト (ACL) の概要」を参照してください。

ベストエフォート型のサーバーログ配信

サーバーアクセスログレコードの配信は、ベストエフォートで行われます。ログ記録用に適切にバケットを設定した場合、そのバケットへのほとんどのリクエストについてログレコードが配信されます。ほとんどのログレコードは、記録された時間から数時間以内に配信されますが、配信間隔は短くなる場合もあります。

サーバーログの完全性や適時性は保証されません。リクエストのログレコードが、リクエストが実際に処理されてからかなり後に配信されたり、配信すらされないこともあり得ます。サーバーログの目的は、バケットに対するトラフィックの特性を理解することです。ログレコードが失われることはまれですが、すべてのリクエストが完全に報告されるとは限りません。

サーバーのログ作成機能はベストエフォート型であるため、AWS ポータルで利用できる使用状況レポート (AWS Management Console でレポートされる請求およびコスト管理レポート) には、サーバーログに記録されていないアクセスリクエストが含まれる場合があります。

バケットのログ記録ステータスの変更が有効になるまでには時間がかかる

バケットのログ記録ステータスの変更がログファイルの配信に反映されるまでには時間がかかります。たとえば、バケットのログを有効にする場合、その後数時間に行われるリクエストは記録されることもあれば、されないこともあります。ログ記録のターゲットバケットをバケット A からバケット B に変更すると、その後 1 時間は一部のログがバケット A に引き続き配信されたり、新しいターゲットバケット B に配信されたりします。いずれにしても、最終的に新しい設定が有効になるため、ユーザー側の操作は一切不要です。

ログ記録とログファイルの詳細については、次のセクションを参照してください。