

CloudFront란?

CloudFront : CDN(Content Delivery Network) 역할의 서비스
캐싱을 통해 콘텐츠(이미지, HTML 등)를 전 세계로 빠르게 전송할 수 있게 해줌
전 세계 수많은 Edge Location(캐싱 서버), 글로벌 고속 백본 네트워크 확보
DDoS 보호 서비스 (AWS Shield Standard)
CloudFront 관련 용어
배포(Distribution) : CloudFront의 기본 단위, 각 배포는 고유의 도메인을 가짐 (Route 53으로 구입한 도메인에 연결 가능)
오리진(Origin) : CloudFront에서 원본 파일을 가져오는 위치(기본 설정 S3, 이외에도 EC2, ELB, 외부 서버 등으로 설정 가능)
CloudFront 데이터 전달 과정
요청이 발생한 데이터에 대해 Edge Location의 캐싱 여부 확인
존재한다면 데이터 응답(Cache hit), 캐싱되어 있지 않다면 Origin으로 요청 포워딩(Cache miss)
CloudFront 정책
캐시 정책(Cache Control) : 캐싱 방법 및 압축
원본 요청 정책(Origin Request) : Origin으로 어떤 내용(쿠키, 헤더, 쿼리스트링)을 보낼 것인지
응답 헤더 정책 : 응답과 함께 실어 보낼 HTTP Header
CloudFront 보안
Signed URL : CloudFront의 컨텐츠에 접근할 수 있는 URL 제공 (하나의 컨텐츠 제공)
Signed Cookie : 다수의 컨텐츠를 제공하기 위해 사용
Origin Access Identity(OAI) : S3의 컨텐츠를 CloudFront를 사용해서만 볼 수 있도록 제한
파일 무효화(invalidation) : TTL이 지나기 전에 강제로 캐시를 삭제하여 수정된 파일이 캐시에 반영될 수 있도록 하기

CloudFront 배포 생성하기
S3 버킷에 있는 객체를 가져오려고 할 때 전 세계에 분포한 엣지 로케이션에 객체가 캐싱되어 빠르게 전송 가능
함수 연결 옵션을 통해 캐시 동작이 발생했을 때 CloudFront의 함수나 Lambda@Edge 등의 함수 호출 가능







{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn::aws:s3:::<버킷 이름>/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::<AWS 계정 ID>:distribution/<배포 ID>"
}
}
}
]
}


객체의 S3 URL로 곧바로 접근할 수 있는 권한이 없음
CloudFront의 배포 도메인 이름으로 접속
X-Cache가 Miss from cloudfront에서 Hit from cloudfront로 바뀜, CloudFront에 캐싱이 되었다는 의미



CloudFront 배포 삭제하기


📢 세 줄로 정리해보기!
1️⃣ CloudFront는 CDN 역할의 서비스로, 캐싱을 통해 콘텐츠를 빠르게 전송할 수 있게 해준다.
2️⃣ CloudFront의 기본 단위는 배포(Distribution)다.
3️⃣ CloudFront로 S3 Origin에서 원본 파일을 가져오려면 S3 버킷 정책을 수정해야 한다.
참고 자료
└ 소플의 처음 만난 AWS
└ CloudFront 개념 원리 & 사용 세팅 정리