Quay lại

Cách Sử Dụng AWS API Gateway Để Kết Nối Với API Trên EC2 Chuyên mục Devops    2024-10-10    3 Lượt xem    3 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Nếu bạn đang xây dựng hoặc quản lý API trên một máy chủ EC2 và muốn tăng cường bảo mật, quản lý hiệu suất, cũng như dễ dàng giám sát hệ thống, AWS API Gateway là giải pháp tuyệt vời cho bạn. Trong bài viết này, tôi sẽ hướng dẫn chi tiết cách sử dụng AWS API Gateway để kết nối với API trên EC2, cũng như giải thích cơ chế hoạt động của nó.


1. Giới thiệu về AWS API Gateway

AWS API Gateway là một dịch vụ hoàn chỉnh giúp bạn tạo, bảo mật, và quản lý các API một cách dễ dàng. Nó cho phép bạn:

  • Công bố API mà không cần phải thay đổi cấu trúc của backend (máy chủ EC2, Lambda, RDS, hoặc các dịch vụ khác).
  • Bảo mật API bằng cách tích hợp với các dịch vụ bảo mật của AWS như IAM, Cognito, hoặc API Key.
  • Quản lý lưu lượng truy cập, theo dõi lỗi, và giới hạn tần suất để đảm bảo hiệu suất hệ thống ổn định.

Tóm lại, thay vì cho phép các client kết nối trực tiếp đến API của máy chủ EC2, bạn có thể sử dụng API Gateway như một lớp trung gian để kiểm soát tốt hơn.


2. Cách sử dụng AWS API Gateway để kết nối với API trên EC2

a. Bước 1: Tạo API trên API Gateway

  • Đầu tiên, truy cập AWS Console > API Gateway > Create API.
  • Chọn loại API phù hợp: HTTP API hoặc REST API (ở đây tôi sẽ chọn REST API để dễ quản lý các phương thức HTTP).
  • Đặt tên cho API của bạn, ví dụ: AccountAPI, để phục vụ các chức năng của hệ thống tài khoản.

b. Bước 2: Định nghĩa các routes (endpoint)

Tiếp theo, định nghĩa các đường dẫn API của bạn. Ví dụ, bạn có API /v0/account/auth để xác thực tài khoản và /v0/account/mail để lấy thông tin email.

  • Đối với mỗi route, chỉ định phương thức HTTP (ví dụ: POST cho /v0/account/auth và GET cho /v0/account/mail).
  • Điều này sẽ giúp phân loại các request đến backend dựa trên mục đích sử dụng.

c. Bước 3: Kết nối đến backend (EC2 instance)

API Gateway không chỉ tạo các routes cho bạn mà còn kết nối đến backend thực sự của API, ở đây là EC2.

  • Trong phần Integration Type, chọn HTTP để kết nối API Gateway đến URL của EC2.
  • Nhập URL đầy đủ của API trên EC2. Ví dụ, URL của bạn có thể là http://<ec2-public-ip>/v0/account/auth.
  • API Gateway sẽ hoạt động như một proxy, chuyển tiếp mọi request từ client đến backend của bạn.

d. Bước 4: Thiết lập bảo mật

Một trong những điểm mạnh của API Gateway là khả năng quản lý truy cập:

  • Bạn có thể cấu hình API Keys, IAM Roles, hoặc tích hợp với Cognito để kiểm soát ai được phép sử dụng API.
  • Hơn nữa, bạn có thể cài đặt rate limiting để giới hạn số lượng request từ một client trong một khoảng thời gian nhất định, tránh các cuộc tấn công DDoS.

e. Bước 5: Deploy API

Khi đã hoàn tất cấu hình, bạn cần deploy API để nó có thể được sử dụng công khai:

  • Tạo một "Stage" cho API, chẳng hạn như prod (sản xuất) hoặc dev (phát triển).
  • Mỗi stage sẽ có một URL công khai cho API của bạn. Ví dụ, URL có thể là https://<api-gateway-id>.execute-api.<region>.amazonaws.com/prod/v0/account/auth.

f. Bước 6: Client gửi request đến API Gateway

Sau khi deploy API, client có thể truy cập API thông qua URL do API Gateway cung cấp. Ví dụ:

curl -X POST https://<api-gateway-id>.execute-api.<region>.amazonaws.com/prod/v0/account/auth \
-H "Content-Type: application/json" \
-d '{"username": "user123", "password": "securepassword"}'​

API Gateway sẽ nhận request này và chuyển tiếp nó đến server EC2 để xử lý.


3. Cơ chế hoạt động của AWS API Gateway

Để hiểu rõ hơn, chúng ta sẽ xem xét từng bước hoạt động của API Gateway khi có một request được gửi đến.

a. Client gửi request đến API Gateway

Người dùng hoặc ứng dụng (client) gửi một request đến API Gateway thay vì gửi trực tiếp đến EC2. Ví dụ:

POST https://<api-gateway-id>.execute-api.<region>.amazonaws.com/prod/v0/account/auth​

b. API Gateway xử lý request

  • API Gateway sẽ thực hiện các bước như kiểm tra xác thực (authentication), kiểm tra quyền (authorization), và áp dụng các chính sách bảo mật trước khi gửi request đến backend.
  • Nếu không có vấn đề gì về bảo mật, API Gateway sẽ tiếp tục.

c. Chuyển tiếp request đến backend (EC2 instance)

  • API Gateway sẽ chuyển tiếp request đến EC2 của bạn theo URL mà bạn đã cấu hình. Ví dụ: http://<ec2-public-ip>/v0/account/auth.
  • Server EC2 xử lý request theo logic ứng dụng và trả về kết quả.

d. API Gateway trả về response cho client

  • API Gateway nhận phản hồi từ backend và chuyển lại cho client. Từ góc nhìn của client, API Gateway chính là nơi xử lý mọi yêu cầu.

4. Ưu điểm của việc sử dụng AWS API Gateway với EC2

  1. Bảo mật tốt hơn: Với API Gateway, bạn có thể tích hợp các giải pháp bảo mật mạnh mẽ như IAM, Cognito, và WAF. Điều này giúp giảm nguy cơ bị tấn công.
  2. Dễ dàng quản lý và giám sát: AWS cung cấp tích hợp với CloudWatch, giúp bạn theo dõi lưu lượng truy cập, lỗi, và hiệu suất của API.
  3. Tăng cường hiệu suất: Nhờ tính năng rate limiting, bạn có thể ngăn chặn các request quá tải đến backend, bảo vệ server khỏi việc bị quá tải bởi số lượng request lớn.

5. Ví dụ thực tế: Cách hoạt động của API Gateway

Giả sử bạn có một API /v0/account/auth trên EC2, và bạn muốn sử dụng API Gateway để bảo mật và quản lý API này.

  1. Client gửi request:
curl -X POST https://<api-gateway-id>.execute-api.<region>.amazonaws.com/prod/v0/account/auth \
-H "Content-Type: application/json" \
-d '{"username": "user123", "password": "securepassword"}'​
  1. API Gateway xử lý request: Kiểm tra xác thực, giới hạn tần suất, sau đó chuyển tiếp request đến EC2.

  2. EC2 xử lý request: Kiểm tra thông tin người dùng và trả về token xác thực.

  3. API Gateway trả về phản hồi:

{
  "status": "success",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}​

Kết luận

Việc sử dụng AWS API Gateway để kết nối với API trên EC2 giúp bạn quản lý tốt hơn, bảo mật hiệu quả hơn, và tối ưu hóa hiệu suất API của mình. Với các bước cụ thể và cơ chế hoạt động rõ ràng, API Gateway không chỉ giúp bạn xây dựng API mạnh mẽ mà còn đảm bảo sự linh hoạt và bảo mật cần thiết cho các hệ thống hiện đại.

Nếu bạn đang quản lý API trên EC2, hãy cân nhắc tích hợp API Gateway để trải nghiệm những lợi ích mà nó mang lại!

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday