はじめに
こんにちは、Gakken LEAP のエンジニアの shogawa です。
今回は、CloudFrontでのキャッシュ削除について、仕様が変更されたようでキャッシュが残ってしまう事象が発生したため、調査および対応方法についてまとめます。
前提
- AWSの環境が整っていること
- CloudFrontのディストリビューションが設定されていること
CloudFrontのオリジンはS3のバケットに設定されており、すべてのキャッシュを削除したい場合の仕様となります。
参考:https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Invalidation_Requests.html
キャッシュ削除の手順
AWSのコンソールから、CloudFrontから対象のディストリビューションを選択、キャッシュ削除のタブから「キャッシュ削除を作成」をすることでキャッシュ削除を実行することができます。
そこで、キャッシュ削除対象のオブジェクトパスを指定し、「キャッシュ削除を作成」をして実行します。
仕様
2024年6月頃までは、オブジェクトパスに"/"を設定することで対象ディレクトリのキャッシュ削除ができていました。
2024年9月時点では、オブジェクトパスに"/*"を設定しないとキャッシュ削除ができないように変更されていました。
GithubActionsでの注意点
GithubActionsから実行する場合は、node-version20でsetup-node@v4を利用し、以下のように設定する必要がありました。
# 抜粋
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Delete Cloudfront Cache
run: aws cloudfront create-invalidation --distribution-id ${{ env.CLOUDFRONT_DISTRIBUTION_ID }} --paths '${{ env.CLOUDFRONT_TARGET_PATH }}'
※手元の環境では、元々node-version17で、setup-node@v3を使用していました
※その場合はオリジンとは別のオブジェクトパスに対してのキャッシュ削除が実行されてしまうようなので注意
エンジニア募集中
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!