AWS CloudFront는 콘텐츠 전송 네트워크(CDN) 서비스를 지원하는 완전 관리형 AWS 서비스입니다.
AWS CloudFront를 사용하면 콘텐츠 전송 속도를 높이고 보안을 강화하며, 비용 효율적인 방식으로 대규모 트래픽을 처리할 수 있습니다.
클라우드 환경에서 글로벌 사용자 기반을 지원하거나 빠른 응답이 필요한 애플리케이션을 운영하려면 CloudFront는 필수적인 선택지가 될 수 있습니다.
1) AWS 콘솔 - CloudFront - Create distribution

2) 생성 마법사에서 아래 옵션들을 구성


OAI
- public access를 disable 시킨 S3 버킷에 CloudFront만 접근하게 하기 위해 OAI(origin access identity)를 생성한다.






3) 생성된 Distribution

4) S3 버킷 policy에 OAI 설정
S3 콘솔 -> Buckets -> 내 버킷 -> Permissions 탭 -> Bucket policy
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3xxxxxxxxX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-company-oregon/*"
}
]
}
S3 버킷의 ARN 확인하기
접속 Test
- {CloudFront Distribution domain name}/{S3버킷에 업로드된 파일명}
5) Route53에 Record 등록

또는

{Distribution domain name}/{S3 버킷에 업로드된 object명}
< Cache key and origin requests >
TTL
- Origin에 더 빠르게 접근하기 위해, 전세계에 퍼져 있는 것이 distribution인데, origin에 있는 Data의 값이 변경될 경우, 그 변경된 값이 전세계의 Edge location에까지 반영되기 까지 소요되는 시간
Legacy cache setting

CloudFront 엣지 캐시에서 파일이 만료되기 전에 파일을 제거해야 할 경우, 엣지 캐시에서 파일을 무효화합니다.
Cache 무효화
aws cloudfront create-invalidation --distribution-id E2xxxxxxx --paths "/test/metafile01.jpg"

aws cloudfront get-invalidation --id IJ1111111 --distribution-id E2xxxxxxxx

