네이버 쇼핑 EP 연동을 위해 매일 정제된 TSV 파일을 S3에 업로드하고 있는데, 단순히 S3 퍼블릭 URL을 사용하는 방식에는 두 가지 문제가 있었다.
CloudFront는 AWS의 전 세계 캐싱 CDN 서비스다.
정적 파일을 CloudFront 배포 ID에 연결하면, 사용자에게는 아래처럼 CloudFront 도메인으로 URL을 제공할 수 있다.
S3 원본 URL: https://**my-example-bucket**.s3.**ap-northeast-2**.amazonaws.com/final/final_data_daily.tsv
CloudFront URL: https://**d1234abcd1234.cloudfront.net**/final/final_data_daily.tsv
Cloud Function에서 파일을 업로드할 때마다, 아래 코드처럼 CloudFront 캐시를 무효화(invalidation) 하도록 구현했다.
cloudfront.create_invalidation(
DistributionId=cloudfront_dist_id,
InvalidationBatch={
"Paths": {"Quantity": 1, "Items": [f"/{object_name}"]},
"CallerReference": str(datetime.now().timestamp()),
},
)
CallerReference
는 매번 고유해야 함 → timestamp로 처리Google Cloud Function
↓
정제된 TSV 파일 생성
↓
S3 업로드
↓
CloudFront 캐시 무효화
↓
(사용자 요청)
CloudFront → 최신 S3 파일 제공