Origin Access Control
Trước đây là g Origin Access Identity (OAI), Sử dụng để Sign URL request tới Origin

Origins and Distributions
Origin có thể là S3, EC2, Load Balancer, hoặc bất kỳ HTTP server nào
Origin group: thường được sử dụng để nâng high-availability




Caching and Behaviors
- Cache ở mỗi Edge Location, Sử dụng cache key
- Cache key mặc định sẽ bao gồm hostname + resource portion (URI + HTTP Medthod)
- Có thể giảm hoặc tăng request tới origin bằng cách tăng hoặc giảm TTL
- Có thể invalidate part cache bằng cách sử dụng CreateInvalidation API
- Tất cả các HTTP Header, Cookie, query string mà include trong Cache Key sẽ tự động được foward tới origin
Cache Policy
Sử dụng để tạo Cache Key phức tạp, vd như dựa theo device, language để cache. Cache Policy có thể dựa theo các item sau
- HTTP Header: None – Whitelist
- Cookie: None, Whitelist, Include All Except, All
- Query String: None, Whitelist, Include All Except, All
Cache Policy cũng bao gồm TTL (0s tới 1 năm), có thể set bởi Origin bằng cách sử dụng header Cache-Control, Expires…

Cache Behavior
Setting mỗi loại URL khác nhau sẽ có cách cache khác nhau, hoặc route tới các origin khác nhau dựa theo Content type hoặc Path pattern, ví dụ:
- /images/* sẽ tìm kiếm trong S3
- /api/* sẽ connect tới ALB
- /* (default nếu không match 2 cái trên, luôn luôn là behavior cuối cùng, và luôn luôn là /*)
Cache Invalidation
Sử dụng khi origin có update nhưng các Edge của Cloudfront đã cache object, cần clear cache.
Có thể chỉ định toàn bộ file (*) hoặc theo prefix (/images/*)

Origin Request Policy
Sử dụng khi muốn forward Header, Cookie, Query String tới origin mà không muốn bao gồm các thông tin này trong Cache Key. Có thể tạo Policy tuỳ ý hoặc sử dụng Predefined Managed Policies.

Geo Restriction
Sử dụng 3rd party Geo-Ip database, xác định country user đang truy cập, từ đó thiết lập 1 trong 2 mode sau
- Allowlist: cho phép các country trong list được truy cập
- Blocklist: chặn các country trong list truy cập
- None: Cho phép tất cả
Signed URLs

Khi tạo Sign URL/Cookie, cần attach policy với các thông tin như:
- Thời gian hết hạn
- IP có thể access
- Trusted signed (AWS account nào có thể tạo Sign URL)
Sign URL thường valid trong 1 khoảng thời gian ngắn nếu share content (movie, music), hoặc dài nếu resource được chỉ định cho 1 user cụ thể.
- Signed URL: Cho phép truy cập 1 file
- Signed Cookie: Cho phép truy cập nhiều file, có thể sử dụng lại
Price Class
- Price Class All: Tất cả Region
- Price Class 200: Gần như tất cả, trừ những Region phí đắt
- Price Class 100: Chỉ bao gồm những Region phí rẻ

Field Level Encryption
Chỉ định các field (max 10) cần encrypt khi Post request tới Edge Cloudfront, Edge Cloudfront sẽ encrypt các field đó bằng public key để gửi tới Cloudfront, rồi gửi tới origin. Origin có private key có thể decrypt các field này để lấy thông tin.
Real Time Log
- Lấy realtime thông tin request được nhận bởi cloudfront rồi gửi tới Kinesis Data Stream
- Monitor, analyze, thực hiện action cần thiết
- Sampling Rate: Chọn % request sẽ nhận
- Chỉ định field và Cache Behavior (Path pattern)





Origin Access Identity
Giới hạn quyền truy cập, chỉ cho phép CloudFront connect tới các Origin, VD như chỉ cho phép principal của cloudfront truy cập S3 như hình dưới

Đối với EC2 có thể sử dụng list IP từ cloudfront để giới hạn.
SSL/TLS and SNI
SSL của Origin phải là public certificate.

SNI là 1 IP của cloudfront có thể sử dụng nhiều SSL

Lambda@Edge
Xử lý request/response trong cloudfront
