객체 무효화라고 하는 create_invalidation CloudFront에서 설정해놓은 경로의 캐시를 삭제후 원래 출처로부터 정보를 가져와 캐싱하는 것이다.
AWS CloudFront로 보면 원래 출처가 s3이고 CloudFront 에서 어떤 경로에 대한 객체무효화 처리를 하면 s3에 존재하는 정보를 가져와 다시 캐싱처리하는 것!
s3 파일이 수정됐다면 원래 캐싱 정보를 삭제하고 새로 캐싱처리를 할 때 사용할 수 있다.
boto3
라이브러리를 사용하여 aws s3 나 cloudfront에 접근할 수 있다.import os
from dotenv import load_dotenv
import boto3
load_dotenv()
paths = [ "file path" ]
create_invalidation(paths)
def create_invalidation(paths, distribution_id=os.environ.get('DISTRIBUTION_ID')):
cf = boto3.client('cloudfront')
try:
response = cf.create_invalidation(
DistributionId=distribution_id,
InvalidationBatch={
'Paths': {
'Quantity': len(paths),
'Items': paths
},
'CallerReference': str(time.time()).replace(".", "")
}
)
return True
except:
return False
DistributionId
: 클라우드프론트 고유아이디Quantity
: 무효화할 경로 갯수Items
: 경로 배열CallerReference
: 중복호출되지 않도록 고유한 값을 넣어야함!!