API Gateway

3 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

API Gateway

  • AWS Lambda + API Gateway: Không cần quản lý hạ tầng (serverless, auto-scale).
  • Hỗ trợ giao thức WebSocket: Cho các ứng dụng realtime như chat, game.
  • Quản lý version API: Hỗ trợ versioning như /v1, /v2 để tránh ảnh hưởng client khi update API.
  • Quản lý nhiều môi trường: Có thể tạo môi trường riêng biệt như dev, test, prod để tách biệt việc triển khai.
  • Xử lý bảo mật:
    • Authentication (xác thực): Ai đang gọi API?
    • Authorization (ủy quyền): Có quyền gọi API này không?
  • Tạo API key, kiểm soát tần suất gọi (throttling): Giới hạn số request từ một client nhất định.
  • Import từ Swagger / OpenAPI: Tự động tạo cấu trúc API từ file mô tả chuẩn → nhanh, dễ bảo trì.
  • Transform & kiểm tra request/response: Có thể validate schema, chuyển đổi format payload trong request/response.
  • Xuất SDK & tài liệu API tự động: Tạo code SDK cho các platform (iOS, Android, JS...) + tài liệu chuẩn OpenAPI.
  • Cache API Response: Lưu response để giảm truy cập backend, tăng tốc độ.

Tổng quan các cách tích hợp với API Gateway

  • Lambda Function
    • Invoke Lambda function
    • Cách đơn giản để expose REST API được hỗ trợ bởi AWS Lambda.
      → Tức là mỗi request đến API Gateway có thể được trigger Lambda function để xử lý logic phía sau.
  • HTTP
    • Expose các endpoint HTTP ở phía backend.
      → API Gateway có thể làm proxy chuyển tiếp request đến bất kỳ HTTP endpoint nào.
    • Ví dụ: gọi API nội bộ (on-premise), hoặc sau ALB (Application Load Balancer).
    • Lý do dùng:
      • Thêm rate limiting (giới hạn tần suất gọi),
      • Caching (lưu cache),
      • Xác thực người dùng (user authentication),
      • Kiểm soát bằng API key, v.v.
  • AWS Service
    • Dùng API Gateway để gọi trực tiếp các dịch vụ AWS.
    • Ví dụ:
      • Khởi động một workflow AWS Step Function,
      • Gửi message vào SQS queue.
      • Lý do dùng:
        • Thêm lớp xác thực,
        • Cho phép deploy API công khai,
        • Thêm các cơ chế kiểm soát như rate control.

Endpoint types

Endpoint type trong API Gateway chỉ cách mà API của bạn được expose và client có thể truy cập từ đâu, bằng cách nào. 

Edge-Optimized (mặc định)

  • Dành cho global clients
  • Request được định tuyến qua các CloudFront Edge Location (các điểm biên CDN của AWS).
    👉 Giúp giảm độ trễ (latency) do client gọi tới location gần nhất.
  • Nhưng API Gateway chỉ tồn tại ở 1 region (ví dụ: us-east-1), còn CloudFront làm nhiệm vụ phân phối.
  • Dùng khi API được gọi từ khắp nơi trên thế giới.

Regional

  • Dành cho client ở cùng region (ví dụ server trong cùng region gọi API).
  • Không đi qua CloudFront, nên phù hợp với hệ thống nội bộ vùng (intra-region).
  • Có thể tự tích hợp CloudFront nếu cần để có nhiều tùy biến hơn (về cache, TTL, v.v.)
  • Dùng khi latency mạng không quá quan trọng hoặc chỉ phục vụ users/app trong cùng region.

Private

  • Dành cho mạng nội bộ AWS (trong VPC)
  • Chỉ truy cập được từ trong VPC của bạn thông qua interface VPC endpoint (ENI).
  • Bạn phải cấu hình resource policy để kiểm soát truy cập.
  • Dùng cho hệ thống backend nội bộ không public ra Internet.

Bảo mật trong API Gateway

  • User Authentication thông qua:
    • IAM Roles
      👉 Phù hợp với ứng dụng nội bộ (internal apps)
      → Dựa vào quyền (policy) gán cho IAM để quyết định truy cập.
    • Amazon Cognito
      👉 Phù hợp với user bên ngoài (external users), ví dụ: người dùng app mobile.
      → Quản lý danh tính (identity), đăng ký/đăng nhập, token-based auth.
    • Custom Authorizer
      👉 Bạn có thể định nghĩa logic xác thực riêng, thường là Lambda Authorizer.
      → Kiểm tra JWT token, API key, headers,... tùy logic của bạn.
  • Custom Domain Name & HTTPS
    • Thông qua tích hợp với AWS Certificate Manager (ACM) để cấp và quản lý chứng chỉ SSL.
    • Nếu dùng Edge-Optimized endpoint:
      → Chứng chỉ bắt buộc phải ở region us-east-1
      (do CloudFront toàn cầu chỉ dùng được cert ở đó)
    • Nếu dùng Regional endpoint:
      → Chứng chỉ phải được cấp ở cùng region với API Gateway
    • Cần cấu hình DNS:
      → CNAME hoặc A-alias trong Route 53 để trỏ domain tùy chỉnh đến API Gateway.
Bạn thấy bài này thế nào?