Chuẩn bị source code

Chuẩn bị Source Code

  1. Source Code.
  • Để có thể thực hành trong bài Lab này thì mình đã chuẩn bị sẵn một source code được viết bằng Django - Python. Các bạn có thể clone về để thử nghiệp serverles-django-demo.
  1. Giải thích về thư viện Mangum.
  • Mangum là một thư viện Python được thiết kế để hỗ trợ triển khai các ứng dụng ASGI (Asynchronous Server Gateway Interface) trên AWS Lambda. Thư viện này hoạt động như một bộ chuyển đổi, cho phép các ứng dụng ASGI xử lý các sự kiện từ nhiều dịch vụ AWS khác nhau, bao gồm API Gateway, Application Load Balancer (ALB) và Lambda@Edge. Điều này rất hữu ích cho các nhà phát triển muốn tận dụng kiến trúc serverless trong khi sử dụng các framework Python hiện đại như FastAPI, Starlette và Django. Quy trình xử lý sẽ được xử lý:
  • Nhận Sự Kiện từ API Gateway: Khi một yêu cầu HTTP được gửi tới API Gateway, nó sẽ tạo ra một sự kiện (event) chứa thông tin về yêu cầu đó, bao gồm phương thức HTTP, đường dẫn, headers, body, v.v. Sự kiện này sau đó được gửi tới Lambda function.
  • Chuyển Đổi Sự Kiện sang ASGI: Mangum nhận sự kiện này và chuyển đổi nó thành một yêu cầu theo chuẩn ASGI. Bao gồm Headers, Body, Path, Method.
  • Chuyển Đổi Phản Hồi (Response): Sau khi Django xử lý xong, một phản hồi (response) sẽ được tạo ra theo định dạng ASGI. Mangum sẽ nhận phản hồi này và chuyển đổi nó lại thành định dạng mà API Gateway yêu cầu, bao gồm
  • Gửi Phản Hồi về API Gateway: Cuối cùng, phản hồi đã được chuyển đổi này sẽ được gửi lại cho API Gateway, và từ đó, API Gateway sẽ trả phản hồi này về cho client (người dùng hoặc hệ thống đã gửi yêu cầu ban đầu).
  1. Chuẩn bị Dockerfile
FROM public.ecr.aws/lambda/python:3.9
ADD . "${LAMBDA_TASK_ROOT}"
RUN  pip3 install -r "${LAMBDA_TASK_ROOT}"/req.txt --target "${LAMBDA_TASK_ROOT}"
# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD ["lambda_handler._handler"]
  • public.ecr.aws/lambda/python:3.9: Đây là base image được cung cấp bởi AWS, chứa môi trường runtime Python 3.9 và các công cụ cần thiết để chạy hàm Lambda trên nền tảng AWS Lambda.
  • Trong ngữ cảnh AWS Lambda và API Gateway, handler là điểm bắt đầu cho tất cả các sự kiện được gửi đến hàm Lambda. Khi một sự kiện (chẳng hạn yêu cầu HTTP từ API Gateway) xảy ra, AWS Lambda sẽ gọi đến handler được chỉ định. Vậy nên mình sẽ chỉ định đúng handler trong Docker Image này.