[小ネタ] CloudFrontでクエリ文字列を転送しているときのInvalidationにはクエリ文字列を忘れないように注意しよう

[小ネタ] CloudFrontでクエリ文字列を転送しているときのInvalidationにはクエリ文字列を忘れないように注意しよう

Amazon CloudFrontでクエリ文字列をオリジンに転送するよう設定していてキャッシュクリアを行う場合には、Invalidationのパス指定の際にクエリ文字列部分も考慮しないと、クエリ文字列を含んだリクエストについてはキャッシュが無効化されません。 清水です。タイトルのとおりなのですが、Amazon CloudFrontでクエリ文字列をオリジンに転送するよう設定している場合でInvalidation(ファイルの無効化)を行う際には、Invalidation対象のパスにクエリ文字列を含める必要があります。(クエリ文字列部分のワイルドカードの利用も可です。)

はじめに

清水です。タイトルのとおりなのですが、Amazon CloudFrontでクエリ文字列をオリジンに転送するよう設定している場合でInvalidation(ファイルの無効化)を行う際には、Invalidation対象のパスにクエリ文字列を含める必要があります。(クエリ文字列部分のワイルドカードの利用も可です。)Cookieやヘッダーをオリジンに転送している場合は対象となるパスのみを指定すれば良いため、混乱することがあるかもしれません。というか私が混乱してしまったので備忘録がてらまとめてみたいと思います。

CloudFrontでクエリ文字列をオリジンに転送している際のInvalidationについて確認してみた

Amazon CloudFront開発者ガイドを確認すると、その旨記載があります。

  • ファイルの無効化 - Amazon CloudFront
  • 「無効にするファイルの指定」 > 「クエリ文字列の転送」

以下では実際に、オリジンにクエリ文字列を転送するCloudFrontを構築、Invalidation時の挙動を確認してみました。

確認する環境について

オリジンはEC2にApache+PHPをインストールし、リクエスト時の時間とクエリ文字列を出力するコード(qs.php)を配置しました。コードは以下になります。

qs.php

<?php
date_default_timezone_set('Asia/Tokyo');
echo date("Y/m/d H:i:s");
echo "\n";
echo $_SERVER['QUERY_STRING']
?>

実際にアクセスすると、以下のような出力となります。

  $ curl "http://ec2-XXX-XXX-XXX-XXX.ap-northeast-1.compute.amazonaws.com/qs.php?foo=bar"
2020/05/31 10:55:48
foo=bar

aws

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Hire AWS Developer

Looking to Hire Professional AWS Developers? The technology inventions have demanded all businesses to use and manage cloud-based computing services and Amazon is dominating the cloud computing services provider in the world. **[Hire AWS...

AWS Cost Allocation Tags and Cost Reduction

Learn more about AWS Cost Allocation Tags, tag examples via the web, CLI, and node.js, explore tag compliance services, and review tagging strategies.

Hire Dedicated AWS Developer

Want to Hire AWS Developer for cloud computing services? At **[HourlyDeveloper.io](https://hourlydeveloper.io/ "HourlyDeveloper.io")**, we leverage maximum benefits from the AWS platform ensuring prominent Solutions for business requirements....

How AWS Skills Can Boost Your Career in The IT Industry?

India's best AWS Online Training & Certification Course By CETPA with Live Project & Avail 50% discount. Level up from creating cloud applications using AWS SDKs and to prepare for certification exams. Enroll Now!

How To Unite AWS KMS with Serverless Application Model (SAM)

AWS KMS is a Key Management Service that let you create Cryptographic keys that you can use to encrypt and decrypt data and also other keys. You can read more about it here.