Harada's Diary

awsコマンドでCloudFrontのキャッシュを一旦消す

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/