【用途別】S3ログを集計する方法 〜その① 簡単な条件で集計したい〜

記事タイトルとURLをコピーする

こんにちは、屋根裏エンジニアこと 技術1課の折戸です。

屋根裏は南側に併設する広めのバルコニーのおかげで、昼間はエアコン無しでもまだまだポッカポカです。

今回はS3のログの集計方法を調べる機会があったので、用途別に3回に分けてご紹介します。

まずは その① 簡単な条件で集計したい 場合の方法を当記事でご紹介します。

集計対象

S3のログと言っても各種AWSソリューションから配信されるログや、独自に転送したシステムのログなどさまざまです。
今回はApacheのアクセスログを対象とします。

集計条件

HTTPレスポンスのステータスコードの件数を集計 とします。

事前準備

ApacheアクセスログファイルをS3へアップロード

まず、集計に必要なApacheのアクセスログを準備します。
今回は動作確認しやすいようにシンプルな以下のログデータとします。
ローカルファイルなどへ書き込み、適宜S3の任意のバケットへアップロードしてください。

198.51.100.7 - Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232  
198.51.100.14 - Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165  
198.51.100.22 - Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287  
198.51.100.9 - Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230  
198.51.100.2 - Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30  
198.51.100.13 - Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608  
198.51.100.11 - Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344  

参考:Amazon S3 に保存されている Apache ログのクエリ - Amazon Athena

200404 の項目が集計条件の HTTPレスポンスのステータスコード にあたります。

その① S3のログを簡単な条件で集計

AWSマネジメントコンソールからS3のログを簡単な条件で集計する、一番シンプルな方法です。

手順は以下の通りです。

1. S3 Selectを使用したクエリ

アップロードしたS3オブジェクトを選択し、
オブジェクトアクション > S3Selectを使用したクエリ クリック f:id:swx-orito:20211222145533p:plain

2. 入力設定

項目に応じて以下を設定します。

  • 形式
    CSV
  • CSV 区切り記号
    カスタム
  • カスタム CSV 区切り記号
    半角空白を入力
  • 圧縮
    なし

f:id:swx-orito:20211222150003p:plain

3. 出力設定

デフォルト設定で問題ありません。

4. SQL クエリの実行

以下のクエリを貼り付け、 SQL クエリの実行 をクリック

SELECT COUNT(*) FROM s3object s WHERE s._7='200'  

f:id:swx-orito:20211222150410p:plain

5. 集計結果表示

クエリ結果 の箇所にステータスコード200の件数が集計され、 5 が表示されます。

f:id:swx-orito:20211222150639p:plain

ちなみに、結果のダウンロードをクリックすると、
CSV形式のファイルをダウンロードすることも可能です。

制約について

今回の方法はS3 Selectで使用できる関数に限定されます。

SQL 関数 - Amazon Simple Storage Service

例えば、 HTTPレスポンスのステータスコードが200と404の件数を同時に集計する といった集計条件には対応できません。

その様なケースに応えるために、少し複雑な条件の集計方法について、次回の記事でご紹介します。

それでは。

折戸 亮太(執筆記事の一覧)

2021年10月1日入社
クラウドインテグレーション部技術1課

屋根裏エンジニア