Hướng Dẫn Thực Hành: Thiết Lập API Gateway Chuyên mục Devops 2025-08-18 2 Lượt xem 2 Lượt thích 0 Bình luận
Trong bài viết này, chúng ta sẽ thực hành tạo một API đơn giản trên API Gateway với đầy đủ các thành phần cốt lõi và cách kiểm tra chúng. Giả sử chúng ta có một API endpoint để xác thực email, có dạng /api/v1/authen/email-authen
.
Bước 1: Thiết Lập Method Request
Method Request là nơi bạn định nghĩa các yêu cầu mà client có thể gửi tới API của bạn. Nó giống như một "bộ lọc" ban đầu để xác định cấu trúc của request.
Cấu hình chính:
-
Authorization:
NONE
-
API Key Required:
False
-
Request Validator:
None
Các tham số yêu cầu (Request Parameters):
-
URL Query String Parameters:
-
app_type
: Dùng để xác định loại ứng dụng (ví dụ:iOS
,Android
). -
platform
: Dùng để xác định nền tảng.
-
-
HTTP Request Headers:
-
Authorization
: Header này sẽ được dùng để chứa token xác thực (ví dụ:Bearer Token
).
-
Tác dụng của các tham số:
-
app_type
vàplatform
: Giúp bạn phân biệt và xử lý logic backend tùy thuộc vào nguồn gốc của yêu cầu. -
Authorization
: Cho phép bạn nhận token từ client để thực hiện xác thực hoặc phân quyền ở các tầng sau.
Bước 2: Cấu Hình Integration Request
Integration Request là nơi bạn kết nối API Gateway với backend của mình. Đây là bước mà API Gateway thực sự gửi yêu cầu đến backend service.
Cấu hình chính:
-
Integration Type: Bạn có thể chọn giữa
HTTP
,AWS_PROXY
(cho Lambda), hoặcMOCK
. Trong ví dụ này, chúng ta sẽ dùngHTTP
để kết nối đến một ALB. -
Integration HTTP Method: Phải khớp với phương thức của Method Request (ví dụ:
POST
). -
Endpoint URL: URL của backend service, ví dụ:
https://<ALB_DNS>/api/v1/authen/email-authen
.
Ánh xạ tham số (Parameter Mapping):
-
Mapping URL Query String Parameters: Bạn cần ánh xạ các tham số từ Method Request sang Integration Request để backend nhận được.
-
integration.request.querystring.app_type
->method.request.querystring.app_type
-
integration.request.querystring.platform
->method.request.querystring.platform
-
-
Mapping HTTP Headers:
-
integration.request.header.Authorization
->method.request.header.Authorization
-
Tác dụng của Parameter Mapping:
Mapping giúp API Gateway "dịch" các tham số từ client sang định dạng mà backend yêu cầu. Ví dụ, nó đảm bảo rằng giá trị của header Authorization
trong request của client được chuyển đúng vào header Authorization
của request gửi đến ALB.
Bước 3: Thiết Lập Integration Response
Integration Response xử lý phản hồi từ backend trước khi trả về client. Đây là nơi bạn cấu hình để xử lý các mã trạng thái (status code
) và thêm các header cần thiết (đặc biệt là cho CORS).
Cấu hình chính:
-
HTTP status regex: Sử dụng biểu thức chính quy để khớp với các mã trạng thái từ backend.
-
2\d{2}
: Khớp với tất cả các mã trạng thái thành công (200-299). -
4\d{2}
: Khớp với lỗi phía client (400-499). -
5\d{2}
: Khớp với lỗi phía server (500-599).
-
-
Method Response Status Code: Mã trạng thái mà API Gateway sẽ trả về cho client. Ví dụ, nếu backend trả về
201
, bạn có thể ánh xạ nó về200
cho client. -
Header Mappings: Ánh xạ các header từ backend sang response của client.
-
method.response.header.Access-Control-Allow-Origin
:'*'
-
method.response.header.Access-Control-Allow-Headers
:'Content-Type,Authorization,X-Api-Key'
-
method.response.header.Access-Control-Allow-Methods
:'GET,POST,PUT,DELETE,OPTIONS'
-
Tác dụng của Header Mapping:
Các header Access-Control-*
là cốt lõi để giải quyết lỗi CORS. Khi bạn thiết lập chúng ở đây, API Gateway sẽ tự động thêm các header này vào mọi phản hồi, cho phép trình duyệt của client nhận ra rằng API của bạn cho phép các yêu cầu từ các domain khác.
Bước 4: Cấu Hình Method Response
Method Response định nghĩa cấu trúc cuối cùng của phản hồi trả về client. Nó xác định các header và cấu trúc dữ liệu mà client nên mong đợi.
Cấu hình chính:
-
Response Status Code: Định nghĩa các mã trạng thái phản hồi (ví dụ:
200
,400
,500
). -
Response Headers: Liệt kê các header mà bạn đã ánh xạ trong Integration Response.
-
Access-Control-Allow-Origin
-
-
Response Body: Định nghĩa kiểu nội dung (content type) và mô hình dữ liệu (
model
) cho phản hồi, ví dụ:application/json
vớiEmpty
model.
Tác dụng của Method Response:
Nó giúp "hợp thức hóa" phản hồi. Mặc dù các giá trị thực tế của header được đặt ở Integration Response, việc khai báo chúng ở đây là cần thiết để API Gateway biết phải chuẩn bị những gì.
Bước 5: Kiểm Thử và CLI
Đây là bước quan trọng để xác minh rằng API của bạn đã được cấu hình đúng. Bạn có thể sử dụng công cụ Test tích hợp trong console của API Gateway hoặc sử dụng các lệnh curl
và aws apigateway
để kiểm tra.
Kiểm tra CORS Preflight (OPTIONS
):
Lệnh này mô phỏng một yêu cầu preflight từ trình duyệt. Nó kiểm tra xem API của bạn có trả về các tiêu đề CORS cần thiết hay không.
curl -X OPTIONS -H "Origin: https://sample.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: Content-Type" -v "https://dev-api/api/v1/authen/email-authen"
-
-X OPTIONS
: Chỉ định phương thức HTTP. -
-H "Origin: ..."
: Bắt chước headerOrigin
của trình duyệt. -
-v
: Hiển thị chi tiết (verbose) của request và response, bao gồm các header.
Kết quả mong đợi: Bạn sẽ thấy các header Access-Control-*
trong phần response, xác nhận rằng CORS đã được cấu hình thành công.
Sử dụng AWS CLI để kiểm tra cấu hình:
Bạn có thể dùng AWS CLI để xem chi tiết cấu hình của một phương thức cụ thể.
aws apigateway get-method --rest-api-id ynqv1k3cpe --resource-id x30u9h --http-method GET
-
--rest-api-id
: ID của API Gateway của bạn. -
--resource-id
: ID của tài nguyên API (ví dụ:/api/v1/authen/email-authen
). -
--http-method
: Phương thức cần xem (ví dụ:GET
).
Tác dụng của CLI: Lệnh này giúp bạn xác nhận rằng các thiết lập về Method Request, Integration Request và Response đã được lưu trữ chính xác. Đây là công cụ không thể thiếu khi bạn cần tự động hóa hoặc gỡ lỗi.
Hãy bắt đầu thực hành và bạn sẽ thấy API Gateway không hề phức tạp như bạn nghĩ. Chúc bạn thành công! 🚀
Bình luận (0)