これまで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
 /dev/null
 /dev/null
 /dev/null

キャッシュが行われていることを確認

# curl --verbose http://HOGEHOGE.cloudfront.net/ 1> /dev/null
 /dev/null
 /dev/null
 /dev/null

CloudFrontでInvalidationを実施

Object Pathsに /sample/~/* を指定してInvalidation

Invalidation後の確認

削除していないパスを確認
# curl --verbose http://HOGEHOGE.cloudfront.net/ 1> /dev/null
 /dev/null
 /dev/null
 /dev/null

結果

今回のCloudFrontの更新によりパスに ~ を含んでいてもInvalidationが可能になりました。
これでミドルウェアの仕様上 ~ を含んでいた場合でも使用しやすくなったと思います。

元記事はこちら

CloudFrontで~を含むInvalidation