前提的な話
- AWSのcloudfrontをかる〜く試していた
- static file(CSS,JS,IMGとか)の配信で試してた
- 試している途中でコンソール画面(CloudFront Cache Statistics Reports)を眺めていたら
Error
がカウントされていた - 説明をみてみると下記のように書いてる
Error: A viewer request that resulted in an error, so CloudFront did not serve the object. In access logs, the value of x-edge-response-result-type is Error, LimitExceeded, or CapacityExceeded.
ちょっと気になったので調べる
- cloudfrontのloging設定をonにしてs3バケットに出力させる
- そのログで
Error
となってるログをピックアップしてみてみる
2016-10-06 12:02:34 NRT53 462 IPが書かれてる GET ****.cloudfront.net /favicon.ico 403 リファラーが書かれている Mozilla/5.0%2520(Macintosh;%2520Intel%2520Mac%2520OS%2520X%252010_11_6)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/53.0.2785.116%2520Safari/537.36 - - Error ******** hostが書かれてる https 199 0.043 - ssl-cipherが書かれている Error HTTP/2.0
2016-10-06 12:03:22 NRT53 470 IPが書かれてる GET ****.cloudfront.net /favicon.ico 403 リファラーが書かれている Mozilla/5.0%2520(Macintosh;%2520Intel%2520Mac%2520OS%2520X%252010_11_6)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/53.0.2785.116%2520Safari/537.36 - - Error ******** hostが書かれてる https 240 0.004 - ssl-cipherが書かれている Error HTTP/2.0
2016-10-06 18:03:07 SFO20 592 IPが書かれてる GET ****.cloudfront.net /robots.txt 403 - Mozilla/5.0%2520(compatible;%2520Googlebot/2.1;%2520+http://www.google.com/bot.html) - - Error ******** hostが書かれている https 227 0.440 - ssl-cipherが書かれている Error HTTP/1.1
- アクセスログの形式に関しては下記参照
調べてみての結果
- そもそもcloudfront(=S3)に載せていないファイル(favicon.ico/robots.txt)にアクセスしようとしてhttp statusの403を返している
- もともとファイル無いし気にする事ではなかった
- 内部リンクでのfavicon.icoへのリンクは無いので、クローラー系かな or ブラウザとかの機能でfaviconとかにアクセスするのかなぁ?と想像
- x-edge-result-typeとx-edge-response-result-typeという項目があり、重要さに気づいた。下記の
注意
でまとめる
注意
- x-edge-result-typeとx-edge-response-result-typeのステータスの値
- x-edge-result-type
- 最終的な結果タイプ
- x-edge-response-result-type
- CloudFront がリクエストに応答し始める直前の結果タイプ
- x-edge-result-type
- んーまぁリクエストを投げて、ダウンロードを始める際のstatusとダウンロードし終わったときのstatusみたいなもんかな
- なんでこんな内訳をしているかと考えるとcloudfrontでストリーミング配信をした時とかにちゃんと最後まで配信できたかを計測する為かなと
まとめ的なもの
-
http status
,uri
,x-edge-result-type
,x-edge-response-result-type
の値を可視化しておいた方が安心- この4つの項目を一緒にみて、何か問題があるのかというジャッジができそう
- アクセスログを簡単に可視化する仕組みちょっと面倒いなー。でも地味に重要なんだよなーと思ったり
- favicon.icoとかrobots.txtとか置いておいた方が無難かもしれない
- Errorカウントされてしまうし、気づかないといけない本来のErrorを見つけやすくするべきだし