S3のuploadでCloudFrontのキャッシュをクリアする
やりたいこと
S3のファイルを 更新 / 削除 したら、CloudFrontのキャッシュを消す
手順
Lambdaを作成する
コード例
var AWS = require('aws-sdk'); var cf = new AWS.CloudFront(); var distributionId = ' < CloudFront Distribution ID > '; exports.handler = async (event, context) => { var timestamp = new Date().getTime().toString(); var paths = { Quantity: 1, Items: ['/' + event.Records[0].s3.object.key], }; var params = { DistributionId: distributionId, InvalidationBatch: { CallerReference: timestamp, // 一意な値を用意するため現在時刻にしている Paths: paths, } }; await cf.createInvalidation(params).promise(); console.log('invalidate: ' + paths.Items[0]); return; };
トリガーにS3を追加する
以下の設定でS3に追加する
- バケット: 対象のバケットを選択
- イベントタイプ: PUT
- プレフィックス: 空
- サフィックス: 空