CloudFront Distribution là gì
Distribution định nghĩa cách mà CloudFront phân phối nội dung, nó bao gồm:
- Origin: nơi chứa nội dung gốc (S3 bucket, EC2, ALB, API Gateway…).
- Behaviors: cách CloudFront xử lý request (caching, method allowed, redirect…).
- Settings khác: HTTPS, logging, geo restriction, WAF.
Khi tạo một CloudFront distribution, bạn sẽ nhận được một domain name do CloudFront cấp (ví dụ: d1234abcd.cloudfront.net) để người dùng truy cập.
Các loại Distribution
CloudFront hỗ trợ hai loại distribution chính:
| Loại | Mục đích | Ghi chú |
|---|---|---|
| Web distribution | Phân phối nội dung web qua HTTP/HTTPS (static/dynamic) | Loại phổ biến nhất. |
| RTMP distribution (deprecated) | Streaming media qua Adobe RTMP | AWS đã ngừng hỗ trợ RTMP mới, nên dùng HTTP-based streaming như HLS/DASH. |
Trong hầu hết trường hợp hiện nay, bạn sẽ tạo Web distribution.
Origin trong Distribution
Origin: là nơi CloudFront lấy dữ liệu gốc, có thể là S3 bucket, Application Load Balancer, EC2 instance, hoặc bất kỳ HTTP server nào.
CloudFront có thể sử dụng nhiều loại origin:
- Amazon S3: lưu trữ static files.
- EC2 / On-Premises Server: Host dynamic content.
- Application Load Balancer (ALB) hoặc Network Load Balancer (NLB).
- API Gateway: phân phối API globally.
Một số tùy chọn quan trọng khi cấu hình origin:
- Origin Domain Name: tên domain hoặc endpoint của origin.
- Origin Path: path con cố định thêm vào mọi request gửi tới origin.
- Origin Protocol Policy:
- HTTP Only
- HTTPS Only
- Match Viewer (HTTP hoặc HTTPS tùy request gốc)
Group Origin là gì
Origin Group cho phép bạn cấu hình nhiều origin để tăng tính sẵn sàng. Nếu origin chính (primary) không phản hồi, CloudFront sẽ tự động chuyển sang origin phụ (secondary).
Nguồn: AWS
Cách hoạt động:
- CloudFront gửi request tới origin chính.
- Nếu origin chính không phản hồi (timeout hoặc lỗi 5xx), CloudFront sẽ chuyển sang origin phụ.
- Origin Group chỉ hỗ trợ failover giữa hai origin, không hỗ trợ load balancing.
- Cơ chế phát hiện lỗi:
- HTTP status codes: ví dụ 500, 502, 503, 504.
- Timeout.
Behaviors trong Distribution
Behavior xác định cách CloudFront xử lý request cho một path pattern cụ thể. Trên thực tế CloudFront distribution có thể có nhiều hơn một Origin server phía sau.
→ Cần có cơ chế phân biệt request nào sẽ điều hướng tới đâu.
Thứ tự các behaviors rất quan trọng, nếu đặt /* lên đầu thì các behavior sẽ không hoạt động.
Các thiết lập quan trọng:
- Path Pattern: xác định URL nào dùng behavior này (ví dụ:
/images/*). - Viewer Protocol Policy:
- HTTP and HTTPS
- Redirect HTTP to HTTPS
- HTTPS Only
- Allowed HTTP Methods: GET/HEAD hoặc thêm POST/PUT/DELETE nếu cần.
- Cache Policy:
- TTL tối thiểu/tối đa.
- Caching dựa trên query strings, headers, cookies.
- Origin Request Policy: xác định thông tin nào từ request của viewer được gửi tới origin.
- Compress Objects Automatically: bật gzip/brotli để giảm dung lượng.
Các Step tạo CloudFront Distribution
- Mở AWS Management Console → CloudFront → Create Distribution.
- Chọn Web (Default).
- Thêm Origin:
- Chọn S3 bucket, ALB hoặc nhập domain.
- Cấu hình Origin Protocol Policy.
- Thêm Behaviors:
- Behavior mặc định (
Default (*)). - Thêm behavior riêng cho path cụ thể nếu cần.
- Behavior mặc định (
- Bật HTTPS:
- Chọn SSL certificate (ACM certificate hoặc Default CloudFront certificate).
- Bật Logging (optional):
- Ghi log truy cập vào S3 bucket.
- Tạo Distribution:
- Chờ trạng thái chuyển từ In Progress sang Deployed.
- Test bằng cách truy cập domain CloudFront vừa cấp.
Một số thiết lập bổ sung
- Geo Restriction: giới hạn hoặc cho phép truy cập từ một số quốc gia.
- Custom Error Pages: hiển thị trang lỗi tùy chỉnh.
- Origin Groups: cấu hình nhiều origin cho failover.
- Field-Level Encryption: mã hóa dữ liệu nhạy cảm giữa viewer và origin.