メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

サーバーアクセスのログ記録

概要

バケットへのアクセスを求めるリクエストを追跡するため、アクセスのログ記録を有効にすることができます。各アクセスログレコードには、1 つのアクセスリクエストに関する詳細が含まれます。内容は、リクエスタ、バケット名、リクエスト時刻、リクエストアクション、応答ステータス、およびエラーコード (存在する場合) です。アクセスログ情報は、セキュリティとアクセス監査に役立ちます。また、顧客基盤について知り、Amazon S3 の請求を理解することにも役立ちます。

注記

Amazon S3 バケットに対するサーバーアクセスのログ記録を有効にしても追加料金は発生しませんが、システムが配信するログファイルについては、通常のストレージ料金がかかります (ログファイルはいつでも削除できます)。ログファイルの配信に伴うデータ転送料金はありませんが、配信済みのログファイルへのアクセスには、他のすべてのデータ転送と同じ料金がかかります。

ログ記録はデフォルトでは無効になっています。ログ記録を有効にするには、以下を実行する必要があります。

  • Amazon S3 によるアクセスログの配信元のバケットにログ記録設定を追加し、ログ配信をオンにします。このバケットをソースバケットと呼びます。

  • アクセスログの保存先のバケットに対する書き込みアクセス許可を Amazon S3 ログ配信グループに付与します。このバケットをターゲットバケットと呼びます。

ログ配信をオンにするには、以下のログ記録設定情報を指定します。

  • Amazon S3 でアクセスログをオブジェクトとして保存するターゲットバケットの名前。ログは、ソースバケットを含め、所有するあらゆるバケットに配信することができます。ログを管理しやすくするため、ソースとは別のバケットにアクセスログを保存することをお勧めします。アクセスログの保存先をソースバケットと同じにする場合は、ログオブジェクトを簡単に区別できるように、すべてのログオブジェクトキーにプレフィックスを指定することをお勧めします。

    ログ記録を書き込む先のソースバケットとターゲットバケットには、同じバケットを使用できます。ただし、この場合は、バケットに書き込むログに関する追加のログを作成する必要があります。その結果、追加のログが増える分だけ、ストレージ料金が割高になり、正しいログが見つけにくくなるため、これはユースケースとして最適とは言えません。

    注記

    ソースバケットとターゲットバケットの両方が同じ AWS アカウントによって所有されている必要があります。

  • (オプション) すべてのログオブジェクトキーに割り当てる Amazon S3 のプレフィックス。プレフィックスを使用すると、ログオブジェクトを見つけやすくなります。

    たとえば、プレフィックス値として logs/ を指定すると、Amazon S3 で作成するすべてのログオブジェクトのキーが、次の例に示すように、logs/ プレフィックスで開始されます。

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

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

  • (オプション) 生成済みのログを他のユーザーが利用するためのアクセス許可。デフォルトでは、バケット所有者には常に、ログオブジェクトへの完全なアクセス権が与えられます。オプションで他のユーザーにもアクセス権を与えることができます。

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

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

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

このキーで、YYYYmmDDHHMMSS は、ログファイルを配信した年、月、日、時、分、秒をそれぞれ表す数字です。

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

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

ログの配信方法

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

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

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

サーバーアクセスログレコードの配信は、ベストエフォートで行われます。リクエスト先のバケットがログ記録用に適切に設定されている場合、通常、ログレコードは問題なく配信されます。ほとんどのログレコードは記録後数時間以内に配信されます。

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

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

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

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

サーバーアクセスのログ記録の詳細については、以下のトピックを参照してください。

このページの内容: