跳至内容

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 エンコードなどの配慮がされていると考えて良いものでしょうか。

已提问 1 年前190 查看次数

1 回答
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

已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。