Tạo bản phân phối CloudFront cho S3 Bucket
Trong bài học trước chúng ta đã tạo một Amazon S3 Bucket.
Trong bài viết này, tôi sẽ hướng dẫn bạn tạo một bản phân phối CloudFront để phân phối nội dung trên một S3 Bucket tới người dùng nhanh hơn.
Về cơ bản có 2 cách để kết nối CloudFront và S3 Bucket.
Cách thứ nhất là kết nối trực tiếp CloudFront vào S3 Bucket thông qua S3 Rest API Endpoint.
- S3 Rest API Endpoint: {bucket-name}.s3.amazonaws.com
Cách thứ hai là kết nối CloudFront với S3 Bucket thông qua S3 Website Endpoint nếu Bucket này đã được bật tính năng "Static Website hosting".
- S3 Website Endpoint: {bucket-name}.s3-website.{s3-region-id}.amazonaws.com
Kết nối CloudFront vào một S3 Bucket thông qua S3 Website Endpoint được khuyến khích sử dụng. Vì có nhiều tính năng của một "S3 Static Website" thực sự có ích, chẳng hạn nó cho phép thiết lập các quy tắc chuyển hướng (redirection) với nhiều điều kiện khác nhau.
1. Tạo CloudFront Distribution
Trước hết, đăng nhập vào Amazon CloudFront Console:
Nhấn vào nút "Create distribution" để tạo ra một Distribution (bản phân phối) cho S3 Bucket của bạn.
Lựa chọn giá trị cho "Origin domain" từ một danh sách, thực chất nó là danh sách các "S3 Rest API Endpoints" (Tương ứng với các Buckets của bạn).
Nếu S3 Bucket của bạn đã được bật tính năng "Static Website hosting", một gợi ý sẽ được hiển thị để bạn kết nối CloudFront vào S3 Static Website thay vì kết nối trực tiếp vào S3 Bucket.
- S3 Rest API Endpoint: {bucket-name}.s3.amazonaws.com
- S3 Website Endpoint: {bucket-name}.s3-website.{s3-region-id}.amazonaws.com
Tắt tính năng Web Application Firewall (WAF), sử dụng tính năng này bạn phải trả thêm chi phí. Nếu muốn sử dụng bạn có thể cấu hình sau.
Chọn trang chủ mặc định cho website.
Cuối cùng, chấp nhận tất cả các tuỳ chọn mặc định khác và nhấn nút "Create distribution".
Sau khi nhấn nút "Create distribution", bản phân phối của bạn sẽ được tạo ra gần như ngay lập tức. Sau đó nó tự động được triển khai, quá trình này có thể tốn vài phút.
Sau khi quá trình triển khai kết thúc bạn có thể truy cập vào website của bạn thông qua tên miền con của CloudFront, giống thế này:
- https://{lowercase-distribution-id}.cloudfront.net
2. Cần phải làm gì tiếp?
Ở trên chúng ta đã tạo một bản phân phối CloudFront cho S3 Bucket với các tuỳ chọn mặc định. Vẫn cần thêm các cấu hình khác để có một bản phân phối CloudFront hoàn chỉnh, dưới đây là một vài bài viết được đề xuất cho bạn:
Error pages:
Nếu bạn truy cập vào một đường dẫn không tồn tại, có thể có thông báo lỗi giống dưới đây. Để tránh điều này xẩy ra bạn cần phải cấu hình các trang lỗi cho CloudFront.
Cấu hình tên miền tuỳ chỉnh và HTTPS/SSL
Web Application Firewall (WAF)
AWS WAF là tường lửa ứng dụng web giúp bảo vệ các ứng dụng web khỏi các cuộc tấn công bằng cách cho phép bạn định cấu hình các quy tắc, cho phép, chặn hoặc giám sát (đếm) yêu cầu web dựa trên các điều kiện mà bạn xác định. Các điều kiện này bao gồm:
- IP, HTTP headers, HTTP body, URI strings, SQL injection, cross-site scripting
- Amazon CloudFront WAF
Các hướng dẫn Amazon Web Services
- Giới thiệu về Amazon Web Services (AWS)
- Giới thiệu về Amazon S3
- Giới thiệu về Amazon Cloudfront và kiến trúc của nó
- Làm sao để giảm chi phí Amazon Cloudfront?
- Vô hiệu hoá bộ nhớ đệm CloudFront
- Giới thiệu về DigitalOcean Spaces
- Hướng dẫn tạo DigitalOcean Spaces Bucket
- Giới thiệu về Amazon ACM
- Java Awssdk S3 Tải tệp lên S3 Bucket với S3Client
- Tạo AWS accessKeyId/secretAccessKey
- Java Awssdk S3 Liệt kê các đối tượng trong S3 Bucket
- Lưu trữ (host) một Website tĩnh trên Amazon S3
- Vô hiệu hoá bộ nhớ đệm của CloudFront với Java
- Tạo DigitalOcean Spaces Access Key
- Java Awssdk Các Credentials Provider thông dụng
- Java Awssdk Tạo và sử dụng ProfileCredentialsProvider
- Java Awssdk Tạo và sử dụng EnvironmentVariableCredentialsProvider
- Java Awssdk Tạo và sử dụng SystemPropertyCredentialsProvider
- Java Awssdk S3 Tải object lên với S3TransferManager
- Java Awssdk S3 Tải object xuống với S3TransferManager
- Java thao tác với DigitalOcean Spaces sử dụng S3TransferManager
- Java tạo, liệt kê và xoá S3 Bucket
- Aws Console Tạo tài khoản người dùng IAM
- Tạo một vùng chứa Amazon S3 (S3 Bucket)
- Các quy tắc chuyển hướng cho S3 Static Website
- Cấu hình tên miền tuỳ chỉnh cho website tĩnh Amazon S3
- Tạo bản phân phối CloudFront cho S3 Bucket
- Cấu hình các trang phản hồi lỗi cho CloudFront
- Tạo các chính sách S3 Bucket
- Công cụ tạo các chính sách cho AWS - policygen
- So sánh Amazon S3 Rest API Endpoint và S3 Web Endpoint
- Chuyển hướng trong S3 Website với x-amz-website-redirect-location
- Di chuyển (migrate) dịch vụ DNS tới Amazon Route 53
- Chuyển (transfer) đăng ký tên miền tới Amazon Route 53
- Yêu cầu chứng chỉ SSL từ Amazon ACM
Show More