S3に上げたブログの記事の一部が更新されず、画面がおかしなことになるのでCloudFrontのキャッシュを削除して更新内容を即時反映させる方法を書く。
手順は画面からポチポチする方法とAWS CLIを使う方法を書く。
キャッシュ削除
CloudFront Distributionsの一覧でキャッシュを消したいIDを選択する。
Invalidationsタブを選択してCreate Invalidationを選択。
削除したいObjectのPathを入力する。全部削除したい場合は/*を入力すればよい。
削除指定するPathの数で課金されるようなのでワイルドカードを指定したほうがよい。
ちなみに1000リクエストまで無料でそれ以降は1リクエスト0.005USD。
AWS CLIからキャッシュを削除
AWS CLIをインストール
CentOSでインストールする。他の環境でもPythonがインストールされていればpipでインストールできるので読み替えてください。
$ yum install python-setuptools -y |
CloudFrontの権限を持ったユーザを作成する
awsのiamで使用するユーザに対してCloudFrontFullAccessを付与する。
CLIの設定と確認
aws_access_key_idの設定をしていなければ以下のように設定しておく。
$ vi ~/.aws/credentials |
CLIが動作することを確認してCloudFrontが操作できるようにする。
$ aws --version |
キャッシュが削除できるか確認する。
指定するdistribution-idはCloudFrontの画面に記載してあるのでそれを指定する。
$ aws cloudfront create-invalidation --distribution-id *********** --paths '/*' |
実行後、"Status": "InProgress"
が含まれたそれっぽいJSONが表示されればうまく実行できている。