Wednesday, June 26, 2024

[AWS] Lambda@Edge

-

Lambda@Edge.

Lambda@Edge là một dịch vụ của AWS cho phép người dùng triển khai các hàm Lambda trên toàn cầu với Amazon CloudFront CDN (Content Delivery Network). Nó cho phép người dùng triển khai mã lambda tùy chỉnh của mình trên các máy chủ edge trên toàn cầu của Amazon CloudFront, giúp tăng tốc độ phản hồi và tối ưu hóa các yêu cầu khách hàng.

Khi một yêu cầu được gửi đến CloudFront, Lambda@Edge cho phép người dùng thực thi các hàm Lambda của mình trên máy chủ edge gần nhất với khách hàng, giúp giảm thiểu độ trễ và tăng tốc độ phản hồi. Điều này cho phép người dùng thực hiện xử lý dữ liệu hoặc kiểm soát truy cập đến các tài nguyên của mình trước khi đến ứng dụng của họ.

Việc triển khai hàm Lambda tại máy chủ edge của CloudFront cũng giúp giảm tải cho ứng dụng chính và giảm chi phí vận hành của người dùng. Do đó, Lambda@Edge là một giải pháp tốt để triển khai các hàm Lambda toàn cầu trên CloudFront CDN của AWS.

Lambda@Edge cho phép sử dụng Lambda để thay đổi các yêu cầu và phản hồi của CloudFront. Bằng cách sử dụng Lambda@Edge, bạn có thể triển khai các hàm Lambda trên toàn thế giới và xử lý các yêu cầu CloudFront tại các điểm gần người dùng để cải thiện thời gian đáp ứng và trải nghiệm người dùng.

Bạn có thể sử dụng Lambda@Edge để thay đổi các yêu cầu và phản hồi của CloudFront theo các cách sau:

  • Viewer request: Lambda được thực thi ngay khi CloudFront nhận được yêu cầu từ phía người dùng, trước khi chuyển tiếp yêu cầu đến nguồn.
  • Origin request: Lambda được thực thi trước khi CloudFront chuyển tiếp yêu cầu đến nguồn.
  • Origin response: Lambda được thực thi khi CloudFront nhận được phản hồi từ nguồn, trước khi chuyển tiếp phản hồi đến người dùng.
  • Viewer response: Lambda được thực thi trước khi CloudFront chuyển tiếp phản hồi đến phía người dùng.

Ngoài ra, bạn có thể tạo phản hồi cho người dùng mà không cần gửi yêu cầu đến nguồn. Với Lambda@Edge, bạn có thể tùy chỉnh và xử lý các yêu cầu và phản hồi của CloudFront một cách linh hoạt để đáp ứng nhu cầu của ứng dụng của bạn.

Lambda@Edge: Global application.

Dưới đây là giải thích chi tiết về các bước của kiến trúc này:

  • Amazon S3 bucket (HTML Website): Website của bạn được lưu trữ trong một Amazon S3 bucket. Nó có thể là một trang web tĩnh (chỉ sử dụng HTML, CSS và JavaScript) hoặc một trang web động (sử dụng các ngôn ngữ lập trình phía máy chủ như PHP hoặc Node.js).
  • User visits website: Khách hàng truy cập trang web của bạn thông qua URL của nó.
  • Dynamic API requests: Trang web của bạn có thể gọi các API để tạo ra dữ liệu động. Điều này có thể bao gồm yêu cầu để lấy dữ liệu từ một cơ sở dữ liệu hoặc một API của bên thứ ba.
  • CloudFront (Cached Responses): CloudFront là dịch vụ CDN của AWS và nó có thể được cấu hình để lưu trữ bản sao cache của các trang web của bạn ở các điểm phân phối trên toàn cầu. Khi khách hàng yêu cầu trang web của bạn, nó có thể được trả về từ một trong những điểm phân phối này.
  • Lambda@Edge function (Runs code in each CloudFront Edge, globally): Lambda@Edge là một dịch vụ Lambda của AWS, cho phép bạn chạy mã JavaScript hoặc Node.js trực tiếp trên các Edge của CloudFront trên toàn cầu. Điều này cho phép bạn thực hiện các chức năng tùy chỉnh cho các truy vấn và phản hồi CloudFront mà không cần chuyển chúng đến máy chủ của bạn.
  • Query data: Lambda@Edge có thể được sử dụng để truy vấn dữ liệu từ các nguồn khác nhau như DynamoDB, Redis, hay các API khác của bên thứ ba để tạo ra các phản hồi tùy chỉnh cho CloudFront.
  • Amazon DynamoDB: DynamoDB là một cơ sở dữ liệu NoSQL dựa trên các tài liệu của AWS. Nó có thể được sử dụng để lưu trữ dữ liệu cho trang web của bạn và truy vấn bởi Lambda@Edge để tạo ra các phản hồi tùy chỉnh.

Lambda@Edge: Use Cases.

Dưới đây là giải thích chi tiết các chức năng của Lambda@Edge:

  • Website Security and Privacy: Lambda@Edge cho phép bạn xử lý các yêu cầu của người dùng và phản hồi từ các khu vực Edge của CloudFront, giúp tăng cường bảo mật và đảm bảo quyền riêng tư cho website của bạn.
  • Dynamic Web Application at the Edge: Lambda@Edge cho phép bạn thực thi mã JavaScript và các công nghệ khác để tạo ra các ứng dụng web động trên các khu vực Edge, giúp cải thiện tốc độ phản hồi và độ ổn định.
  • Search Engine Optimization (SEO): Lambda@Edge cho phép bạn tạo các phiên bản của trang web dựa trên ngôn ngữ và vị trí của người dùng, giúp tăng khả năng tìm kiếm của trang web và cải thiện trải nghiệm người dùng.
  • Intelligently Route Across Origins and Data Centers: Lambda@Edge cho phép bạn định tuyến yêu cầu của người dùng đến nhiều nguồn dữ liệu và trung tâm dữ liệu khác nhau, giúp tối ưu hóa tốc độ phản hồi.
  • Bot Mitigation at the Edge: Lambda@Edge cho phép bạn chặn các yêu cầu không hợp lệ từ các bot và người dùng độc hại, giúp bảo vệ website của bạn khỏi các cuộc tấn công mạng.
  • Real-time Image Transformation: Lambda@Edge cho phép bạn thực hiện các chức năng biến đổi hình ảnh, giúp cải thiện tốc độ tải trang và trải nghiệm người dùng.
  • A/B Testing: Lambda@Edge cho phép bạn tạo các phiên bản khác nhau của trang web và đo lường hiệu quả của chúng trên các khu vực Edge khác nhau, giúp cải thiện tối ưu hóa và tối đa hóa tỷ lệ chuyển đổi.
  • User Authentication and Authorization: Lambda@Edge cho phép bạn xác thực người dùng và đảm bảo quyền truy cập đúng đối với các tài nguyên của trang web.
  • User Prioritization: Lambda@Edge cho phép bạn ưu tiên các yêu cầu từ các người dùng quan trọng hơn, giúp cải thiện trải nghiệm người dùng.
  • User Tracking and Analytics: Lambda@Edge cho phép bạn thu thập và phân tích các dữ liệu liên quan đến người dùng và hoạt động của họ, giúp cải thiện tối ưu hóa và tối đa hóa tỷ lệ chuyển đổi.
Previous article
Next article

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories