LoginSignup
2
4

More than 3 years have passed since last update.

curl コマンドで複数のクエリパラメータを送信する(cloudfront)

Last updated at Posted at 2019-08-09

極めて初心者でした。。。うっかり

なんとなくCloudFrontを使ってみて、S3にLogを出力して、内容を見てみたのですが、クエリパラメータ1つしか書かれていない!?となってしまいました。
クエリ文字列パラメータと CloudFront アクセスログ
公式documentにはCloudFront は、クエリ文字列パラメータを含む完全な URL をログに記録しますと書いてありました。。。

原因としてはcurlの使い方は不適切でした。
curl -v https://<domain>/items?goods=tray&price=100&order=1554958
正しくは、curl -v https://<domain>/items?goods=tray\&price=100\&order=1554958でエスケープが必要でした( ;∀;)
curlで複数パラメータのGETを投げる

こんなポン超すなミスする方は他にはいらっしゃならいと思いますが、自分への戒めのために、記録しておきます。

Amazon Linux で CloudFrontのログ解析

ウェブディストリビューションのログファイル形式

コピペコマンド
毎分のキャッシュヒットとクライアントIP、パス、クエリパラメータを確認することができます。

aws s3 sync s3://<backetname>/cloudfront/ ./logs
gunzip -dc * | awk '$8 == "/items"' | sort | awk '{print substr($2, 0, 5), $1, $5, $8, $12, $23}' | sort | awk '{print $2, $1, $6, $3, $4, $5}' | uniq -c
      1 2019-08-08 08:03 Miss 126.193.5.58 /items goods=tray&price=100&order=1554958

コピペで使えるELBのアクセスログ解析による事象分析 (ShellScript, Athena)

Amazon Athenaでログ解析

Amazon CloudFront ログのクエリ
めちゃくちゃ簡単にログが見れる-
*末尾2行目のLOCATION のbacketnameの変更を忘れることなく!!

特定のuriの最新のログを確認する

SELECT date, time request_ip, uri, query_string
FROM cloudfront_logs
WHERE uri LIKE '_items'
Order by date DESC ,time DESC
Limit 10

Amazon Glueと組み合わせつことで簡単にテーブルを作成することも可能だが、スキーマががたがたですな。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4