1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsでCloudFrontのキャッシュ削除に失敗した原因と解決策

Last updated at Posted at 2025-03-10

はじめに

こんにちは、Gakken LEAPのバックエンドエンジニアのmizunoです。
サイトのリリース時、GitHub ActionsからCloudFrontのキャッシュ削除を行っていたのですが、ファイルが古いまま表示される問題が発生しました。
原因を調査したところ、AWS CLIのコマンド実行時にワイルドカードの扱いが正しくなかったことが判明しました。

問題の詳細

GitHub Actionsのワークフローで、以下のコマンドを実行していました。

env:
  CLOUDFRONT_DISTRIBUTION_ID: "CLOUDFRONT_DISTRIBUTION_ID"
  CLOUDFRONT_TARGET_PATH: "/*"

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      # ... (他の処理) ...
      - name: Delete Cloudfront Cache
        run: aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths $CLOUDFRONT_TARGET_PATH

しかし、この設定ではキャッシュが正しく削除されず、リリース後も古いコンテンツが表示されることがありました。

原因

原因は、AWS CLIのドキュメントに記載されている通り、ワイルドカードを含むパスを引用符で囲む必要があったためです。
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Invalidation_Requests.html

ファイルの無効化にAWS Command Line Interface (AWS CLI) を使用し、* ワイルドカードが含まれるパスを指定する場合は、以下の例のようにパスを引用符 (") で囲む必要があります。
aws cloudfront create-invalidation --distribution-id distribution_ID --paths "/*"

環境変数を展開した結果、コマンドが以下のようになっていました。

aws cloudfront create-invalidation --distribution-id distribution_ID --paths /*

シェルがワイルドカードを解釈してしまい、CloudFrontに意図したパスが渡らなかったため、キャッシュ削除が失敗していました。

修正方法

環境変数の使用を止め、直接コマンド内に引用符で囲んだパスを指定するように修正しました。

env:
  CLOUDFRONT_DISTRIBUTION_ID: "CLOUDFRONT_DISTRIBUTION_ID"

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      # ... (他の処理) ...
      - name: Delete Cloudfront Cache
        run: aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/*"

これにより、シェルがワイルドカードを解釈する前に、CloudFrontに正しいパスが渡されるようになり、キャッシュ削除が成功しました。

まとめ

今回の問題から、以下の教訓が得られました。

  • 環境変数を扱う際は、展開される値を確認する
  • AWS CLIのドキュメントをよく読む

これらの教訓を活かし、今後の開発に役立てていきたいと思います。

エンジニア募集

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?