昌孝(44)30この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Cookies」が「All」になっている事が原因でした。今回はなぜ「All」だとキャッシュが使われなかったのか、CloudFrontにおけるcookieの注意点について書こうと思います。webページを準備EC2インスタンスを立ち上げ、apacheとphpをインストールします。/var/www/html/index.phpを作成し、内容は以下にします。GoogleAnalyticsもcookieを使うので検証の為に埋めました。'<br>';?>------------------------------------------------------<br></body></html>このページにアクセスすると以下のような結果が得られ、webサーバーにどのようなcookieが渡されているか確認できます。Distribution」をクリックして新しく「Distribution」を作成します。DNS」を入力するだけでOKです。CloudFrontは作成が完了するまで時間が掛かります。設定を変更した時も同様なので実際に試す時はその点を覚悟してください。Cookies」はデフォルトで「None」になっていて、この状態はoriginに指定したwebサーバーに対して一切cookieを渡しません。CloudFrontを経由して先ほど作成したwebサイトにアクセスして確認してみましょう。Name」になります。結果は以下のようになり、webサーバーに対してcookieが一切渡されていない事がわかります。次に、数回更新した後でchromeの基本機能を使ってCloudFrontのキャッシュが使われているか確認します。確認用URL:chrome://net-internals/#events「type:URL_REQUEST」でフィルタすると使いやすいのでおすすめです。結果は以下のようになります。cloudfront」と表示されていますので、キャッシュされてそれを使ったことがわかります。Cookies」を「None」で運用できません。「All」での運用はどのような状況になるか検証してみましょう。Cookies」が「All」の場合さっそくこの状況で何回かアクセスしてみましょう。結果は以下のようになります。表示内容はwebサーバーに直接アクセスした時となんら変わりませんね。HTTPヘッダはどうなっているのか確認します。キャッシュにHitしています。この状態で問題無さそうに見えますがCloudFrontはcookieの値も含めてキャッシュを使うか判断していますので値が異なる場合はキャッシュが使われません。その部分を理解する為にwebページのソースを少し変更し、3行目のコメントアウトを解除し、4行目をコメントアウトします。lang="ja">略この状態で何度かアクセスしてみましょう。以下のようにcookieに日時が登録されていて、アクセスする度に変更されている事もわかります。このようにアクセスする度にcookieの値が変わるページの場合、CloudFrontのキャッシュは使われのでしょうか?先ほどと同じようにHTTPヘッダを確認します。cloudfront何度アクセスしてもキャッシュが使われません。Cookies」が「All」の場合はcookieの値によって別キャッシュとなる事がわかりました。どんな問題があるの?と言われると運用しているwebサイトによっては問題ないかもしれませんが、最早入れててあたりまえという感じのGogleAnalyticsタグはどうでしょう?まずは日時のcookieを無効化し、今度は別のブラウザでアクセスしてみます。「_ga」の値が変わっています。chrome:GA1.3.1433833158.1463106328safari:GA1.3.1375323490.1463121195キャッシュが本当に使われていないのか、safariで数回アクセスした後すぐにchromeでアクセスしてみます。Missとなりました。1回アクセスするとHitになります。Cookies」が「All」で「GoogleAnalytics」のタグを埋めている場合、各ユーザーさらに各ブラウザ毎にキャッシュが作成されるのでHit率が悪くなります。Cookies」には「Whitelist」というものも用意されています。ここに「GoogleAnalyticsのCookie以外」を登録すればいいのです。ページにアクセスしてwebサーバーに渡っているcookieを確認します。GoogleAnalyticsのcookieは渡されていませんこの状態でSafariから数回、すぐにchromeからアクセスして確認します。このようにCloudFrontのキャッシュが使われました。さいごにいかがでしたでしょうか。今回このエントリーを書くきっかけは、「CloudFrontでキャッシュにHitしない」という問題の調査でした。単純なページを作成して検証するとキャッシュされ、問題のページのソースをコピーするとキャッシュされないことがわかり、ためしにGoogleAnalyticsのタグを消してみたらキャッシュされました。世の中でこれだけ使われているGogleAnalyticsとCloudFrontの組み合わせで問題が起きていないのか?とも思いましたが、「None」で使っている場合は問題ないですし、ブラウザを変えるとキャッシュがHitしないが2回目からはHitするので、Hit率が悪くなっている事に気づいていない可能性もあります。Cookies」に「All」や「Whitelist」を設定して利用する時は、cookieに何が渡されているのかを確認し、場合によっては「Whitelist」を使って必要なcookieだけを渡す設定が必要だという事を覚えておいてください。Cookies」について確認・検討するきっかけになれば幸いです。参考ページこれらのページを参考にさせていただきました。ありがとうございました。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。濱田孝治371re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。PolicyのConditionにaws:CalledViaというキーが追加されました。いったキーなのかご説明します。夏目祐樹410こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。濱田孝治371re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介256SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。