lambda経由でCloudFrontキャッシュを削除する
概要
個人的にポータルページ的なものを作った際にS3バケットの更新と同時にCloudFrontのキャッシュを自動的に削除したくて試した方法を紹介します。
ついでに正常実行時にSlackへ通知するようにしてみました。。。
方法
今回はlambdaにCloudFrontのキャッシュ削除関数を置いておく方法をとります。
必要に応じてアプリケーションからawsSDK経由で、またはawsサービスに設定できるトリガー経由でも何でもOK。
実装
そんなに長いコードではないので貼ります。
実装時の注意点としてはキャッシュ削除コマンド後、プログラムとして待たないようにすることです。
CloudFrontのキャッシュ削除は時間がかかるので、lambdaの処理時間を余分に使ってしまいます。
場合によっては関数の実行時間上限に当たってしまうので、削除完了したかどうかは待たないようにするのがいいかと思います。
あとはconst distributionId = process.env['distributionId'];
の部分について。
初めて作ったのでLambdaの環境変数に直接値入れてましたが、Lambdaの呼び出し時に呼び出し側からパラメータとして指定してあげれば汎用的に使用できるようになるかと思います。
必要なパッケージも少ないので参考になりましたら幸いです。
1件のコメント