StaticPressで静的化&S3ホスティングしたWordpressですが
CloudFrontでCDNキャッシュしているので、更新毎にキャッシュクリアする必要があります。
やり方はとっても簡単。
管理画面からCloudFront -> Invalidationsタブを選択し、「Create Invalidation」のボタンを押す。
そこで「/*」と指定してInvalidateするだけ。
これでまとめて全キャッシュを削除できます。
めんどくさい…
そう、いちいち画面からポチポチするの面倒なんです。。
じゃあAWS CLI使ってコンソールからのほうが遥かに楽やん。
てことでそのやり方について。
AWS CLIをインストール
CentOSでのインストール方法になります。
# yum install python-setuptools -y # easy_install pip # pip install awscli
CloudFrontの権限を持ったユーザを作成する
awsのiamで使用するユーザに対してCloudFrontFullAccessを付与する。
CLIの設定と確認
aws configureコマンドで対話式でIAM情報を入力します。
以下は実行例です。
# aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json
awsコマンド使えてますね。
# aws --version aws-cli/1.11.167 Python/2.7.5 Linux/3.10.0-693.2.2.el7.x86_64 botocore/1.7.25
awsコマンドでCloudFrontを操作できる様に設定変更します。
# aws configure set preview.cloudfront true
キャッシュを削除
distribution-idはCloudFrontの画面に記載してあるのでそれを指定します。
aws cloudfront create-invalidation --distribution-id *********** --paths '/*'
実行後、"Status": "InProgress"
が含まれたJSONが表示されれば成功です。
↓こんな感じ
{ "Invalidation": { "Status": "InProgress", "InvalidationBatch": { "Paths": { "Items": [ "/*" ], "Quantity": 1 }, "CallerReference": "cli-1507553417-113615" }, "Id": "***********", "CreateTime": "2017-10-09T12:50:18.801Z" }, "Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/***********/***********/***********" }
コマンド1行だけなので、シェルスクリプトにしちゃえばかなり楽ですかね。
※参考サイト
https://ishiis.net/2016/02/21/delete-cache-cloudfront/