edit-icon download-icon

PutBucketLogging

最終更新日: Aug 01, 2018

バケットオーナーは、自分のバケットでアクセスログ機能を有効にすることができます。この機能を有効にすると、そのバケットへのリクエストに関する詳細情報が自動的に記録されて、指定したルールに従ってアクセスログが書き込まれます。アクセスログは、指定したバケットに 1 時間ごとにオブジェクトとして書き込まれます。バケットオーナーは、OSS が提供するバケットアクセスログを使用して、バケットのアクセス状況を簡単に把握および分析できます。OSS が提供するバケットアクセスログは、すべてのアクセスレコードが記録されていることを保証するものではありません。

バケットオーナーは、OSS が提供するバケットアクセスログを使用して、バケットのアクセス状況を簡単に把握および分析できます。OSS が提供するバケットアクセスログは、すべてのアクセスレコードが記録されていることを保証するものではありません。

リクエスト構文

  1. PUT /?logging HTTP/1.1
  2. Date: GMT Date
  3. Content-Length: ContentLength
  4. Content-Type: application/xml
  5. Authorization: SignatureValue
  6. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  7. <?xml version="1.0" encoding="UTF-8"?>
  8. <BucketLoggingStatus>
  9. <LoggingEnabled>
  10. <TargetBucket>TargetBucket</TargetBucket>
  11. <TargetPrefix>TargetPrefix</TargetPrefix>
  12. </LoggingEnabled>
  13. </BucketLoggingStatus>

リクエストの要素

名前 必須かどうか 説明
BucketLoggingStatus container はい ログステータス情報のコンテナー。
子: LoggingEnabled
親: なし
LoggingEnabled container いいえ ログ情報のコンテナー。この要素は、ログを有効にする場合にのみ存在します (ログを無効にする場合は存在しません)。
子: TargetBucket、TargetPrefix
親: BucketLoggingStatus
TargetBucket character はい (server access loggingが有効になっている場合) サーバーアクセスログを格納するバケットを指定します。
子: なし
親: BucketLoggingStatus.LoggingEnabled
TargetPrefix character いいえ この要素を使用すると、ログファイルが格納されるオブジェクトのプレフィックスを指定できます。
子: なし
親: BucketLoggingStatus.LoggingEnabled

アクセスログを格納するオブジェクトの命名規則

  1. <TargetPrefix><SourceBucket>-YYYY-mm-DD-HH-MM-SS-UniqueString

この命名規則では、TargetPrefix はユーザーが指定します。YYYY、mm、DD、HH、MM、SS には、作成日時の年、月、日、時、分、秒がアラビア数字で設定されます (桁数に注意してください)。UniqueString は、OSS システムによって生成される文字列です。OSS アクセスログの格納に使用されるオブジェクトの名前の実例を以下に示します。

  1. MyLog-oss-example-2012-09-10-04-00-00-0000

上の例では、”MyLog-“ はユーザーが指定したオブジェクトプレフィックス、”oss-example” はオリジンバケットの名前、”2012-09-10-04-00-00” はオブジェクトの作成日時 (北京現地時間)、”0000” は OSS システムによって生成された文字列です。

ログファイルの形式

名前 説明
Remote IP 119.140.142.11 リクエストが開始された IP アドレス (このフィールドは、プロキシやユーザーファイアウォールによってブロックされる場合があります)
Reserved - 予約フィールド
Reserved - 予約フィールド
Time [02/May/2012:00:00:04 +0800] OSS がリクエストを受信した日時
Request-URI “GET /aliyun-logo.png HTTP/1.1” ユーザーがリクエストした URI (クエリ文字列を含む)
HTTP Status 200 OSS から返された HTTP ステータスコード
SentBytes 5576 ユーザーが OSS からダウンロードしたトラフィック
RequestTime (ms) 71 このリクエストが完了するまでにかかった時間 (単位はミリ秒)
Referer http://www.alicloud.com/product/oss リクエストの HTTP リファラー
User-Agent curl/7.15.5 HTTP User-Agent ヘッダー
HostName oss-example.oss-cn-hangzhou.aliyuncs.com アクセスリクエストのドメイン名
Request ID 505B01695037C2AF032593A4 このリクエストを一意に識別するために使用される UUID
LoggingFlag true アクセスログ機能が有効かどうか
Requester Alibaba Cloud ID 1657136103983691 リクエスト送信者の Alibaba Cloud ID (匿名アクセスの場合は “-“)
Operation GetObject リクエストタイプ
Bucket oss-example アクセスをリクエストされたバケットの名前
Key /aliyun-logo.png ユーザーリクエストのキー
ObjectSize 5576 オブジェクトサイズ
Server Cost Time (ms) 17 OSS サーバーがこのリクエストの処理に費やした時間 (単位はミリ秒)
Error Code NoSuchBucket OSS から返されたエラーコード
Request Length 302 ユーザーリクエストの長さ (バイト)
UserID 1657136103983691 バケットオーナーの ID
Delta DataSize 280 バケットサイズの変動 (変動がない場合は “-“)
Sync Request - CNDからのバックツーソースリクエストかどうか、(そうでない場合は “-“)
Reserved - 予約フィールド

詳細分析

  • ソースバケットとターゲットバケットは同じユーザーに属している必要があります。
  • 上のリクエスト構文で、”BucketName” はアクセスログを有効にするバケット、”TargetBucket” はアクセスログの保存先のバケット、”TargetPrefix” はアクセスログを格納するオブジェクトの名前のプレフィックス (null にすることもできます) を指します。
  • ソースバケットとターゲットバケットは、同じバケットでも別のバケットでもかまいません。複数のソースバケットのログを同じターゲットバケットに保存できます (TargetPrefix を別の値に設定することをお勧めします)。
  • バケットのアクセスログ機能を無効にするには、BucketLoggingStatus が空のリクエストを送信するだけです。詳細については、以下のリクエストの例を参照してください。
  • すべての PUTBucketLogging リクエストに署名が必要です。したがって、匿名アクセスはサポートされていません。
  • PUTBucketLogging リクエストを開始したユーザーがソースバケット (リクエストの例の BucketName) のオーナーでない場合、エラーコード 403 が返されます。
  • ソースバケットが存在しない場合は、エラーコード NoSuchBucket が返されます。
  • PUTBucketLogging リクエストを開始したユーザーがターゲットバケット (リクエストの例の TargetBucket) のオーナーでない場合、エラーコード 403 が返されます。ターゲットバケットが存在しない場合は、エラーコード InvalidTargetBucketForLogging が返されます。
  • ソースバケットとターゲットバケットは同じデータセンターに属している必要があります。属していない場合は、エラー 400 が返されます。エラーコードは InvalidTargetBucketForLogging です。
  • PUTBucketLogging リクエストの XML が無効である場合は、エラーコード MalformedXML が返されます。
  • ソースバケットとターゲットバケットは同じバケットでもかまいません。複数の異なるソースバケットのログを同じターゲットバケットに保存できます (TargetPrefix を別の値に設定する必要があります)。
  • ソースバケットが削除されると、対応するログルールも削除されます。
  • バケットアクセスログファイルは 1 時間ごとに生成されますが、 その時間内のすべてのリクエストがその時間のログファイルに記録されるとは限りません。前のログファイルや次のログファイルに記録される場合もあります。
  • OSS によって生成されるログファイルの命名規則の “UniqueString” は、OSS がオブジェクトを一意に識別するために生成する UUID です。
  • バケットアクセスログファイルが生成されるたびに、PUT 操作がカウントされ、占有スペースが記録されますが、生成されたトラフィックは記録されません。生成されたログファイルは、通常のオブジェクトとして操作できます。
  • “x-“ というプレフィックスが付いたクエリ文字列パラメーターは、OSS ではすべて無視されますが、アクセスログには記録されます。大量のアクセスログで特定のリクエストにマークを付けるには、”x-“ というプレフィックスが付いたクエリ文字列パラメーターを URL に追加できます。例:
    http://oss-example.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png
    http://oss-example.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png?x-user=admin
  • 上の 2 つのリクエストは、OSS の処理結果は同じですが、 アクセスログで “x-user=admin” を検索すると、マークを付けたリクエストをすばやく見つけることができます。
  • OSS ログのフィールドの値が “-“ になっている場合があります。これは、データが不明であるか、そのフィールドが現在のリクエストに対して無効であることを示します。
  • 将来的に、OSS ログファイルの末尾に必要に応じてフィールドが追加されます。ログ処理ツールを開発する際には、互換性の問題を考慮に入れることをお勧めします。
  • Content-MD5 リクエストヘッダーをアップロードした場合は、本文の Content-MD5 が計算されて、両者が同じであるかどうかが確認されます。異なる場合は、エラーコード InvalidDigest が返されます。

リクエストの例 (バケットアクセスログを有効にする場合):

  1. PUT /?logging HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Length: 186
  4. Date: Fri, 04 May 2012 03:21:12 GMT
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <BucketLoggingStatus>
  8. <LoggingEnabled>
  9. <TargetBucket>doc-log</TargetBucket>
  10. <TargetPrefix>MyLog-</TargetPrefix>
  11. </LoggingEnabled>
  12. </BucketLoggingStatus>

レスポンスの例:

  1. HTTP/1.1 200 OK
  2. x-oss-request-id: 534B371674E88A4D8906008B
  3. Date: Fri, 04 May 2012 03:21:12 GMT
  4. Content-Length: 0
  5. Connection: keep-alive
  6. Server: AliyunOSS

リクエストの例 (バケットアクセスログを無効にする場合):

  1. PUT /?logging HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Type: application/xml
  4. Content-Length: 86
  5. Date: Fri, 04 May 2012 04:21:12 GMT
  6. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=
  7. <?xml version="1.0" encoding="UTF-8"?>
  8. <BucketLoggingStatus>
  9. </BucketLoggingStatus>

レスポンスの例:

  1. HTTP/1.1 200 OK
  2. x-oss-request-id: 534B371674E88A4D8906008B
  3. Date: Fri, 04 May 2012 04:21:12 GMT
  4. Content-Length: 0
  5. Connection: keep-alive
  6. Server: AliyunOSS