CloudFront
- CDN (Content Delivery Network, 콘텐츠 전송 네트워크)
- 여러 엣지 로케이션에서 웹사이트의 콘텐츠를 캐싱해 read 성능 높임
- 지연시간 감소 / 사용자 경험 향상
- 전세계 216개의 접속지점(POP) = edge location
- 전세계에 콘텐츠 분산 / Shield와 Web Application Firewall을 통해 ddos 방어
CloudFront - Origin
- S3 Bucket
- 엣지에서 파일을 전세계로 분산하고 캐싱처리
- CloudFront만 S3 버킷에 접근 가능하도록 Origin Access Control (OAC) 설정 가능
- Origin Access Identity (OAI) 대체
- CloudFront에서 S3에 파일 업로드 가능 (= ingress)
- Custom Origin (HTTP)
- ALB / EC2 Instance / S3 website (먼저 버킷을 정적 S3 웹사이트로 설정)
- 그 외 모든 HTTP Backend
CloudFront vs S3 Cross Region Replication
- CloudFront는 Global Edge Network 사용
- 파일은 보통 1일 TTL을 가지고 캐싱 처리
- 전세계로 공유될 정적 콘텐츠가 있을 경우 유용
- S3 Cross Region Replication은 복제하려는 각 리전을 설정해야함
- 전 세계 모든 리전에 일괄 적용되는 것이 아님
- 파일이 거의 실시간으로 업데이트 됨 (캐싱처리 X 읽기전용)
- 변경이 자주 발생하는 동적 콘텐츠를 소수 리전에 짧은 지연시간 안에 제공해야 할 경우 유용
CloudFront - 캐싱 정책 / 동작
- 기본적으로 캐시 키는 Host + Resource URI로 생성
- (Cache Policy) 필요 시 캐시 키에 Cookie, QueryString, Header 추가 가능 (Whitelist, All include - Except, All)
- 포함하지 않을 경우 캐시 성능이 최상
- (Origin Request Policy) 캐시키에는 포함하지 않되 Origin 요청에는 포함하도록 설정 가능
- (Cache Behavior) 특정 API 요청 (/api/*)에 대해서는 ALB Origin으로, 그 외 API에 대해서는 S3 Origin으로 요청을 보내도록 할 수 있음
- S3에 로그인한 사용자만 처리 가능하도록 가능
- /login 에 접속한 사용자는 EC2 Instance Origin으로 보내 CloudFront 서명된 쿠키 반환
- 해당 쿠키를 통해 그 외 접속 사용자는 S3 Bucket으로 보내 서명된 사용자에 대해서만 S3 접근 가능
Reference
'Programming' 카테고리의 다른 글
[AWS, Certified Developer Associate] Elastic Beanstalk (0) | 2024.05.13 |
---|---|
[AWS, Certified Developer Associate] ECS (0) | 2024.05.12 |
[AWS, Certified Developer Associate] S3 - 암호화, 액세스 포인트 (0) | 2024.05.10 |
[AWS, Certified Developer Associate] S3 - LifeCycle, 이벤트 알림, 성능, Select 및 Glacier Select, 객체 태그, 메타 데이터 (0) | 2024.05.10 |
[AWS, Certified Developer Associate] S3 - 개요, 버킷 정책, 복제, 스토리지 클래스 (0) | 2024.05.07 |