Tìm hiểu tổng quan về Amazon Cloudfront

3 min read

Amazon CloudFront là một dịch vụ phân phối nội dung (Content Delivery Network – CDN) được cung cấp bởi Amazon Web Services (AWS). Nó giúp phân phối dữ liệu, video, ứng dụng và API cho người dùng trên toàn thế giới với độ trễ thấp và tốc độ truyền tải cao.

CloudFront sử dụng mạng lưới các máy chủ toàn cầu của mình để lưu trữ và phục vụ nội dung gần với vị trí của người dùng cuối, giúp cải thiện hiệu suất và trải nghiệm người dùng. Dịch vụ này cũng cung cấp các tính năng bảo mật như SSL/TLS, bảo vệ chống lại DDoS, và tích hợp dễ dàng với các dịch vụ khác của AWS

Origins

  • S3 buckets
    • Sử dụng kết hợp với OAC (Origin Access Control): một dạng bảo mật cho phép cloudfront access tới S3, kết hợp với SSE-KMS để mã hoá/giải mã file khi download/upload, ….
  • Custom Origin
    • ALB
    • EC2
    • S3 website – cái này thường dùng
    • Bất cứ HTTP backend nào cũng được

So sánh Cloudfront với S3 Replication

CloudfrontS3 Replication
Availability– có hệ thống 216 edge loations trên toàn thế giới– sẽ chỉ available ở các region mà mình setup phần replication
Thông tin về dữ liệu (files)– data sẽ được cache theo TTL, khi bucket gốc được update thì cache thường sẽ không được update ngay (trừ khi mình flush cache cũ đi)– data ở các region sẽ được update gần như là realtime khi bucket ở region gốc được update – data ở các relication region cũng thuộc dạng read-only
UsecaseDùng để distribute static content (không bị update quá thường xuyên)Distribute dynamic content cần available theo dạng thời gian thực

Cache Key

  • Các objects trong cache ở cloudfront được định danh bởi key
  • Thường sẽ bao gồm hostname + một phần của URL
  • Có thể dùng thêm các element khác làm key như là HTTP headers, cookies, query strings

Cache Policy

  • Dựa trên HTTP Headers, Cookies, Query Strings (có một số dạng như là None, Whilelist, Include All-Except, All)
  • TTL: từ 0 sec tới 1 năm
  • Tất cả các thông tin trong cache key sẽ được included trong origin requests

Origin Request Policy

  • Các value sẽ được gửi tới origin request mà KHÔNG nằm trong cache key
  • Cũng có thể bao gồm HTTP Headers, Cookies, Query Strings

Cache Invalidations

  • Dựa trên TTL
  • Có thể flush cache bằng tay trên console

Cache Behaviors

  • Điều hướng traffics tới các origin khác nhau dựa trên path URL
  • Behavior mặc định sẽ là /*

Geo Restriction

  • List ra các quốc gia được phép access tới cloudfront
  • Có AllowList và BlockList
  • Dùng cho một số app giới hạn về vùng truy cập do vấn đề bản quyền

Signed URL / Signed Cookies

  • Dùng để distribute content
  • Config được một số thông tin như là
    • URL expiration
    • IP ranges whitelist (dạng content đặc biệt chỉ available cho các users trả tiền chẳng hạn)
    • Trusted signers (các AWS account có thể tạo Signed URLs)
  • Signed URL dùng để access tới một file, Signed Cookies dùng để access tới nhiều files

So sánh CloudFront Signed URL với S3 Pre-Signed URL

CloudFront Signed URLS3 Pre-Signed URL
– Dùng để access tới data được cache trong các edge locations
– Filter được theo IP, path, expiration
– Lifetime rất dài
– Ẩn được origin
– Hỗ trợ access tới nhiều files
– Lifetime thường ngắn
– Chỉ có thể access tới 1 file
– Access tới data trực tiếp trong bucket nên luôn là lifetime (nhưng users sẽ biết là mình dùng S3 – có thể fail pentest)

Price Classes

  • All: available ở tất cả các regions
  • Class 200: loại trừ một số regions có giá cao
  • Class 100: các regions có giá rẻ nhất

Origin Groups

  • Một group sẽ bao gồm 1 primary origin và một secondary origin
  • Origin một mà fail thì sẽ dùng origin hai (cơ chế failover)

Field Level Encryption

  • Các thông tin nhạy cảm sẽ được encrypt ở các edge locations
  • Dùng mã hoá bất đối xứng (kiểu như RSA) – HTTPS

Realtime Logs

References

Extra reading

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc đặt tên (Naming)

Clean Code là việc viết mã nguồn rõ ràng, dễ hiểu, dễ bảo trì. Bài viết này sẽ giới thiệu nguyên tắc đầu tiên...
Avatar photo Dat Tran Thanh
4 min read

BigQuery vs Google Cloud SQL – P2

Ở bài viết trước tôi đã tổng quan về khái niệm, các tính năng chính và so sánh sự khác biệt chính của GCP...
Avatar photo Toai Nguyen Cong
11 min read

Leave a Reply

Your email address will not be published. Required fields are marked *