CloudFrontのキャッシュ削除をフォームから行うウェブアプリ。
コンテンツ制作者がサーバーにコンテンツをアップした際にCloudFrontのキャッシュを即時削除したいというニーズに応えるため。
yarn buildしてbuildディレクトリ以下を適当な場所にアップロード。
AWSコンソールのCloudFrontのDistributionsから対象のディストリビューションIDをメモする。
IAMでCloudFrontに対してInvalidationを作成する権限を持つユーザーを作成し、そのアクセスキーとシークレットキーを用いる。
以下は参考までにビジュアルエディタで作成したポリシー。2019年4月現在リソースは制限できないので「"*"」となっている
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudfront:GetInvalidation",
"cloudfront:CreateInvalidation"
],
"Resource": "*"
}
]
}
キャッシュを削除するパス。
「/*」で全てのキャッシュを削除。
- Invalidation実行フォーム(一画面のみ)
- ディストリビューションID
- アクセスキー
- シークレットキー
- パス
基本的に技術者は他の手段の方が簡単なのでこのアプリを使う必要は無い。 また可能であればコンテンツ更新時にキャッシュ削除が自動で行われるように自動化するのが吉。
Invalidationsのタブからポチポチと。
https://docs.aws.amazon.com/cli/latest/reference/cloudfront/create-invalidation.html
aws cloudfront create-invalidation --distribution-id S11A16G5KZMEQD \
--paths /index.html /error.html
S3の更新をトリガーにLambdaを発火させてキャッシュ削除をリクエストするのがスマート。
C3 Cloudfront Cache Controllerを使えば容易にキャッシュ削除を自動化できる。
繰り返しになるが可能であればコンテンツ更新時にキャッシュ削除が自動で行われるように好きな言語のAWS-SDKを利用して自動化するのが吉。特に運用が長期にわたる場合は初期に自動化のコストをかけた方が結果的にはコスト安になる。