CloudFront는 CDN(Content Delivery Network) 서비스로 Edge에 캐싱을 해둠으로써 End User가 더 빠른 속도로 Read할 수 있도록 도와줍니다.
CloudFront를 사용함으로써 DDos역시 예방할 수 있습니다.
그 외에도 EC2 Instance나 ALB, S3 정적 웹사이트 등 HTTP 백엔드로도 연결할 수 있습니다.
vs S3 Cross Region Replication
각 리전별로 S3 설정을 해야 합니다.
대신, TTL을 가진 캐싱 방식이 아닌 실시간 업데이트 방식입니다.
Dynamic Content(자주 변하는)에 대해서는 이 방식이 유리합니다.
CloudFront는 가리키는 대상 객체가 변경되어도 정책상 바로 반영되지 않고 캐싱된 데이터를 클라이언트에게 제공합니다.
CloudFront Cache안에 있는 모든 Object는 고유의 ID인 Key값을 가지게 됩니다.
Key는 hostname + resource portion
형태로 이루어져 있습니다. 하지만 CloudFront Cache Policies를 이용하여 다른 정보를 Key에 추가할 수도 있습니다.
파일 무효화를 사용하면 캐싱을 지우고 새로 적용된 객체의 내용을 CloudFront에 다시 배포하게 됩니다.
Cache Key에 전달하지 않고 origin으로 보낼 Header들이 필요할 때 사용합니다. 예를 들어 Cookie값을 Cache에서 사용하진 않고, Origin에서 custom하게 검증하고 싶다면 이 정책을 사용하면 됩니다.
URL은 각 객체에 대해 단일 URL이 존재하지 때문에 하나의 객체를 외부에 제공할 때 사용하고, Cookie는 여러 객체에 동시에 접근할 수 있도록 하기위해서 사용합니다.
Group 내에 있는 Origin들간 장애 발생 시 다른 Origin으로 유도하여 고가용성을 유지할 수 있습니다.
S3에서 모든 객체는 비공개이고, 객체 소유자만 객체에 접근할 수 있습니다.
객체 소유자가 객체에 대해서 임시 URL을 만들고 공유를 하면, IAM 권한이 그대로 적용된 채로 객체를 제3자가 접근할 수 있습니다.