2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】lambdaでCloudFrontのキャッシュを削除する方法

Posted at

はじめに

S3にアップロードした画像や動画は、CloudFront側で自動で検知して更新を反映してくれないので、いつまでもキャッシュされた古いデータを見てしまうということが起こり得る。
そのため、CloudFront側でキャッシュを削除する必要がある。これをLambdaでスケジューリング実行する。一応手動実行の方法も記載しておきます。

CloudFrontのキャッシュ削除(手動実行)

手動実行でキャッシュを削除する方法は以下

CloudFrontのキャッシュ削除(Lambda)

Lambda実行でキャッシュを削除する方法は以下

Lambda関数の作成

  • 関数名:remove-cache
  • ランタイム:Python3.9
  • アーキテクチャ:arm(x86でも可)
  • ロール:「CloudFrontFullAccess」のポリシーがアタッチされたロールを設定
  • 関数の処理を設定
from __future__ import print_function

import boto3
import time

def lambda_handler(event, context):
    client = boto3.client('cloudfront')
    invalidation = client.create_invalidation(DistributionId='【ディストリビューションID】',
        InvalidationBatch={
            'Paths': {
                'Quantity': 1,
                'Items': ['/*'] // ファイルパス指定
            },
        'CallerReference': str(time.time())
    })
  • トリガー(EventBridge CloudWatch)
    何をトリガーにするかは要件による。S3にオブジェクトが置かれたことをトリガーにして、実行するもよし。
    スケジュール式はcronまたはrate式を使って、スケジュールを設定する。UTCでもローカルタイムでも設定可能。

まとめ

キャッシュを頻繁に削除する場合は、上記の手動工程をいちいち行わなければいけない。そこでLambdaのスケジュール実行を行うと自動化できる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?