これまでCloudFrontを利用している際に ~ を含んだパスでInvalidationがうまくいかない現象*1が有りました。
本日(5/22)にCloudFrontのアップデートによりワイルドカード( * )利用したInvalidationが可能になったので、 ~ を含むパスも削除出来るかテストを実施しました。
*1:CloudFrontが準拠しているRFC1738の仕様 詳細はこちら
準備
環境
- apacheやnginx、IISを入れたサーバ
- curlコマンドを叩くPC
- AWSアカウント
CloudFrontの準備
テスト用に以下のパスでページを準備する
- /
- /sample/
- /sample/~/
- /sample/~/sample2
検証
CloudFrontへキャッシュをさせる
初回の為 Miss from cloudfront になることを確認
# curl --verbose http://HOGEHOGE.cloudfront.net/ 1> /dev/null
< X-Cache: Miss from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/ 1> /dev/null
< X-Cache: Miss from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/ 1> /dev/null
< X-Cache: Miss from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/sample2 1> /dev/null
< X-Cache: Miss from cloudfront
キャッシュが行われていることを確認
# curl --verbose http://HOGEHOGE.cloudfront.net/ 1> /dev/null
< X-Cache: Hit from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/ 1> /dev/null
< X-Cache: Hit from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/ 1> /dev/null
< X-Cache: Hit from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/sample2 1> /dev/null
< X-Cache: Hit from cloudfront
CloudFrontでInvalidationを実施
Object Pathsに /sample/~/* を指定してInvalidation
Invalidation後の確認
削除していないパスを確認
# curl --verbose http://HOGEHOGE.cloudfront.net/ 1> /dev/null
< X-Cache: Hit from cloudfront
削除対象のパスを確認(/sample/*)
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/ 1> /dev/null
< X-Cache: Miss from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/ 1> /dev/null
< X-Cache: Miss from cloudfront
# curl --verbose http://HOGEHOGE.cloudfront.net/sample/~/sample2 1> /dev/null
< X-Cache: Miss from cloudfront
結果
今回のCloudFrontの更新によりパスに ~ を含んでいてもInvalidationが可能になりました。
これでミドルウェアの仕様上 ~ を含んでいた場合でも使用しやすくなったと思います。