スキップしてコンテンツを表示

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 エンコードなどの配慮がされていると考えて良いものでしょうか。
質問済み 9ヶ月前132ビュー
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

回答済み 9ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ