Amazon에서 제공하는 CDN Service이다.
이미지나, 동영상을 캐싱하여 엣지 로케이션에 두고 사용자에게 제공하여 먼 거리에 있는 사용자라더라도
빠르게 데이터를 전송할 수 있는것이다.
요청 받은 컨텐츠가 있다면 바로 전달하고 없다면 Origin 에서 받아온뒤 캐싱하고 제공한다.
Origin은 EC2나 on-premise server가 될것.
Origin : 실제 컨텐츠가 존재한 근원이다. (S3, EC2, ELB, Route, 53, on-premise)
Distribution : CloudFront의 CDN 구분 단위이다.( 여러 엣지 로케이션으로 구성된 컨텐츠 제공 채널)
TTL : 캐싱된 아이템이 살아 있는 시간이다. TTL 시간 이후 캐싱된 아이템이 삭제된다.
파일 무효화 : TTL 이전에 캐싱된 아이템을 삭제하는것. -> 해당 방식을 사용하면 비용이 발생한다. (한달에 천건은 무료.)
Cache Key : 어떤 기준으로 컨텐츠를 캐싱할 것인지 결정한다. 기본적으로 URL 이 되며 이후 Header와 Cookie, 쿼리스트링등을 사용 가능하다.
(Header 와 Cookie를 사용하여 국가별로 다른 컨텐츠를 보여줄 수 있다.)
정책(policy) :
정적 : server에서 처리할 것이아닌 client가 직접 보여주는 내용들 ( image ,CSS)
동적 : 로그인 / 게시판 처럼 실시간 데이터
정적 / 동적 데이터를 분기처리하여 S3(정적 데이터) 나 EC2에서 가져올 수 있다.
정적 컨텐츠 : 캐싱으로 접근 속도 최적화
동적 컨텐츠 : 네트워크 최적화, 연결 유지, 압축등을 사용한다.
origin에서 https 를 지원하지 않아도 https통신을 지원할 수 있도록 구성이 가능하다.
사용자 정의 인증서(SSL)을 사용하려면 반드시 SSL 이 us-east1 region에 있어야 한다.
client가 AWS Certificate Manager (ACM)을 사용하여 cloud front 에 접근하고 cloud front는 http 통신을 통해 오리진에서 데이터를 가져오는것이다.
지리적 제한이 가능하다.
Lambda@Edge를 사용하여 edge location에서의 작업을 수행할 수 있다.
Lambda@Edge를 사용할 수 있는 부분은 4단계로 나뉜다.
1.client 가 clount front에 요청을 보내기 전에.
2.cloud front가 origin에 요청을 보내기 전에.
3.origin이 cloudfront에 응답을 보내기 전에.
4.cloudfront가 client에게 응답을 보내기 전에.
Lambda@eage 의 1/6 비용으로 js 실행.
사용 사례 : 캐싱, 헤더 조작.
URL에는 시작시간, 종료시간, IP, 파일명, URL의 유효기간 등의 정보를 담을 수 있다.
이 URL의 접근 이외의 접근을 먹고 허용된 유저에게 URL을 전달하여 컨텐츠 제공을 제어 가능하다.
여러 제약 사항 설정 가능하고 다수의 파일 및 스트리밍 접근 허용이 가능하다.
S3의 컨텐츠를 CloudFront를 사용해서만 볼 수 있도록 제한하는 방법
CloudFront만 권한을 가지고 나머지는 권한을 가지지 않는다.
S3 Buket Policy로 cloud Front의 접근을 허용해야 한다.
Cloud Front와 origin 사이에 통신을 암호화 하는 방법.
해당 포스팅은 https://www.youtube.com/watch?v=6C9284C-zP4 에 의존하고 있습니다.