やりたいこと
CloudFrontのオリジンとしてS3のホスティングを利用している際、S3のファイル格納後にエッジキャッシュをクリアしたい。
環境情報
- aws-cli/2.15.5
やり方
CloudFrontにて該当のDistribution IDを特定し、以下のコマンドを実行する。
$ aws cloudfront create-invalidation --distribution-id xx --paths "/*"
その結果として標準出力に以下のような結果が表示される。
{
"Location": "https://cloudfront.amazonaws.com/2020-05-31/distribution/xx/invalidation/xx",
"Invalidation": {
"Id": "xx",
"Status": "InProgress",
"CreateTime": "...+00:00",
"InvalidationBatch": {
"Paths": {
"Quantity": 1,
"Items": [
"/*"
]
},
"CallerReference": "cli-xx-xx"
}
}
}以下、補足です。
補足
CloudFront経由で公開している資材を以下のようにして更新をかけた場合、CloudFront側でキャッシュを保持していた場合は即座にユーザに反映されません。
aws s3 cp xx s3://xx/xx --recursive
よって明示的にキャッシュの削除を行う必要があり、上で記載したように正規表現を利用してサイト全体のキャッシュの削除も可能です。
尚、実際にクリアできたかどうかは以下のコマンドで該当のイベントのステータスが"Completed"になっているかどうかで把握できます。
$ aws cloudfront list-invalidations --distribution-id xx
{
"InvalidationList": {
"Items": [
{
"Id": "xx",
"CreateTime": "...",
"Status": "Completed"
},
...以上、ご参考になれば幸いです。