Salta al contenuto

S3アクセスログの形式について

0

S3のアクセスログをパースしてフィールド毎に区切ろうとしています。 参考にしているサイトは下記です。 https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/LogFormat.html

下記サイトによれば、「各フィールドはスペースで区切られている」とあります。ここで2点質問があります。

  1. フィールドのデータとしてスペース(リテラルのスペース)が含まれることはありますか?

上記サイトに記載されているエントリ例を見ると、下記a、bの配慮がされているように見えます(推測)。a、bの例外を除けば、スペースで区切れる認識ですが、これで正しいか裏付けが欲しく質問させていただきました。

 a. 「時間」は[]で囲まれている。[]内のスペースはフィールド区切りのスペースではない
 b. 「Request-URI」など、フィールドデータにスペースを含む可能性がある場合はダブルクォートで囲まれている。ダブルクォートで囲まれた部分のスペースはフィールド区切りのスペースではない

  1. 仮に「1」の理解が正しい場合、フィールド内にリテラルとしての「ダブルクォート」や「角括弧[]」は含まれない認識で合っていますでしょうか。
     ※試しに実際のログを見たところ、RequestURIやキーは、URLエンコードされていました。他のフィールドも、フィールドデータとしてダブルクォートや角括弧が含まれうる場合は URL エンコードなどの配慮がされていると考えて良いものでしょうか。

posta un anno fa181 visualizzazioni

1 Risposta
0

S3アクセスログの形式について、以下のように回答いたします:

  1. フィールドのデータとしてスペース(リテラルのスペース)が含まれることがあります。ただし、ご指摘の通り、そのような場合は特別な処理がされています:

a. 時間フィールドは角括弧 [] で囲まれており、その中のスペースはフィールド区切りとして扱われません。 b. Request-URI などのフィールドでスペースを含む可能性がある場合は、ダブルクォートで囲まれています。これらのダブルクォート内のスペースもフィールド区切りではありません。

これらの例外を除けば、基本的にフィールドはスペースで区切られていると考えて問題ありません。

  1. ご理解の通りです。フィールド内にリテラルとしてのダブルクォートや角括弧 [] が含まれることは通常ありません。S3アクセスログでは、フィールドデータにこれらの文字が含まれる可能性がある場合、URLエンコーディングなどの方法で対処されています。

Request-URIやオブジェクトキーなどのフィールドでは、URLエンコーディングが使用されています。これにより、スペース、ダブルクォート、角括弧などの特殊文字が安全に表現されます。

他のフィールドについても、データの性質上特殊文字が含まれる可能性がある場合は、同様にエンコーディングや他の方法で対処されていると考えて良いでしょう。

このような形式により、ログの解析や処理が容易になっています。ただし、実際のログ解析を行う際は、稀なケースや予期せぬデータフォーマットにも対応できるよう、柔軟性を持たせたパース処理を実装することをお勧めします。
Sources
How to reverse geocode for the time zone of a city - Amazon Location Service
MediaLive Resources
MediaLive Resources

con risposta un anno fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.